mirror of
https://github.com/OpenBankProject/API-Manager.git
synced 2026-02-06 13:06:45 +00:00
Get bank function calling
This commit is contained in:
commit
ba8228df5b
5
apimanager/accounts/apps.py
Normal file
5
apimanager/accounts/apps.py
Normal file
@ -0,0 +1,5 @@
|
||||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class AccountsConfig(AppConfig):
|
||||
name = 'accounts'
|
||||
172
apimanager/accounts/forms.py
Normal file
172
apimanager/accounts/forms.py
Normal file
@ -0,0 +1,172 @@
|
||||
"""
|
||||
Forms of Accounts app
|
||||
"""
|
||||
|
||||
from django import forms
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
import random
|
||||
|
||||
|
||||
class CreateAccountForm(forms.Form):
|
||||
|
||||
account_id = forms.CharField(
|
||||
label=_('Account Id'),
|
||||
widget=forms.TextInput(
|
||||
attrs={
|
||||
'placeholder': 'account-id-{}'.format(random.randint(1,1000)),
|
||||
'class': 'form-control',
|
||||
}
|
||||
),
|
||||
initial='account-id-{}'.format(random.randint(1,1000)),
|
||||
)
|
||||
|
||||
user_id = forms.CharField(
|
||||
label=_('User Id'),
|
||||
widget=forms.TextInput(
|
||||
attrs={
|
||||
'class': 'form-control',
|
||||
}
|
||||
),
|
||||
required=True
|
||||
)
|
||||
bank_id = forms.ChoiceField(
|
||||
label=_('Bank Id'),
|
||||
widget=forms.Select(
|
||||
attrs={
|
||||
'class': 'form-control',
|
||||
}
|
||||
),
|
||||
choices=[],
|
||||
)
|
||||
|
||||
label = forms.CharField(
|
||||
label=_('Label'),
|
||||
widget=forms.TextInput(
|
||||
attrs={
|
||||
'placeholder': _('Select the label'),
|
||||
'class': 'form-control',
|
||||
}
|
||||
),
|
||||
required=False
|
||||
)
|
||||
|
||||
product_code = forms.CharField(
|
||||
label=_('Write Product Code'),
|
||||
widget=forms.TextInput(
|
||||
attrs={
|
||||
'placeholder': "1234BW",
|
||||
'class': 'form-control',
|
||||
}
|
||||
),
|
||||
required=False
|
||||
)
|
||||
|
||||
balance_currency = forms.CharField(
|
||||
label=_('Currency'),
|
||||
widget=forms.TextInput(
|
||||
attrs={
|
||||
'placeholder': "EUR",
|
||||
'class': 'form-control',
|
||||
}
|
||||
),
|
||||
required=True,
|
||||
)
|
||||
|
||||
balance_amount = forms.FloatField(
|
||||
label=_('Amount'),
|
||||
widget=forms.TextInput(
|
||||
attrs={
|
||||
'placeholder': "0",
|
||||
'class': 'form-control',
|
||||
}
|
||||
),
|
||||
required=False,
|
||||
)
|
||||
|
||||
branch_id = forms.CharField(
|
||||
label=_('Branch Id'),
|
||||
widget=forms.TextInput(
|
||||
attrs={
|
||||
'placeholder': 'DERBY6',
|
||||
'class': 'form-control',
|
||||
}
|
||||
),
|
||||
required=False,
|
||||
)
|
||||
|
||||
account_routings_scheme = forms.CharField(
|
||||
label=_('Account Number'),
|
||||
widget=forms.TextInput(
|
||||
attrs={
|
||||
'placeholder': 'Account Number',
|
||||
'class': 'form-control',
|
||||
}
|
||||
),
|
||||
required=False,
|
||||
)
|
||||
|
||||
account_routings_address = forms.CharField(
|
||||
label=_('Address'),
|
||||
widget=forms.TextInput(
|
||||
attrs={
|
||||
'placeholder': 'Address',
|
||||
'class': 'form-control',
|
||||
}
|
||||
),
|
||||
required=False,
|
||||
)
|
||||
account_attributes_product_code = forms.CharField(
|
||||
label=_('Account Attribute Product Code'),
|
||||
widget=forms.TextInput(
|
||||
attrs={
|
||||
'placeholder': '1234BW',
|
||||
'class': 'form-control',
|
||||
}
|
||||
),
|
||||
required=False,
|
||||
)
|
||||
account_attributes_id = forms.CharField(
|
||||
label=_('Account Attribute Id'),
|
||||
widget=forms.TextInput(
|
||||
attrs={
|
||||
'placeholder': '613c83ea-80f9-4560-8404-b9cd4ec42a7f',
|
||||
'class': 'form-control',
|
||||
}
|
||||
),
|
||||
required=False,
|
||||
)
|
||||
account_attributes_name = forms.CharField(
|
||||
label=_('Account Attribute Name'),
|
||||
widget=forms.TextInput(
|
||||
attrs={
|
||||
'placeholder': 'OVERDRAFT_START_DATE',
|
||||
'class': 'form-control',
|
||||
}
|
||||
),
|
||||
required=False,
|
||||
)
|
||||
account_attributes_value = forms.CharField(
|
||||
label=_('Thursday'),
|
||||
widget=forms.TextInput(
|
||||
attrs={
|
||||
'placeholder': '2012-04-23',
|
||||
'class': 'form-control',
|
||||
}
|
||||
),
|
||||
required=False,
|
||||
)
|
||||
account_attributes_instance_code = forms.CharField(
|
||||
label=_('Account Attribute Instance Code'),
|
||||
widget=forms.TextInput(
|
||||
attrs={
|
||||
'placeholder': 'LKJL98769F',
|
||||
'class': 'form-control',
|
||||
}
|
||||
),
|
||||
required=False,
|
||||
)
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
kwargs.setdefault('label_suffix', '')
|
||||
super(CreateAccountForm, self).__init__(*args, **kwargs)
|
||||
18
apimanager/accounts/static/accounts/css/accounts.css
Normal file
18
apimanager/accounts/static/accounts/css/accounts.css
Normal file
@ -0,0 +1,18 @@
|
||||
#accounts div {
|
||||
margin: 5px 0;
|
||||
}
|
||||
|
||||
/* The actual popup (appears on top) */
|
||||
.popuptext {
|
||||
width: 250px;
|
||||
background-color: #555;
|
||||
color: #fff;
|
||||
text-align: left;
|
||||
border-radius: 6px;
|
||||
padding: 8px 0;
|
||||
z-index: 1;
|
||||
/*bottom: 125%;*/
|
||||
top:100%;
|
||||
left: 50%;
|
||||
margin-left: -80px;
|
||||
}
|
||||
0
apimanager/accounts/static/accounts/js/accounts.js
Normal file
0
apimanager/accounts/static/accounts/js/accounts.js
Normal file
166
apimanager/accounts/templates/accounts/index.html
Normal file
166
apimanager/accounts/templates/accounts/index.html
Normal file
@ -0,0 +1,166 @@
|
||||
{% extends 'base.html' %} {% load static %} {% load i18n %} {% block page_title %}{{ block.super }} / Account{% endblock page_title %} {% block content %}
|
||||
<div id="accounts">
|
||||
<h1>{% trans "Account Create" %}</h1>
|
||||
|
||||
<form method="post">
|
||||
{% csrf_token %} {% if form.non_field_errors %}
|
||||
<div class="alert alert-danger">{{ form.non_field_errors }}</div>
|
||||
{% endif %}
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-sm-4">
|
||||
{% if form.account_id.errors %}
|
||||
<div class="alert alert-danger">{{ form.account_id.errors }}</div>
|
||||
{% endif %}
|
||||
<div class="form-group">
|
||||
{{ form.account_id.label_tag }} {{ form.account_id }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-4">
|
||||
{% if form.user_id.errors %}
|
||||
<div class="alert alert-danger">{{ form.user_id.errors }}</div>
|
||||
{% endif %}
|
||||
<div class="form-group">
|
||||
{{ form.user_id.label_tag }} {{ form.user_id }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-4">
|
||||
{% if form.label.errors %}
|
||||
<div class="alert alert-danger">{{ form.label.errors }}</div>
|
||||
{% endif %}
|
||||
<div class="form-group">
|
||||
{{ form.label.label_tag }} {{ form.label }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-sm-4">
|
||||
{% if form.product_code.errors %}
|
||||
<div class="alert alert-danger">
|
||||
{{ form.product_code.errors }}
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="form-group">
|
||||
{{ form.product_code.label_tag }} {{ form.product_code }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-4">
|
||||
{% if form.balance_currency.errors %}
|
||||
<div class="alert alert-danger">
|
||||
{{ form.balance_currency.errors }}
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="form-group">
|
||||
{{ form.balance_currency.label_tag }} {{ form.balance_currency }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-4">
|
||||
{% if form.balance_amount.errors %}
|
||||
<div class="alert alert-danger">
|
||||
{{ form.balance_amount.errors }}
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="form-group">
|
||||
{{ form.balance_amount.label_tag }} {{ form.balance_amount }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-sm-4">
|
||||
{% if form.branch_id.errors %}
|
||||
<div class="alert alert-danger">{{ form.branch_id.errors }}</div>
|
||||
{% endif %}
|
||||
<div class="form-group">
|
||||
{{ form.branch_id.label_tag }} {{ form.branch_id }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-4">
|
||||
{% if form.account_routings_scheme.errors %}
|
||||
<div class="alert alert-danger">
|
||||
{{ form.account_routings_scheme.errors }}
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="form-group">
|
||||
{{ form.account_routings_scheme.label_tag }} {{ form.account_routings_scheme }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-4">
|
||||
{% if form.account_routings_address.errors %}
|
||||
<div class="alert alert-danger">{{ form.account_routings_address.errors }}</div>
|
||||
{% endif %}
|
||||
<div class="form-group">
|
||||
{{ form.account_routings_address.label_tag }} {{ form.account_routings_address }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-sm-4">
|
||||
{% if form.account_attributes_product_code.errors %}
|
||||
<div class="alert alert-danger">
|
||||
{{ form.account_attributes_product_code.errors }}
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="form-group">
|
||||
{{ form.account_attributes_product_code.label_tag }} {{ form.account_attributes_product_code }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-4">
|
||||
{% if form.account_attributes_id.errors %}
|
||||
<div class="alert alert-danger">{{ form.account_attributes_id.errors }}</div>
|
||||
{% endif %}
|
||||
<div class="form-group">
|
||||
{{ form.account_attributes_id.label_tag }} {{ form.account_attributes_id }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-4">
|
||||
{% if form.account_attributes_name.errors %}
|
||||
<div class="alert alert-danger">{{ form.account_attributes_name.errors }}</div>
|
||||
{% endif %}
|
||||
<div class="form-group">
|
||||
{{ form.account_attributes_name.label_tag }} {{ form.account_attributes_name }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-sm-4">
|
||||
{% if form.bank_id.errors %}
|
||||
<div class="alert alert-danger">{{ form.bank_id.errors }}</div>
|
||||
{% endif %}
|
||||
<div class="form-group">
|
||||
{{ form.bank_id.label_tag }} {{ form.bank_id }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-4">
|
||||
{% if form.account_attributes_value.errors %}
|
||||
<div class="alert alert-danger">
|
||||
{{ form.account_attributes_value.errors }}
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="form-group">
|
||||
{{ form.account_attributes_value.label_tag }} {{ form.account_attributes_value }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-4">
|
||||
{% if form.account_attributes_instance_code.errors %}
|
||||
<div class="alert alert-danger">
|
||||
{{ form.account_attributes_instance_code.errors }}
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="form-group">
|
||||
{{ form.account_attributes_instance_code.label_tag }} {{ form.account_attributes_instance_code }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12 hidden-xs">
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-primary btn-green">
|
||||
{% trans "Add" %}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
{% endblock %} {% block extrajs %} {% endblock extrajs %} {% block extracss %}
|
||||
<link href="{% static 'accounts/css/accounts.css' %}" rel="stylesheet"/> {% endblock extracss %}
|
||||
3
apimanager/accounts/tests.py
Normal file
3
apimanager/accounts/tests.py
Normal file
@ -0,0 +1,3 @@
|
||||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
||||
14
apimanager/accounts/urls.py
Normal file
14
apimanager/accounts/urls.py
Normal file
@ -0,0 +1,14 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
URLs for Account app
|
||||
"""
|
||||
|
||||
from django.conf.urls import url
|
||||
from .views import IndexAccountsView
|
||||
|
||||
urlpatterns = [
|
||||
url(r'^create',
|
||||
IndexAccountsView.as_view(),
|
||||
name='accounts-create'),
|
||||
|
||||
]
|
||||
71
apimanager/accounts/views.py
Normal file
71
apimanager/accounts/views.py
Normal file
@ -0,0 +1,71 @@
|
||||
|
||||
from django.shortcuts import render
|
||||
|
||||
# Create your views here.
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Views of Accounts app
|
||||
"""
|
||||
from django.contrib import messages
|
||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||
import json
|
||||
from django.urls import reverse_lazy
|
||||
from django.views.generic import FormView
|
||||
from obp.api import API, APIError
|
||||
from .forms import CreateAccountForm
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
class IndexAccountsView(LoginRequiredMixin, FormView):
|
||||
|
||||
"""Index view for Accounts"""
|
||||
template_name = "accounts/index.html"
|
||||
form_class = CreateAccountForm
|
||||
success_url = reverse_lazy('accounts-create')
|
||||
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
self.api = API(request.session.get('obp'))
|
||||
return super(IndexAccountsView, self).dispatch(request, *args, **kwargs)
|
||||
|
||||
def get_form(self, *args, **kwargs):
|
||||
form = super(IndexAccountsView, self).get_form(*args, **kwargs)
|
||||
# Cannot add api in constructor: super complains about unknown kwarg
|
||||
form.api = self.api
|
||||
fields = form.fields
|
||||
try:
|
||||
fields['bank_id'].choices = self.api.get_bank_id_choices()
|
||||
except APIError as err:
|
||||
messages.error(self.request, err)
|
||||
except Exception as err:
|
||||
messages.error(self.request, err)
|
||||
return form
|
||||
|
||||
def form_valid(self, form):
|
||||
try:
|
||||
data = form.cleaned_data
|
||||
urlpath = '/banks/{}/accounts/{}'.format(data['bank_id'], data['account_id'])
|
||||
payload ={
|
||||
"user_id": data["user_id"],
|
||||
"label": data["label"],
|
||||
"product_code": data["product_code"],
|
||||
"balance": {
|
||||
"currency": data["balance_currency"] if data["balance_currency"] is not None else "EUR",
|
||||
"amount": data["balance_amount"] if data["balance_amount"] is not None else 0
|
||||
},
|
||||
"account_routings": [{
|
||||
"scheme": data["account_routings_scheme"] if data["account_routings_scheme"] !="" else "scheme",
|
||||
"address": data["account_routings_address"] if data["account_routings_address"]!="" else "address"
|
||||
}],
|
||||
}
|
||||
result = self.api.put(urlpath, payload=payload)
|
||||
except APIError as err:
|
||||
messages.error(self.request, "Unknown Error")
|
||||
return super(IndexAccountsView, self).form_invalid(form)
|
||||
except Exception as err:
|
||||
messages.error(self.request, err, "Unknown Error")
|
||||
return super(IndexAccountsView, self).form_invalid(form)
|
||||
if 'code' in result and result['code']>=400:
|
||||
messages.error(self.request, result['message'])
|
||||
return super(IndexAccountsView, self).form_valid(form)
|
||||
msg = 'Account has been created successfully!'
|
||||
messages.success(self.request, msg)
|
||||
return super(IndexAccountsView, self).form_valid(form)
|
||||
@ -51,6 +51,7 @@ INSTALLED_APPS = [
|
||||
'base',
|
||||
'obp',
|
||||
'consumers',
|
||||
'accounts',
|
||||
'systemviews',
|
||||
'users',
|
||||
'branches',
|
||||
|
||||
@ -35,6 +35,7 @@ urlpatterns += i18n_patterns(
|
||||
url(r'^logout$',
|
||||
LogoutView.as_view(), name='oauth-logout'),
|
||||
url(r'^systemviews/', include('systemviews.urls')),
|
||||
url(r'^accounts/', include('accounts.urls')),
|
||||
url(r'^consumers/', include('consumers.urls')),
|
||||
url(r'^entitlementrequests/', include('entitlementrequests.urls')),
|
||||
url(r'^users/', include('users.urls')),
|
||||
|
||||
@ -13,6 +13,7 @@ from django.urls import reverse_lazy
|
||||
from django.http import HttpResponse
|
||||
from django.views.generic import FormView,TemplateView, View
|
||||
from atms.views import IndexAtmsView
|
||||
from base.views import get_banks
|
||||
from obp.api import API, APIError
|
||||
import csv
|
||||
|
||||
@ -21,64 +22,41 @@ import csv
|
||||
class AtmListView(IndexAtmsView, LoginRequiredMixin, FormView ):
|
||||
template_name = "atmlist/atmlist.html"
|
||||
success_url = '/atms/list'
|
||||
def get_banks(self):
|
||||
api = API(self.request.session.get('obp'))
|
||||
try:
|
||||
urlpath = '/banks'
|
||||
result = api.get(urlpath)
|
||||
if 'banks' in result:
|
||||
return [bank['id'] for bank in sorted(result['banks'], key=lambda d: d['id'])]
|
||||
else:
|
||||
return []
|
||||
except APIError as err:
|
||||
messages.error(self.request, err)
|
||||
return []
|
||||
|
||||
def get_atms(self, context):
|
||||
api = API(self.request.session.get('obp'))
|
||||
try:
|
||||
self.bankids = self.get_banks()
|
||||
atms_list = []
|
||||
for bank_id in self.bankids:
|
||||
urlpath = '/banks/{}/atms'.format(bank_id)
|
||||
result = api.get(urlpath)
|
||||
#print(result)
|
||||
if 'atms' in result:
|
||||
atms_list.extend(result['atms'])
|
||||
except APIError as err:
|
||||
messages.error(self.request, err)
|
||||
return []
|
||||
except Exception as inst:
|
||||
messages.error(self.request, "Unknown Error {}".format(type(inst).__name__))
|
||||
return []
|
||||
|
||||
return atms_list
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super(IndexAtmsView, self).get_context_data(**kwargs)
|
||||
atms_list = self.get_atms(context)
|
||||
context.update({
|
||||
'atms_list': atms_list,
|
||||
'bankids': self.bankids
|
||||
})
|
||||
return context
|
||||
class ExportCsvView(LoginRequiredMixin, View):
|
||||
"""View to export the user to csv"""
|
||||
def get_banks(self):
|
||||
def get_atms(self,context):
|
||||
api = API(self.request.session.get('obp'))
|
||||
try:
|
||||
urlpath = '/banks'
|
||||
result = api.get(urlpath)
|
||||
if 'banks' in result:
|
||||
return [bank['id'] for bank in sorted(result['banks'], key=lambda d: d['id'])]
|
||||
else:
|
||||
return []
|
||||
self.bankids = get_banks(self.request)
|
||||
atms_list = []
|
||||
for bank_id in self.bankids:
|
||||
urlpath = '/banks/{}/atms'.format(bank_id)
|
||||
result = api.get(urlpath)
|
||||
#print(result)
|
||||
if 'atms' in result:
|
||||
atms_list.extend(result['atms'])
|
||||
except APIError as err:
|
||||
messages.error(self.request, err)
|
||||
return []
|
||||
except Exception as inst:
|
||||
messages.error(self.request, "Unknown Error {}".format(type(inst).__name__))
|
||||
return []
|
||||
|
||||
return atms_list
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super(IndexAtmsView, self).get_context_data(**kwargs)
|
||||
atms_list = self.get_atms(context)
|
||||
context.update({
|
||||
'atms_list': atms_list,
|
||||
'bankids': get_banks(self.request)
|
||||
})
|
||||
return context
|
||||
class ExportCsvView(LoginRequiredMixin, View):
|
||||
"""View to export the user to csv"""
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
api = API(self.request.session.get('obp'))
|
||||
try:
|
||||
self.bankids = self.get_banks()
|
||||
self.bankids = get_banks(self.request)
|
||||
atms_list = []
|
||||
for bank_id in self.bankids:
|
||||
urlpath = '/banks/{}/atms'.format(bank_id)
|
||||
|
||||
@ -210,6 +210,11 @@ table.tablesorter thead tr .headerSortDown, table.tablesorter thead tr .headerSo
|
||||
.language-select {
|
||||
text-decoration: none;
|
||||
color:#fff;
|
||||
cursor:pointer;
|
||||
margin-left:5rem;
|
||||
}
|
||||
#uk {
|
||||
cursor:pointer;
|
||||
}
|
||||
#es {
|
||||
cursor:pointer;
|
||||
}1
|
||||
@ -59,11 +59,13 @@
|
||||
<li {% if metrics_summary_url in request.path %} class="active" {% endif %}><a href="{{ metrics_summary_url }}">{% trans "KPI Dashboard" %}</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
{% url "system_view" as system_view_url %} {% url "branches_list" as branches_list_url %} {% url "customers-create" as customers_create_url %} {% url "customer-list" as customer_list_url %} {% url "atms_create" as atms_create_url %} {% url "atm-list" as atm_list_url %} {% url "product-list" as product_list_url %} {% url "products-create" as product_create_url %}
|
||||
{% url "system_view" as system_view_url %} {% url "accounts-create" as accounts_create_url %} {% url "branches_list" as branches_list_url %} {% url "customers-create" as customers_create_url %} {% url "customer-list" as customer_list_url %} {% url "atms_create" as atms_create_url %} {% url "atm-list" as atm_list_url %} {% url "product-list" as product_list_url %} {% url "products-create" as product_create_url %}
|
||||
<li class="dropdown{% if customers_create_url in request.path %} active{% endif %}">
|
||||
<a href="#" data-toggle="dropdown" class="dropdown-toggle">{% trans "Resources" %}</a>
|
||||
<ul class="dropdown-menu">
|
||||
<li {% if system_view_url in request.path %} class="active" {% endif %}><a href="{{ system_view_url }}">{% trans "System View" %}</a></li><hr class="dropdown-hr">
|
||||
<li {% if system_view_url in request.path %} class="active" {% endif %}><a href="{{ system_view_url }}">{% trans "System View" %}</a></li>
|
||||
<hr class="dropdown-hr">
|
||||
<li {% if accounts_create_url in request.path %} class="active" {% endif %}><a href="{{ accounts_create_url }}">{% trans "Account Create" %}</a></li>
|
||||
<li {% if customers_create_url in request.path %} class="active" {% endif %}><a href="{{ customers_create_url }}">{% trans "Customers" %}</a></li>
|
||||
<li {% if customer_list_url in request.path %} class="active" {% endif %}><a href="{{ customer_list_url }}">{% trans "Customer List" %}</a></li>
|
||||
<li {% if branches_list_url in request.path %} class="active" {% endif %}><a href="{{ branches_list_url }}">{% trans "Branches" %}</a></li>
|
||||
|
||||
@ -7,6 +7,20 @@ from django.conf import settings
|
||||
from django.views.generic import TemplateView
|
||||
from django.shortcuts import render
|
||||
from obp.forms import DirectLoginForm, GatewayLoginForm
|
||||
from obp.api import API, APIError
|
||||
|
||||
def get_banks(request):
|
||||
api = API(request.session.get('obp'))
|
||||
try:
|
||||
urlpath = '/banks'
|
||||
result = api.get(urlpath)
|
||||
if 'banks' in result:
|
||||
return [bank['id'] for bank in sorted(result['banks'], key=lambda d: d['id'])]
|
||||
else:
|
||||
return []
|
||||
except APIError as err:
|
||||
messages.error(self.request, err)
|
||||
return []
|
||||
|
||||
class HomeView(TemplateView):
|
||||
"""View for home page"""
|
||||
|
||||
Binary file not shown.
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-09-29 14:00+0200\n"
|
||||
"POT-Creation-Date: 2022-10-18 16:12+0200\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -36,6 +36,8 @@ msgstr "Es Compartible"
|
||||
#: apicollections/templates/apicollections/index.html:18
|
||||
#: consumers/templates/consumers/detail.html:175
|
||||
#: consumers/templates/consumers/index.html:59
|
||||
#: productlist/templates/productlist/productlist.html:27
|
||||
#: systemviews/templates/systemviews/index.html:11
|
||||
msgid "Description"
|
||||
msgstr "Descripción"
|
||||
|
||||
@ -58,24 +60,25 @@ msgstr "Creada"
|
||||
msgid "Delete"
|
||||
msgstr "Eliminar"
|
||||
|
||||
#: apimanager/settings.py:181
|
||||
#: apimanager/settings.py:184
|
||||
msgid "English"
|
||||
msgstr "Inglés"
|
||||
|
||||
#: apimanager/settings.py:182
|
||||
#: apimanager/settings.py:185
|
||||
msgid "French"
|
||||
msgstr "francés"
|
||||
|
||||
#: apimanager/settings.py:183
|
||||
#: apimanager/settings.py:186
|
||||
msgid "Spanish"
|
||||
msgstr "español"
|
||||
|
||||
#: atmlist/templates/atmlist/atmlist.html:2
|
||||
#: atmlist/templates/atmlist/atmlist.html:4 base/templates/base.html:70
|
||||
#: atmlist/templates/atmlist/atmlist.html:4 base/templates/base.html:71
|
||||
msgid "ATM List"
|
||||
msgstr "Vista de Cajeros Automáticos"
|
||||
|
||||
#: atmlist/templates/atmlist/atmlist.html:6
|
||||
#: customerlist/templates/customerlist/customerlist.html:6
|
||||
#: productlist/templates/productlist/productlist.html:6
|
||||
#: users/templates/users/includes/filter_pagination.html:12
|
||||
msgid "Export CSV"
|
||||
@ -87,6 +90,7 @@ msgstr "ID del cajero automático"
|
||||
|
||||
#: atmlist/templates/atmlist/atmlist.html:12 atms/forms.py:25
|
||||
#: branches/templates/branches/index.html:161
|
||||
#: customerlist/templates/customerlist/customerlist.html:12
|
||||
#: productlist/templates/productlist/productlist.html:12
|
||||
#: users/templates/users/detail.html:97
|
||||
#: users/templates/users/invitation.html:22
|
||||
@ -98,6 +102,7 @@ msgid "ATM Name"
|
||||
msgstr "Nombre del cajero automático"
|
||||
|
||||
#: atmlist/templates/atmlist/atmlist.html:14
|
||||
#: customerlist/templates/customerlist/customerlist.html:14
|
||||
#: productlist/templates/productlist/productlist.html:14
|
||||
msgid "More info"
|
||||
msgstr "Más información"
|
||||
@ -105,19 +110,20 @@ msgstr "Más información"
|
||||
#: atmlist/templates/atmlist/atmlist.html:27 atms/forms.py:46
|
||||
#: branches/forms.py:43 branches/templates/branches/index.html:176
|
||||
#: branches/templates/branches/index.html:203
|
||||
#: productlist/templates/productlist/productlist.html:27
|
||||
msgid "Address"
|
||||
msgstr "Dirección"
|
||||
|
||||
#: atmlist/templates/atmlist/atmlist.html:36
|
||||
#: consumers/templates/consumers/index.html:76
|
||||
#: customerlist/templates/customerlist/customerlist.html:36
|
||||
#: productlist/templates/productlist/productlist.html:36
|
||||
#: systemviews/templates/systemviews/index.html:21
|
||||
#: users/templates/users/index.html:69
|
||||
msgid "View"
|
||||
msgstr "Ver"
|
||||
|
||||
#: atms/forms.py:35 branches/forms.py:33
|
||||
#: consumers/templates/consumers/index.html:58
|
||||
#: consumers/templates/consumers/index.html:58 products/forms.py:45
|
||||
msgid "Name"
|
||||
msgstr "Nombre"
|
||||
|
||||
@ -274,17 +280,18 @@ msgstr "Cargo internacional por retiro de efectivo"
|
||||
msgid "Balance Inquiry Fee"
|
||||
msgstr "Cargo por consulta de saldo"
|
||||
|
||||
#: atms/templates/atms/index.html:3 base/templates/base.html:69
|
||||
#: atms/templates/atms/index.html:3 base/templates/base.html:70
|
||||
msgid "ATM Create"
|
||||
msgstr "Creada"
|
||||
|
||||
#: atms/templates/atms/index.html:250
|
||||
#: branches/templates/branches/index.html:151
|
||||
#: products/templates/products/index.html:76
|
||||
#: users/templates/users/detail.html:81 users/templates/users/detail.html:86
|
||||
msgid "Add"
|
||||
msgstr "Agregar"
|
||||
|
||||
#: atms/templates/atms/update.html:4
|
||||
#: atms/templates/atms/update.html:4 products/templates/products/update.html:8
|
||||
msgid "ATM Detail"
|
||||
msgstr "Descripción"
|
||||
|
||||
@ -351,56 +358,75 @@ msgstr "Panel de KPI"
|
||||
msgid "Resources"
|
||||
msgstr "Recursos"
|
||||
|
||||
#: base/templates/base.html:66 customers/templates/customers/create.html:5
|
||||
#: base/templates/base.html:66 systemviews/templates/systemviews/index.html:2
|
||||
#: systemviews/templates/systemviews/index.html:4
|
||||
msgid "System View"
|
||||
msgstr ""
|
||||
|
||||
#: base/templates/base.html:67 customers/templates/customers/create.html:5
|
||||
msgid "Customers"
|
||||
msgstr "Consumidores"
|
||||
|
||||
#: base/templates/base.html:68 branches/templates/branches/index.html:9
|
||||
#: base/templates/base.html:68
|
||||
#: customerlist/templates/customerlist/customerlist.html:2
|
||||
#: customerlist/templates/customerlist/customerlist.html:4
|
||||
#, fuzzy
|
||||
#| msgid "Customers"
|
||||
msgid "Customer List"
|
||||
msgstr "Consumidores"
|
||||
|
||||
#: base/templates/base.html:69 branches/templates/branches/index.html:9
|
||||
msgid "Branches"
|
||||
msgstr "Sucursales"
|
||||
|
||||
#: base/templates/base.html:71
|
||||
#: base/templates/base.html:72 products/templates/products/index.html:8
|
||||
#, fuzzy
|
||||
#| msgid "Function Name"
|
||||
msgid "Product Create"
|
||||
msgstr "Nombre de la función"
|
||||
|
||||
#: base/templates/base.html:73
|
||||
#: productlist/templates/productlist/productlist.html:2
|
||||
#: productlist/templates/productlist/productlist.html:4
|
||||
msgid "Product List"
|
||||
msgstr "Produkt Liste"
|
||||
|
||||
#: base/templates/base.html:76
|
||||
#: base/templates/base.html:78
|
||||
msgid "Configurations"
|
||||
msgstr "Configuraciones"
|
||||
|
||||
#: base/templates/base.html:78 config/templates/config/index.html:8
|
||||
#: base/templates/base.html:80 config/templates/config/index.html:8
|
||||
msgid "Config"
|
||||
msgstr "Configuraciones"
|
||||
|
||||
#: base/templates/base.html:80
|
||||
#: base/templates/base.html:82
|
||||
msgid "Webui Props"
|
||||
msgstr "Accesorios webui"
|
||||
|
||||
#: base/templates/base.html:82
|
||||
#: base/templates/base.html:84
|
||||
msgid "Method Routings"
|
||||
msgstr "Enrutamiento de métodos"
|
||||
|
||||
#: base/templates/base.html:84
|
||||
#: base/templates/base.html:86
|
||||
#: connectormethod/templates/connectormethod/detail.html:6
|
||||
#: connectormethod/templates/connectormethod/index.html:6
|
||||
msgid "Connector Methods"
|
||||
msgstr "Métricas del conector"
|
||||
|
||||
#: base/templates/base.html:86
|
||||
#: base/templates/base.html:88
|
||||
#: dynamicendpoints/templates/dynamicendpoints/index.html:7
|
||||
msgid "Dynamic Endpoints"
|
||||
msgstr "Puntos finales dinámicos"
|
||||
|
||||
#: base/templates/base.html:89
|
||||
#: base/templates/base.html:91
|
||||
msgid "My API Collections"
|
||||
msgstr "Mis colecciones de API"
|
||||
|
||||
#: base/templates/base.html:94
|
||||
#: base/templates/base.html:96
|
||||
msgid "API Tester"
|
||||
msgstr "Métricas de la API"
|
||||
|
||||
#: base/templates/base.html:100
|
||||
#: base/templates/base.html:102
|
||||
msgid "Logout"
|
||||
msgstr "Cerrar la sesión"
|
||||
|
||||
@ -448,26 +474,26 @@ msgstr "Seleccione..."
|
||||
|
||||
#: base/templates/home.html:36
|
||||
msgid "Proceed to authentication server"
|
||||
msgstr "Weiter zum Authentifizierungsserver"
|
||||
msgstr "Proceder al servidor de autenticación"
|
||||
|
||||
#: branches/forms.py:13 branches/templates/branches/index.html:160
|
||||
msgid "Branch Id"
|
||||
msgstr "Identificación de la sucursal"
|
||||
|
||||
#: branches/forms.py:24 customers/forms.py:15 users/forms.py:24
|
||||
#: users/forms.py:40
|
||||
#: branches/forms.py:24 customers/forms.py:15 products/forms.py:24
|
||||
#: users/forms.py:24 users/forms.py:40
|
||||
msgid "Bank"
|
||||
msgstr "Banco"
|
||||
|
||||
#: branches/forms.py:36
|
||||
#: branches/forms.py:36 products/forms.py:48 products/forms.py:58
|
||||
msgid "The name of the branch"
|
||||
msgstr "La configuración de la API"
|
||||
|
||||
#: branches/forms.py:75
|
||||
#: branches/forms.py:75 products/forms.py:86
|
||||
msgid "meta_license_id"
|
||||
msgstr "Nombre de la metalicencia"
|
||||
|
||||
#: branches/forms.py:86
|
||||
#: branches/forms.py:86 products/forms.py:97
|
||||
msgid "meta_license_name"
|
||||
msgstr "Nombre de la metalicencia"
|
||||
|
||||
@ -584,6 +610,8 @@ msgid "id"
|
||||
msgstr "identificación"
|
||||
|
||||
#: branches/templates/branches/index.html:197
|
||||
#: products/templates/products/index.html:28
|
||||
#: products/templates/products/update.html:28
|
||||
msgid "name"
|
||||
msgstr "nombre"
|
||||
|
||||
@ -786,6 +814,23 @@ msgstr "Identificación"
|
||||
msgid "Action"
|
||||
msgstr "Acción"
|
||||
|
||||
#: customerlist/templates/customerlist/customerlist.html:11
|
||||
#, fuzzy
|
||||
#| msgid "Customers"
|
||||
msgid "Customer Id"
|
||||
msgstr "Consumidores"
|
||||
|
||||
#: customerlist/templates/customerlist/customerlist.html:13
|
||||
#: customers/forms.py:42
|
||||
msgid "Legal Name"
|
||||
msgstr "Nombre_juridico"
|
||||
|
||||
#: customerlist/templates/customerlist/customerlist.html:28
|
||||
#, fuzzy
|
||||
#| msgid "More Info"
|
||||
msgid "Other Info"
|
||||
msgstr "Más información"
|
||||
|
||||
#: customers/forms.py:24 users/templates/users/index.html:58
|
||||
msgid "Username"
|
||||
msgstr "Nombre de usuario"
|
||||
@ -798,10 +843,6 @@ msgstr "La configuración de la API"
|
||||
msgid "Customer Number"
|
||||
msgstr "Número de cliente"
|
||||
|
||||
#: customers/forms.py:42
|
||||
msgid "Legal Name"
|
||||
msgstr "Nombre_juridico"
|
||||
|
||||
#: customers/forms.py:62 users/forms.py:67 users/templates/users/detail.html:16
|
||||
#: users/templates/users/index.html:59 users/templates/users/invitation.html:71
|
||||
msgid "Email"
|
||||
@ -1505,7 +1546,7 @@ msgstr "Maximo de llamadas por día"
|
||||
msgid "Calls per month"
|
||||
msgstr "llamadas por mes"
|
||||
|
||||
#: productlist/templates/productlist/productlist.html:11
|
||||
#: productlist/templates/productlist/productlist.html:11 products/forms.py:13
|
||||
msgid "Product Code"
|
||||
msgstr ""
|
||||
|
||||
@ -1515,6 +1556,42 @@ msgstr ""
|
||||
msgid "Product Name"
|
||||
msgstr "Nombre de la función"
|
||||
|
||||
#: products/forms.py:34 products/forms.py:37
|
||||
msgid "parent_product_code"
|
||||
msgstr ""
|
||||
|
||||
#: products/forms.py:55
|
||||
#, fuzzy
|
||||
#| msgid "more_info"
|
||||
msgid "more_info_url"
|
||||
msgstr "más información"
|
||||
|
||||
#: products/forms.py:65 products/forms.py:68
|
||||
msgid "terms_and_conditions_url"
|
||||
msgstr ""
|
||||
|
||||
#: products/forms.py:75 products/forms.py:78
|
||||
#: products/templates/products/index.html:52
|
||||
#: products/templates/products/update.html:52
|
||||
#, fuzzy
|
||||
#| msgid "Description"
|
||||
msgid "description"
|
||||
msgstr "Descripción"
|
||||
|
||||
#: systemviews/templates/systemviews/index.html:8
|
||||
msgid "Id"
|
||||
msgstr ""
|
||||
|
||||
#: systemviews/templates/systemviews/index.html:9
|
||||
#, fuzzy
|
||||
#| msgid "Site Name"
|
||||
msgid "Short Name"
|
||||
msgstr "Nobre del sitio"
|
||||
|
||||
#: systemviews/templates/systemviews/index.html:10
|
||||
msgid "Is Public"
|
||||
msgstr ""
|
||||
|
||||
#: users/forms.py:15 users/templates/users/detail.html:67
|
||||
#: users/templates/users/detail.html:96
|
||||
msgid "Role name"
|
||||
@ -1768,9 +1845,6 @@ msgstr "Ahorrar"
|
||||
#~ msgid "accessibleFeatures"
|
||||
#~ msgstr "Funciones accesibles"
|
||||
|
||||
#~ msgid "more_info"
|
||||
#~ msgstr "más información"
|
||||
|
||||
#~ msgid "phone_number"
|
||||
#~ msgstr "número_de_teléfono"
|
||||
|
||||
|
||||
@ -1,5 +0,0 @@
|
||||
$(document).ready(function($) {
|
||||
$('#info').click(function() {
|
||||
alert("Hello World")
|
||||
});
|
||||
});
|
||||
@ -11,7 +11,6 @@
|
||||
<th scope="col">{% trans "Description" %}</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
<tr data-system-view="{{ system_view.id }}">
|
||||
<td>{{ system_view.id }}</td>
|
||||
<td>{{ system_view.short_name }}</td>
|
||||
|
||||
@ -14,7 +14,6 @@ from django.http import HttpResponse
|
||||
from django.views.generic import FormView,TemplateView, View
|
||||
from obp.api import API, APIError
|
||||
|
||||
import csv
|
||||
|
||||
class SystemView(LoginRequiredMixin, FormView):
|
||||
template_name = "systemviews/index.html"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user