Merge branch 'develop-master-merge' into develop

# Conflicts:
#	apimanager/apimanager/settings.py
#	apimanager/apimanager/urls.py
#	apimanager/atms/templates/atms/update.html
#	apimanager/base/templates/base.html
#	apimanager/base/templates/home.html
#	apimanager/locale/de/LC_MESSAGES/django.mo
#	apimanager/locale/de/LC_MESSAGES/django.po
#	apimanager/locale/es/LC_MESSAGES/django.mo
#	apimanager/locale/es/LC_MESSAGES/django.po
#	apimanager/locale/fr/LC_MESSAGES/django.mo
#	apimanager/locale/fr/LC_MESSAGES/django.po
#	apimanager/locale/hi/LC_MESSAGES/django.mo
#	apimanager/locale/hi/LC_MESSAGES/django.po
#	apimanager/metrics/templates/metrics/custom_summary.html
This commit is contained in:
Reena-cell 2022-05-31 14:31:24 +02:00
commit 3ae195a7a5
47 changed files with 2748 additions and 723 deletions

View File

@ -51,22 +51,47 @@ INSTALLED_APPS = [
'obp',
'consumers',
'users',
'branches',
'atms',
'entitlementrequests',
'customers',
'metrics',
'config',
'webui',
'methodrouting',
'dynamicendpoints',
'apicollections'
]
MIDDLEWARE = [
# 'django.middleware.cache.UpdateCacheMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
# 'django.middleware.cache.FetchFromCacheMiddleware',
]
#cache the view page, we set 60s = 1m,
# CACHE_MIDDLEWARE_SECONDS = 60
# TIMEOUT is 31104000 seconds = 60*60*24*30*12 (1 year)
# MAX_ENTRIES is 1000000 entities
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
'LOCATION': 'unique-snowflake',
'TIMEOUT': 31104000,
'OPTIONS': {
'MAX_ENTRIES': 10000000
}
}
}
ROOT_URLCONF = 'apimanager.urls'
TEMPLATES = [
@ -84,6 +109,9 @@ TEMPLATES = [
'base.context_processors.api_username',
'base.context_processors.api_user_id',
'base.context_processors.api_tester_url',
'base.context_processors.portal_page',
'base.context_processors.logo_url',
'base.context_processors.override_css_url'
],
},
},
@ -141,6 +169,17 @@ USE_TZ = True
STATIC_URL = '/static/'
from django.utils.translation import gettext_lazy as _
#LANGUAGES = (
# ("en", _("English")),
# ("fr", _("French")),
#)
LOCALE_PATHS = (
os.path.join(BASE_DIR, "locale/"),
)
# Set this to your local directory for static files
STATIC_ROOT = os.path.join(BASE_DIR, '..', '..', 'static-collected')
@ -192,15 +231,20 @@ LOGGING = {
LOGIN_URL = reverse_lazy('home')
#Map Java: yyyy-MM-dd'T'HH:mm'Z'
API_DATETIMEFORMAT = '%Y-%m-%dT%H:%M:%SZ'
#API_DATEFORMAT = '%Y-%m-%d'
API_DATEFORMAT = '%Y-%m-%dT%H:%M:%S'
#Map Java: yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
API_DATEFORMAT = '%Y-%m-%dT%H:%M:%S.%fZ'
# the API_Manager the web form date format, eg: 2020-10-11
API_MANAGER_DATE_FORMAT= '%Y-%m-%d'
API_HOST = 'http://127.0.0.1:8080'
# Only override this if you have a separate portal instance
API_PORTAL = API_HOST
API_BASE_PATH = '/obp/v'
API_VERSION = '3.1.0'
API_VERSION = '4.0.0'
# URL to API Tester if it is running on API_HOST
API_TESTER_URL = ''
@ -223,30 +267,40 @@ DIRECTLOGIN_PATH = '/my/logins/direct'
# Set to true if the API is connected to a core banking system
GATEWAYLOGIN_HAS_CBS = False
# Use BOOTSTRAP3 if you are using Bootstrap 3
BOOTSTRAP4 = {
'include_jquery': True,
}
# Apps to exclude when request to OBP-API's api
EXCLUDE_APPS = []
# Functions to exclude when request to OBP-API's api
EXCLUDE_FUNCTIONS = []
# Url Patterns to exclude when reqeust to OBP-API's api
EXCLUDE_URL_PATTERN = []
# App Name to aggregate metrics
API_EXPLORER_APP_NAME = 'API Explorer'
LOGO_URL = 'https://static.openbankproject.com/images/OBP/favicon.png'
OVERRIDE_CSS_URL = None
VERIFY = True
# Local settings can override anything in here
try:
from apimanager.local_settings import * # noqa
from apimanager.local_settings import * # noqa
except ImportError:
pass
if not OAUTH_CONSUMER_KEY:
raise ImproperlyConfigured('Missing settings for OAUTH_CONSUMER_KEY')
if not OAUTH_CONSUMER_SECRET:
raise ImproperlyConfigured('Missing settings for OAUTH_CONSUMER_SECRET')
# EVERYTHING BELOW HERE WILL NOT BE OVERWRITTEN BY LOCALSETTINGS!
# DO NOT TRY TO DO SO YOU WILL BE IGNORED!
# Settings here might use parts overwritten in local settings
API_ROOT = API_HOST + API_BASE_PATH + API_VERSION
# For some reason, swagger is not available at the latest API version
API_URL_SWAGGER = API_HOST + '/obp/v1.4.0/resource-docs/v' + API_VERSION + '/swagger' # noqa
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': 'unix:/tmp/memcached.sock',
}
}
# Use BOOTSTRAP3 if you are using Bootstrap 3
BOOTSTRAP4 = {
'include_jquery': True,
}
if not OAUTH_CONSUMER_KEY:
raise ImproperlyConfigured('Missing settings for OAUTH_CONSUMER_KEY')
if not OAUTH_CONSUMER_SECRET:
raise ImproperlyConfigured('Missing settings for OAUTH_CONSUMER_SECRET')

View File

@ -14,10 +14,7 @@ from obp.views import (
LogoutView,
)
urlpatterns = [
# Defining authentication URLs here and not including oauth.urls for
# backward compatibility
]

View File

@ -55,7 +55,7 @@ class CreateAtmForm(forms.Form):
label='Latitude',
widget=forms.TextInput(
attrs={
'placeholder': 37.0,
'placeholder': " ",
'class': 'form-control',
}
),
@ -66,7 +66,7 @@ class CreateAtmForm(forms.Form):
label='Longitude',
widget=forms.TextInput(
attrs={
'placeholder': 110.0,
'placeholder': " ",
'class': 'form-control',
}
),

View File

@ -1,6 +1,7 @@
{% extends 'base.html' %} {% load static %} {% block page_title %}{{ block.super }} / atms{% endblock page_title %} {% block content %}
{% extends 'base.html' %} {% load static i18n %}
{% block page_title %}{{ block.super }} / atms{% endblock page_title %} {% block content %}
<div id="atms_list">
<h1>ATMs</h1>
<h1>{% trans "ATMs" %}</h1>
<form method="post">
{% csrf_token %} {% if form.non_field_errors %}
@ -13,21 +14,21 @@
{% if form.atm_id.errors %}
<div class="alert alert-danger">{{ form.atm_id.errors }}</div>{% endif %}
<div class="form-group">
{{ form.atm_id.label_tag }} {{ form.atm_id }}
<strong>{% trans "ATM Id" %} </strong>{{ form.atm_id }}
</div>
</div>
<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 }}
<strong>{% trans "Bank Id" %}</strong> {{ form.bank_id }}
</div>
</div>
<div class="col-xs-12 col-sm-4">
{% if form.name.errors %}
<div class="alert alert-danger">{{ form.name.errors }}</div>{% endif %}
<div class="form-group">
{{ form.name.label_tag }} {{ form.name }}
<strong>{% trans "Name" %}</strong> {{ form.name }}
</div>
</div>
</div>
@ -36,7 +37,7 @@
{% if form.services.errors %}
<div class="alert alert-danger">{{ form.services.errors }}</div>{% endif %}
<div class="form-group">
{{ form.services.label_tag }} {{ form.services }}
<strong>{% trans "Services" %}</strong> {{ form.services }}
</div>
</div>
<div class="col-xs-12 col-sm-4">
@ -44,7 +45,7 @@
<div class="alert alert-danger">{{ form.location_latitude.errors }}
</div>{% endif %}
<div class="form-group">
{{ form.location_latitude.label_tag }} {{ form.location_latitude }}
<strong>{% trans "Location Latitude" %}</strong> {{ form.location_latitude }}
</div>
</div>
<div class="col-xs-12 col-sm-4">
@ -52,7 +53,7 @@
<div class="alert alert-danger">{{ form.location_longitude.errors }}
</div>{% endif %}
<div class="form-group">
{{ form.location_longitude.label_tag }} {{ form.location_longitude }}
<strong>{% trans "Location Longitude" %}</strong> {{ form.location_longitude }}
</div>
</div>
</div>
@ -62,21 +63,21 @@
<div class="alert alert-danger">{{ form.meta_license_name.errors }}
</div>{% endif %}
<div class="form-group">
{{ form.meta_license_name.label_tag }} {{ form.meta_license_name }}
<strong>{% trans "Meta License Name" %}</strong> {{ form.meta_license_name }}
</div>
</div>
<div class="col-xs-12 col-sm-4">
{% if form.located_at.errors %}
<div class="alert alert-danger">{{ form.located_at.errors }}</div>{% endif %}
<div class="form-group">
{{ form.located_at.label_tag }} {{ form.located_at }}
<strong>{% trans "Located At" %}</strong> {{ form.located_at }}
</div>
</div>
<div class="col-xs-12 col-sm-4">
{% if form.has_deposit_capability.errors %}
<div class="alert alert-danger">{{ form.has_deposit_capability.errors }}</div>{% endif %}
<div class="form-group">
{{ form.has_deposit_capability.label_tag }} {{ form.has_deposit_capability }}
<strong>{% trans "Has Deposit Capability" %}</strong> {{ form.has_deposit_capability }}
</div>
</div>
</div>
@ -86,7 +87,7 @@
<div class="alert alert-danger">{{ form.is_accessible.errors }}</div>
{% endif %}
<div class="form-group">
{{ form.is_accessible.label_tag }} {{ form.is_accessible }}
<strong>{% trans "Is Accessible" %}</strong> {{ form.is_accessible }}
</div>
</div>
<div class="col-xs-12 col-sm-4">
@ -94,14 +95,14 @@
<div class="alert alert-danger">{{ form.accessibility_features.errors }}
</div>{% endif %}
<div class="form-group">
{{ form.accessibility_features.label_tag }} {{ form.accessibility_features }}
<strong>{% trans "Accessibility Features" %}</strong> {{ form.accessibility_features }}
</div>
</div>
<div class="col-xs-12 col-sm-4">
{% if form.more_info.errors %}
<div class="alert alert-danger">{{ form.more_info.errors }}</div>{% endif %}
<div class="form-group">
{{ form.more_info.label_tag }} {{ form.more_info }}
<strong>{% trans "More Info" %}</strong> {{ form.more_info }}
</div>
</div>
</div>
@ -110,21 +111,21 @@
{% if form.notes.errors %}
<div class="alert alert-danger">{{ form.notes.errors }}</div>{% endif %}
<div class="form-group">
{{ form.notes.label_tag }} {{ form.notes }}
<strong>{% trans "Notes" %}</strong> {{ form.notes }}
</div>
</div>
<div class="col-xs-12 col-sm-4">
{% if form.supported_languages.errors %}
<div class="alert alert-danger">{{ form.supported_languages.errors }}</div>{% endif %}
<div class="form-group">
{{ form.supported_languages.label_tag }} {{ form.supported_languages }}
<strong>{% trans "Supported Languages" %}</strong> {{ form.supported_languages }}
</div>
</div>
<div class="col-xs-12 col-sm-4">
{% if form.supported_currencies.errors %}
<div class="alert alert-danger">{{ form.supported_currencies.errors }}</div>{% endif %}
<div class="form-group">
{{ form.supported_currencies.label_tag }} {{ form.supported_currencies }}
<strong>{% trans "Supported Currencies" %}</strong> {{ form.supported_currencies }}
</div>
</div>
</div>
@ -133,7 +134,7 @@
{% if form.location_categories.errors %}
<div class="alert alert-danger">{{ form.location_categories.errors }}</div>{% endif %}
<div class="form-group">
{{ form.location_categories.label_tag }} {{ form.location_categories }}
<strong>{% trans "Location Categories" %}</strong> {{ form.location_categories }}
</div>
</div>
<div class="col-xs-12 col-sm-4">
@ -141,14 +142,14 @@
<div class="alert alert-danger">{{ form.minimum_withdrawal.errors }}
</div>{% endif %}
<div class="form-group">
{{ form.minimum_withdrawal.label_tag }} {{ form.minimum_withdrawal }}
<strong>{% trans "Minimum Withdrawal" %}</strong> {{ form.minimum_withdrawal }}
</div>
</div>
<div class="col-xs-12 col-sm-4">
{% if form.site_name.errors %}
<div class="alert alert-danger">{{ form.site_name.errors }}</div>{% endif %}
<div class="form-group">
{{ form.site_name.label_tag }} {{ form.site_name }}
<strong>{% trans "Site Name" %}</strong> {{ form.site_name }}
</div>
</div>
</div>
@ -157,19 +158,19 @@
{% if form.branch_identification.errors %}
<div class="alert alert-danger">{{ form.branch_identification.errors }}</div>{% endif %}
<div class="form-group">
{{ form.branch_identification.label_tag }} {{ form.branch_identification }}
<strong>{% trans "Branch Identification" %}</strong> {{ form.branch_identification }}
</div>
</div>
<div class="col-xs-12 col-sm-4">
{% if form.site_identification.errors %}
<div class="alert alert-danger">{{ form.site_identification.errors }}</div>{% endif %}
<div class="form-group">
{{ form.site_identification.label_tag }} {{ form.site_identification }}
<strong>{% trans "Site Identification" %}</strong> {{ form.site_identification }}
</div>
</div>
<div class="col-xs-12 col-sm-4"> {% if form.cash_withdrawal_national_fee.errors %}
<div class="alert alert-danger">{{ form.cash_withdrawal_national_fee.errors }}</div>{% endif %}
<div class="form-group">{{ form.cash_withdrawal_national_fee.label_tag }} {{ form.cash_withdrawal_national_fee }}
<div class="form-group"><strong>{% trans "Cash Withdrawal National Fee" %}</strong> {{ form.cash_withdrawal_national_fee }}
</div>
</div>
@ -179,14 +180,14 @@
{% if form.balance_inquiry_fee.errors %}
<div class="alert alert-danger">{{ form.balance_inquiry_fee.errors }}</div>{% endif %}
<div class="form-group">
{{ form.balance_inquiry_fee.label_tag }} {{ form.balance_inquiry_fee }}
<strong>{% trans "Balance Inquiry Fee" %}</strong> {{ form.balance_inquiry_fee }}
</div>
</div>
<div class="col-xs-12 col-sm-4">
{% if form.cash_withdrawal_international_fee.errors %}
<div class="alert alert-danger">{{ form.cash_withdrawal_international_fee.errors }}</div>{% endif %}
<div class="form-group">
{{ form.cash_withdrawal_international_fee.label_tag }} {{ form.cash_withdrawal_international_fee }}
<strong>{% trans "Cash Withdrawal International Fee" %}</strong> {{ form.cash_withdrawal_international_fee }}
</div>
</div>
</div>
@ -195,14 +196,14 @@
{% if form.address.errors %}
<div class="alert alert-danger">{{ form.address.errors }}</div>{% endif %}
<div class="form-group">
{{ form.address.label_tag }} {{ form.address }}
<strong>{% trans "Address" %}</strong> {{ form.address }}
</div>
</div>
<div class="col-xs-12 col-sm-6">
{% if form.lobby.errors %}
<div class="alert alert-danger">{{ form.lobby.errors }}</div>{% endif %}
<div class="form-group">
{{ form.lobby.label_tag }} {{ form.lobby }}
<strong>{% trans "Lobby" %}</strong> {{ form.lobby }}
</div>
</div>
</div>
@ -218,15 +219,17 @@
<div class="table-responsive">
<table class="table table-hover tablesorter" id="atms-list" aria-describedby="atms list">
<thead>
<th scope="col">ATM Id</th>
<th scope="col">Bank Id</th>
<th scope="col">ATM Name</th>
<th scope="col">More_info</th>
<th scope="col">Update Button</th>
<th scope="col">{% trans "ATM Id" %}</th>
<th scope="col">{% trans "Bank Id" %}</th>
<th scope="col">{% trans "ATM Name" %}</th>
<th scope="col">{% trans "More info" %}</th>
<!--<th scope="col">{% trans "Update Button" %}</th>-->
</thead>
<tbody>
{% for atm in atms_list %} {% url 'atms_update' atm.id atm.bank_id as url_atm_update %}
<tr data-atm-id="{{ branch.id }}">
{% for atm in atms_list %}
{% url 'atms_update' atm.id atm.bank_id as url_atm_update %}
<tr data-atm-id="{{ atm.id }}">
<td>{{ atm.id }}</td>
<td>{{ atm.bank_id }}</td>
<td>{{ atm.name }}</td>
@ -269,12 +272,13 @@
</ul>
</div>
</td>
<td><a href="{{ url_branch_update }}" class="btn btn-primary">Update</a></td>
<td><a href="{{ url_atm_update }}" class="btn btn-primary">View</a></td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
{% endblock %} {% block extrajs %} {% endblock extrajs %} {% block extracss %}
<link href="{% static 'atms/css/atms.css' %}" rel="stylesheet"> {% endblock extracss %}

View File

@ -1,6 +1,6 @@
{% extends 'base.html' %} {% load static %} {% block page_title %}{{ block.super }} / Atms{% endblock page_title %} {% block content %}
<div id="atms">
<h1>Update Atm</h1>
<h1>ATM Detail</h1>
<h2>{{ bank_id }} : {{ atm_id }}</h2>
<form method="post">
{% csrf_token %} {% if form.non_field_errors %}

View File

@ -11,7 +11,7 @@ urlpatterns = [
url(r'^$',
IndexAtmsView.as_view(),
name='atms_list'),
url(r'^update/(?P<atm_id>[0-9\w\@\.\+-]+)/bank/(?P<bank_id>[0-9\w\@\.\+-]+)/$',
url(r'^update/(?P<atm_id>[ 0-9\w|\W\@\.\+-]+)/bank/(?P<bank_id>[0-9\w\@\.\+-]+)/$',
UpdateAtmsView.as_view(),
name='atms_update')
]

View File

@ -42,44 +42,44 @@ class IndexAtmsView(LoginRequiredMixin, FormView):
fields['lobby'].initial = json.dumps({
"monday": [
{
"opening_time": "10:00",
"closing_time": "18:00"
"opening_time": "",
"closing_time": ""
}
],
"tuesday": [
{
"opening_time": "10:00",
"closing_time": "18:00"
"opening_time": "",
"closing_time": ""
}
],
"wednesday": [
{
"opening_time": "10:00",
"closing_time": "18:00"
"opening_time": "",
"closing_time": ""
}
],
"thursday": [
{
"opening_time": "10:00",
"closing_time": "18:00"
"opening_time": "",
"closing_time": ""
}
],
"friday": [
{
"opening_time": "10:00",
"closing_time": "18:00"
"opening_time": "",
"closing_time": ""
}
],
"saturday": [
{
"opening_time": "10:00",
"closing_time": "18:00"
"opening_time": "",
"closing_time": ""
}
],
"sunday": [
{
"opening_time": "10:00",
"closing_time": "18:00"
"opening_time": "",
"closing_time": ""
}
]
}, indent=4)
@ -106,13 +106,13 @@ class IndexAtmsView(LoginRequiredMixin, FormView):
data = form.cleaned_data
urlpath = '/banks/{}/atms'.format(data['bank_id'])
payload ={
"id": data["atm_id"],
"id": data["atm_id"],
"bank_id": data["bank_id"],
"name": data["name"],
"address": json.loads(data['address']),
"location": {
"latitude": float(data["location_latitude"]) if data["location_latitude"] is not None else 37.0,
"longitude": float(data["location_longitude"]) if data["location_longitude"] is not None else 110.0
"latitude": float(data["location_latitude"]) if data["location_latitude"] is not None else "",
"longitude": float(data["location_longitude"]) if data["location_longitude"] is not None else ""
},
"meta": {
"license": {
@ -121,32 +121,32 @@ class IndexAtmsView(LoginRequiredMixin, FormView):
}
},
"monday": {
"opening_time": "10:00",
"closing_time": "18:00"
"opening_time": "",
"closing_time": ""
},
"tuesday": {
"opening_time": "10:00",
"closing_time": "18:00"
"opening_time": "",
"closing_time": ""
},
"wednesday": {
"opening_time": "10:00",
"closing_time": "18:00"
"opening_time": "",
"closing_time": ""
},
"thursday": {
"opening_time": "10:00",
"closing_time": "18:00"
"opening_time": "",
"closing_time": ""
},
"friday": {
"opening_time": "10:00",
"closing_time": "18:00"
"opening_time": "",
"closing_time": ""
},
"saturday": {
"opening_time": "10:00",
"closing_time": "18:00"
"opening_time": "",
"closing_time": ""
},
"sunday": {
"opening_time": "10:00",
"closing_time": "18:00"
"opening_time": "",
"closing_time": ""
},
"is_accessible": data["is_accessible"] if data["is_accessible"]!="" else "false",
"located_at": data["located_at"] if data["located_at"]!="no-example-provided" else " ",
@ -275,27 +275,26 @@ class UpdateAtmsView(LoginRequiredMixin, FormView):
fields['located_at'].initial = result['located_at']
fields['more_info'].initial = result['more_info']
fields['located_at'].initial = result['located_at']
fields['lobby'].initial = json.dumps(result['lobby'], indent=4)
if result['supported_languages'].lower()=='en':
if result['supported_languages'][0].lower()=='en':
fields['supported_languages'].choices = [("en", "en"), ("fr", "fr"), ("de", "de")]
elif result['supported_languages'].lower()=='fr':
elif result['supported_languages'][0].lower()=='fr':
fields['supported_languages'].choices = [("fr", "fr"), ("en", "en"), ("de", "de")]
else:
fields['supported_languages'].choices = [("de", "de"),("fr", "fr"), ("en", "en")]
fields['supported_languages'].initial = result['supported_languages']
if result['supported_currencies'].lower()=='eur':
if result['supported_currencies'][0].lower()=='eur':
fields['supported_currencies'].choices = [("EUR", "EUR"), ("MXN", "MXN"), ("USD", "USD")]
elif result['supported_currencies'].lower()=='mxn':
elif result['supported_currencies'][0].lower()=='mxn':
fields['supported_currencies'].choices = [("MXN", "MXN"), ("EUR", "EUR"), ("USD", "USD")]
else:
fields['supported_currencies'].choices = [("USD", "USD"),("MXN", "MXN"), ("EUR", "EUR")]
fields['supported_currencies'].initial = result['supported_currencies']
if result['notes'].lower()=='string1':
if result['notes'][0].lower()=='string1':
fields['notes'].choices = [("String1", "String1"),("String2", "String2")]
else:
fields['notes'].choices = [("String2", "String2"),("String1", "String1")]
fields['notes'].initial = result['notes']
if result['location_categories'].lower()=='atbi':
if result['location_categories'][0].lower()=='atbi':
fields['location_categories'].choices = [("ATBI", "ATBI"),("ATBE", "ATBE")]
else:
fields['location_categories'].choices = [("ATBE", "ATBE"),("ATBI", "ATBI")]
@ -309,48 +308,76 @@ class UpdateAtmsView(LoginRequiredMixin, FormView):
data = form.cleaned_data
urlpath = '/banks/{}/atms/{}'.format(data["bank_id"],data["atm_id"])
payload = {
#"id": data["atm_id"],
"id": data["atm_id"],
"bank_id": data["bank_id"],
"name": data["name"],
"address": json.loads(data['address']),
"location": {
"latitude": float(data["location_latitude"]),
"longitude": float(data["location_longitude"])
"latitude": float(data["location_latitude"]) if data["location_latitude"] is not None else "",
"longitude": float(data["location_longitude"]) if data["location_longitude"] is not None else ""
},
"meta": {
"license": {
"id": data["meta_license_id"],
"name": data["meta_license_name"]
"id": "ODbL-1.0",
"name": data["meta_license_name"] if data["meta_license_name"]!="" else "license name"
}
},
"has_deposit_capability": data["has_deposit_capability"],
"accessibility_features": data["accessibility_features"],
"minimum_withdrawal": data["minimum_withdrawal"],
"branch_identification": data["branch_identification"],
"site_identification": data["site_identification"],
"site_name": data["site_name"],
"cash_withdrawal_national_fee": data["cash_withdrawal_national_fee"],
"cash_withdrawal_international_fee": data["cash_withdrawal_international_fee"],
"balance_inquiry_fee": data["balance_inquiry_fee"],
"services": data["services"],
"more_info": data["more_info"],
"located_at": data["located_at"],
"phone_number": data["phone_number"],
"supported_languages": data["supported_languages"],
"supported_currencies": data["supported_currencies"],
"notes": data["notes"],
"location_categories": data["location_categories"]
"monday": {
"opening_time": "",
"closing_time": ""
},
"tuesday": {
"opening_time": "10:00",
"closing_time": "18:00"
},
"wednesday": {
"opening_time": "10:00",
"closing_time": "18:00"
},
"thursday": {
"opening_time": "10:00",
"closing_time": "18:00"
},
"friday": {
"opening_time": "10:00",
"closing_time": "18:00"
},
"saturday": {
"opening_time": "10:00",
"closing_time": "18:00"
},
"sunday": {
"opening_time": "10:00",
"closing_time": "18:00"
},
"is_accessible": data["is_accessible"] if data["is_accessible"]!="" else "false",
"located_at": data["located_at"] if data["located_at"]!="no-example-provided" else " ",
"more_info": data["more_info"] if data["more_info"]!="" else "false",
"has_deposit_capability": data["has_deposit_capability"] if data["has_deposit_capability"]!="" else "false",
"supported_languages":[data["supported_languages"]],
"services":[data["services"]],
"accessibility_features":[data["accessibility_features"]],
"supported_currencies":[data["supported_currencies"]],
"notes":[data["notes"]],
"location_categories":[data["location_categories"]],
"minimum_withdrawal": data["minimum_withdrawal"] if data["minimum_withdrawal"]!="" else "false",
"branch_identification": data["branch_identification"] if data["branch_identification"]!="" else "false",
"site_identification": data["site_identification"] if data["site_identification"]!="" else "false",
"site_name": data["site_name"] if data["site_name"]!="" else "false",
"cash_withdrawal_national_fee": data["cash_withdrawal_national_fee"] if data["cash_withdrawal_national_fee"]!="" else "false",
"cash_withdrawal_international_fee": data["cash_withdrawal_international_fee"] if data["cash_withdrawal_international_fee"]!="" else "false",
"balance_inquiry_fee": data["balance_inquiry_fee"] if data["balance_inquiry_fee"]!="" else "false",
}
try:
result = self.api.put(urlpath, payload=payload)
if 'code' in result and result['code']>=400:
error_once_only(self.request, result['message'])
messages.error(self.request, result['message'])
return super(UpdateAtmsView, self).form_invalid(form)
except APIError as err:
messages.error(self.request, err)
return super(UpdateAtmsView, self).form_invalid(form)
except:
messages.error(self.request, "Unknown Error")
except Exception as e:
messages.error(self.request, e)
return super(UpdateAtmsView, self).form_invalid(form)
msg = 'Atm {} for Bank {} has been created successfully!'.format( # noqa
data["atm_id"], data["bank_id"])

View File

@ -2,144 +2,151 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="An application consuming the Open Bank Project API to manage consumers, users, customers, metrics and config">
<meta name="author" content="TESOBE, Sebastian Henschel">
<title>{% block page_title %}API Manager{% endblock page_title %}</title>
<link rel="icon" type="image/png" href="{% static 'img/favicon.ico' %}" />
<link href="{% static 'css/bootstrap.min.css' %}" rel="stylesheet">
<link href="{% static 'css/base.css' %}" rel="stylesheet">
<link href="{% static 'css/jsoneditor.min.css' %}" rel="stylesheet">
<link href="{% static 'css/obpjsoneditor.css' %}" rel="stylesheet">
<link href="{{ override_css_url }}" rel="stylesheet">
{% block extracss %}{% endblock extracss %}
</head>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="An application consuming the Open Bank Project API to manage consumers, users, customers, metrics and config">
<meta name="author" content="TESOBE, Sebastian Henschel">
<title>{% block page_title %} {% trans "API Manager" %}{% endblock page_title %}</title>
<link rel="icon" type="image/png" href="{% static 'img/favicon.ico' %}" />
<link href="{% static 'css/bootstrap.min.css' %}" rel="stylesheet">
<link href="{% static 'css/base.css' %}" rel="stylesheet">
<link href="{% static 'css/jsoneditor.min.css' %}" rel="stylesheet">
<link href="{% static 'css/obpjsoneditor.css' %}" rel="stylesheet">
<link href="{{ override_css_url }}" rel="stylesheet">
{% block extracss %}{% endblock extracss %}
</head>
<body>
<div class="container">
<div id="header" >
<div id="logo-left" class="logo-box">
<a href="{% url 'home' %}" aria-label="Home Page" id="left-logo"><img src="{{ logo_url }}" alt="brand"></a>
<ul class="nav navbar-nav navbar-right">
<li>
{% if user.is_authenticated %}
<p class="navbar-btn"><span id="navbar-login-username">{{API_USERNAME}}</span>&nbsp;&nbsp;<a
href="/logout" class="btn btn-default">Logout </a></p>
{% endif %}
</li>
</ul>
</div>
</div>
</div>
<nav class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<div id="navbar" class="collapse navbar-collapse">
<ul class="nav navbar-nav">
<li><a href="{{ API_PORTAL }}" >{% trans "Home" %}</a></li>
{% url "consumers-index" as consumers_index_url %}
<li{% if consumers_index_url in request.path %} class="active"{% endif %}><a href="{{ consumers_index_url }}">{% trans "Consumers" %}</a></li>
{% url "entitlementrequests-index" as entitlementrequests_index_url %}
<li{% if entitlementrequests_index_url in request.path %} class="active"{% endif %}><a href="{{ entitlementrequests_index_url }}">{% trans "Entitlement Requests" %}</a></li>
{% url "users-index" as users_index_url %}
{% url 'my-user-detail' API_USER_ID as url_users_detail %}
{% url "my-user-invitation" as my_user_invitation %}
<li class="dropdown{% if users_index_url in request.path or url_users_detail in request.path or my_user_invitation in request.path %} active{% endif %}">
<a href="#" data-toggle="dropdown" class="dropdown-toggle">{% trans "Users" %}</a>
<ul class="dropdown-menu">
<li{% if users_index_url in request.path %} class="active"{% endif %}><a href="{{ users_index_url }}">{% trans "All" %}</a></li><hr class="dropdown-hr">
<li{% ifequal request.path url_users_detail %} class="active" {% endifequal %}><a href="{{ url_users_detail }}">{% trans "My User" %}</a></li><hr class="dropdown-hr">
<li{% ifequal request.path my_user_invitation %} class="active" {% endifequal %}><a href="{{ my_user_invitation }}">{% trans "Invite Developer" %}</a></li>
</ul>
</li>
{% url "api-metrics" as api_metrics_url %}
{% url "connector-metrics" as connector_metrics_url %}
{% url "metrics-summary" as metrics_summary_url %}
<li class="dropdown{% if api_metrics_url in request.path or connector_metrics_url in request.path or metrics_summary_url in request.path %} active{% endif %}">
<a href="#" data-toggle="dropdown" class="dropdown-toggle">{% trans "Metrics" %}</a>
<ul class="dropdown-menu">
<li{% if api_metrics_url in request.path %} class="active"{% endif %}><a href="{{ api_metrics_url }}">{% trans "API Metrics" %}</a></li><hr class="dropdown-hr">
<li{% if connector_metrics_url in request.path %} class="active"{% endif %}><a href="{{ connector_metrics_url }}">{% trans "Connector Metrics" %}</a></li><hr class="dropdown-hr">
<li{% if metrics_summary_url in request.path %} class="active"{% endif %}><a href="{{ metrics_summary_url }}">{% trans "KPI Dashboard" %}</a></li>
</ul>
</li>
{% url "branches_list" as branches_list_url %}
{% url "customers-create" as customers_create_url %}
{% url "atms_list" as atms_list_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 customers_create_url in request.path %} class="active"{% endif %}><a href="{{ customers_create_url }}">{% trans "Customers" %}</a></li><hr class="dropdown-hr">
<li{% if branches_list_url in request.path %} class="active"{% endif %}><a href="{{ branches_list_url }}">{% trans "Branches" %}</a></li>
<li{% if atms_list_url in request.path %} class="active"{% endif %}><a href="{{ atms_list_url }}">{% trans "ATMs" %}</a></li>
</ul>
</li>
{% url "config-index" as config_index_url %}
{% url "webui-index" as webui_props_index_url %}
{% url "methodrouting-index" as methodrouting_index_url %}
{% url "dynamicendpoints-index" as dynamic_endpoints_index_url %}
{% url "apicollections-index" as api_collections_index_url %}
<li class="dropdown{% if config_index_url in request.path %} active{% endif %}">
<a href="#" data-toggle="dropdown" class="dropdown-toggle">{% trans "Configurations" %}</a>
<ul class="dropdown-menu">
<li{% if config_index_url in request.path %} class="active"{% endif %}><a href="{{ config_index_url }}">{% trans "Config" %}</a></li><hr class="dropdown-hr">
<li{% if webui_props_index_url in request.path %} class="active"{% endif %}><a href="{{ webui_props_index_url }}">{% trans "Webui Props" %}</a></li><hr class="dropdown-hr">
<li{% if methodrouting_index_url in request.path %} class="active"{% endif %}><a href="{{ methodrouting_index_url }}">{% trans "Method Routings" %}</a></li><hr class="dropdown-hr">
<li{% if dynamic_endpoints_index_url in request.path %} class="active"{% endif %}><a href="{{ dynamic_endpoints_index_url }}">{% trans "Dynamic Endpoints" %}</a></li><hr class="dropdown-hr">
<li{% if api_collections_index_url in request.path %} class="active"{% endif %}><a href="{{ api_collections_index_url }}">{% trans "My API Collections" %}</a></li>
</ul>
</li>
<div class="container">
<div id="header" >
<div id="logo-left" class="logo-box">
<a href="{% url 'home' %}" aria-label="Home Page" id="left-logo"><img src="{{ logo_url }}" alt="brand"></a>
<ul class="nav navbar-nav navbar-right">
<li>
{% if user.is_authenticated %}
<p class="navbar-btn"><span id="navbar-login-username">{{API_USERNAME}}</span>&nbsp;&nbsp;<a
href="/logout" class="btn btn-default">Logout </a></p>
{% endif %}
</li>
</ul>
</div>
</div>
</div>
<nav class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<div id="navbar" class="collapse navbar-collapse">
<ul class="nav navbar-nav">
<li><a href="{{ API_PORTAL }}" >{% trans "Home" %}</a></li>
{% url "consumers-index" as consumers_index_url %}
<li{% if consumers_index_url in request.path %} class="active"{% endif %}><a href="{{ consumers_index_url }}">{% trans "Consumers" %}</a></li>
{% url "entitlementrequests-index" as entitlementrequests_index_url %}
<li{% if entitlementrequests_index_url in request.path %} class="active"{% endif %}><a href="{{ entitlementrequests_index_url }}">{% trans "Entitlement Requests" %}</a></li>
{% url "users-index" as users_index_url %}
{% url 'my-user-detail' API_USER_ID as url_users_detail %}
{% url "my-user-invitation" as my_user_invitation %}
<li class="dropdown{% if users_index_url in request.path or url_users_detail in request.path or my_user_invitation in request.path %} active{% endif %}">
<a href="#" data-toggle="dropdown" class="dropdown-toggle">{% trans "Users" %}</a>
<ul class="dropdown-menu">
<li{% if users_index_url in request.path %} class="active"{% endif %}><a href="{{ users_index_url }}">{% trans "All" %}</a></li><hr class="dropdown-hr">
<li{% ifequal request.path url_users_detail %} class="active" {% endifequal %}><a href="{{ url_users_detail }}">{% trans "My User" %}</a></li><hr class="dropdown-hr">
<li{% ifequal request.path my_user_invitation %} class="active" {% endifequal %}><a href="{{ my_user_invitation }}">{% trans "Invite Developer" %}</a></li>
</ul>
</li>
{% url "api-metrics" as api_metrics_url %}
{% url "connector-metrics" as connector_metrics_url %}
{% url "metrics-summary" as metrics_summary_url %}
<li class="dropdown{% if api_metrics_url in request.path or connector_metrics_url in request.path or metrics_summary_url in request.path %} active{% endif %}">
<a href="#" data-toggle="dropdown" class="dropdown-toggle">{% trans "Metrics" %}</a>
<ul class="dropdown-menu">
<li{% if api_metrics_url in request.path %} class="active"{% endif %}><a href="{{ api_metrics_url }}">{% trans "API Metrics" %}</a></li><hr class="dropdown-hr">
<li{% if connector_metrics_url in request.path %} class="active"{% endif %}><a href="{{ connector_metrics_url }}">{% trans "Connector Metrics" %}</a></li><hr class="dropdown-hr">
<li{% if metrics_summary_url in request.path %} class="active"{% endif %}><a href="{{ metrics_summary_url }}">{% trans "KPI Dashboard" %}</a></li>
</ul>
</li>
{% url "branches_list" as branches_list_url %}
{% url "customers-create" as customers_create_url %}
{% url "atms_list" as atms_list_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 customers_create_url in request.path %} class="active"{% endif %}><a href="{{ customers_create_url }}">{% trans "Customers" %}</a></li><hr class="dropdown-hr">
<li{% if branches_list_url in request.path %} class="active"{% endif %}><a href="{{ branches_list_url }}">{% trans "Branches" %}</a></li>
<li{% if atms_list_url in request.path %} class="active"{% endif %}><a href="{{ atms_list_url }}">{% trans "ATMs" %}</a></li>
</ul>
</li>
{% url "config-index" as config_index_url %}
{% url "webui-index" as webui_props_index_url %}
{% url "methodrouting-index" as methodrouting_index_url %}
{% url "dynamicendpoints-index" as dynamic_endpoints_index_url %}
{% url "apicollections-index" as api_collections_index_url %}
<li class="dropdown{% if config_index_url in request.path %} active{% endif %}">
<a href="#" data-toggle="dropdown" class="dropdown-toggle">{% trans "Configurations" %}</a>
<ul class="dropdown-menu">
<li{% if config_index_url in request.path %} class="active"{% endif %}><a href="{{ config_index_url }}">{% trans "Config" %}</a></li><hr class="dropdown-hr">
<li{% if webui_props_index_url in request.path %} class="active"{% endif %}><a href="{{ webui_props_index_url }}">{% trans "Webui Props" %}</a></li><hr class="dropdown-hr">
<li{% if methodrouting_index_url in request.path %} class="active"{% endif %}><a href="{{ methodrouting_index_url }}">{% trans "Method Routings" %}</a></li><hr class="dropdown-hr">
<li{% if dynamic_endpoints_index_url in request.path %} class="active"{% endif %}><a href="{{ dynamic_endpoints_index_url }}">{% trans "Dynamic Endpoints" %}</a></li><hr class="dropdown-hr">
<li{% if api_collections_index_url in request.path %} class="active"{% endif %}><a href="{{ api_collections_index_url }}">{% trans "My API Collections" %}</a></li>
</ul>
</li>
{% if API_TESTER_URL %}
<li>
<p class="navbar-btn"><a href="{{ API_TESTER_URL }}" class="btn btn-default">Go to API Tester</a></p>
</li>
<li>
<p class="navbar-btn"><a href="{{ API_TESTER_URL }}" class="btn btn-default">Go to API Tester</a></p>
</li>
{% endif %}
</ul>
</div><!--/.nav-collapse -->
</div>
</nav>
</ul>
</div><!--/.nav-collapse -->
</div>
</nav>
{% if messages %}
<div class="container messages">
<div class="container messages">
{% for message in messages %}
<div class="alert alert-dismissible{% ifequal message.tags "error" %} alert-danger{% else %}{% ifequal message.tags "debug" %} alert-info{% else %} alert-{{ message.tags }}{% endifequal %}{% endifequal %}" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
{{ message }}
</div>
{% endfor %}
</div>
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
{{ message }}
</div>
{% endfor %}
</div>
{% endif %}
<div class="container" id="body-container">
{% block content %}{% endblock content %}
<div class="container" id="body-container">
{% block content %}{% endblock content %}
<div class="footer-content-wrapper" data-lift="WebUI.homePage">
<span>Language </span>
<span> | </span>
<a id="uk" href="/en" >EN</a>
<span> | </span>
<a id="es" href="/es" >ES</a>
</div>
</div>
<footer>
<div class="container">
<p class="text-muted">
<a title="API ROOT" href="{{ API_ROOT }}">API ROOT: {{ API_ROOT }}</a> |
<a title="Open Bank Project" href="https://openbankproject.com">Open Bank Project</a> |
Powered by <a title="TESOBE" href="http://tesobe.com">TESOBE</a> |
<small>Copyright &copy; 2016 - 2020</small>
</p>
</div>
</footer>
<footer>
<div class="container">
<p class="text-muted">
<a title="API ROOT" href="{{ API_ROOT }}">API ROOT: {{ API_ROOT }}</a> |
<a title="Open Bank Project" href="https://openbankproject.com">Open Bank Project</a> |
Powered by <a title="TESOBE" href="http://tesobe.com">TESOBE</a> |
<small>Copyright &copy; 2016 - 2020</small>
</p>
</div>
</footer>
<script type="text/javascript" src="{% static 'js/jquery.min.js' %}"></script>
<script type="text/javascript" src="{% static 'js/bootstrap.min.js' %}"></script>
<script type="text/javascript" src="{% static 'js/jquery.tablesorter.min.js' %}"></script>
<script src="{% static 'js/base.js' %}"></script>
<script type="text/javascript" src="{% static 'js/jsoneditor.min.js' %}"></script>
<script type="text/javascript" src="{% static 'js/jquery.min.js' %}"></script>
<script type="text/javascript" src="{% static 'js/bootstrap.min.js' %}"></script>
<script type="text/javascript" src="{% static 'js/jquery.tablesorter.min.js' %}"></script>
<script src="{% static 'js/base.js' %}"></script>
<script type="text/javascript" src="{% static 'js/jsoneditor.min.js' %}"></script>
{% block extrajs %}{% endblock extrajs %}
</body>
</html>

View File

@ -1,70 +1,70 @@
{% extends 'base.html' %}
{% load i18n %}
{% block content %}
<div class="home">
<h1>{% trans "Welcome to API Manager" %}</h1>
<div class="home">
<h1>{% trans "Welcome to API Manager" %}</h1>
<!--<h1>Welcome to API Manager</h1>-->
<div class="well" id="intro">
<p>
This app gives you access to management functionality for the sandbox at <a href="{{ API_HOST }}">{{ API_HOST }}</a>. You have to <a href="{{ API_HOST }}/user_mgt/sign_up" title="Register at {{ API_HOST }}">register</a> an account before being able to proceed. The logged-in user needs to have specific roles granted to use the functionality.
</p>
</div>
<!--<h1>Welcome to API Manager</h1>-->
<div class="well" id="intro">
<p>
{% trans "This app gives you access to management functionality for the OBP instance at" %} <a href="{{ API_HOST }}">{{ API_HOST }}</a>. {% trans "You have to" %}<a href="{{ API_HOST }}/user_mgt/sign_up" title="Register at {{ API_HOST }}"> {% trans "register" %} </a> {% trans "an account before being able to proceed" %}.{% trans "The logged-in user needs to have specific roles granted to use the functionality." %}
</p>
</div>
{% if not user.is_authenticated %}
<div id="login">
<label for="authentication-select"><h2>Authenticate</h2></label>
<div class="row">
<div class="col-xs-12 col-sm-3">
<select class="form-control" id="authentication-select">
<option value="">Choose ...</option>
<option value="oauth">OAuth 1/OpenID Connect</option>
<option value="directlogin">DirectLogin</option>
<option value="gatewaylogin">GatewayLogin</option>
</select>
<div id="login">
<label for="authentication-select"><h2>Authenticate</h2></label>
<div class="row">
<div class="col-xs-12 col-sm-3">
<select class="form-control" id="authentication-select">
<option value="">Choose ...</option>
<option value="oauth">OAuth 1/OpenID Connect</option>
<option value="directlogin">DirectLogin</option>
<option value="gatewaylogin">GatewayLogin</option>
</select>
</div>
<div class="col-xs-12 col-sm-9">
<div class="authentication-method" id="authenticate-oauth">
<a class="btn btn-primary" href="{% url 'oauth-initiate' %}{% if request.GET.next %}?next={{ request.GET.next }}{% endif %}">Proceed to authentication server</a>
</div>
<div class="authentication-method" id="authenticate-directlogin">
<form action="{% url 'directlogin' %}" method="post">
{% csrf_token %}
<div class="form-group">
<label for="username">Username:</label>
{{ directlogin_form.username }}
</div>
<div class="form-group">
<label for="password">Password:</label>
{{ directlogin_form.password }}
</div>
<!--<div class="form-group"style="visibility:hidden">
<label for="consumer-key">Consumer Key:</label>
{{ directlogin_form.consumer_key }}
</div>-->
<button class="btn btn-primary">Login</button>
</form>
</div>
<div class="authentication-method" id="authenticate-gatewaylogin">
<form action="{% url 'gatewaylogin' %}" method="post">
{% csrf_token %}
<div class="form-group">
<label for="username">Username:</label>
{{ gatewaylogin_form.username }}
</div>
<div class="form-group">
<label for="secret">Secret:</label>
{{ gatewaylogin_form.secret }}
</div>
<button class="btn btn-primary">Login</button>
</form>
<div class="col-xs-12 col-sm-9">
<div class="authentication-method" id="authenticate-oauth">
<a class="btn btn-primary" href="{% url 'oauth-initiate' %}{% if request.GET.next %}?next={{ request.GET.next }}{% endif %}">Proceed to authentication server</a>
</div>
<div class="authentication-method" id="authenticate-directlogin">
<form action="{% url 'directlogin' %}" method="post">
{% csrf_token %}
<div class="form-group">
<label for="username">Username:</label>
{{ directlogin_form.username }}
</div>
<div class="form-group">
<label for="password">Password:</label>
{{ directlogin_form.password }}
</div>
<!--<div class="form-group"style="visibility:hidden">
<label for="consumer-key">Consumer Key:</label>
{{ directlogin_form.consumer_key }}
</div>-->
<button class="btn btn-primary">Login</button>
</form>
</div>
<div class="authentication-method" id="authenticate-gatewaylogin">
<form action="{% url 'gatewaylogin' %}" method="post">
{% csrf_token %}
<div class="form-group">
<label for="username">Username:</label>
{{ gatewaylogin_form.username }}
</div>
<div class="form-group">
<label for="secret">Secret:</label>
{{ gatewaylogin_form.secret }}
</div>
<button class="btn btn-primary">Login</button>
</form>
</div>
</div>
</div>
</div>
</div>
{% endif %}
</div>
{% endblock %}
</div>
{% endblock %}

View File

@ -1,11 +1,12 @@
{% extends 'base.html' %}
{% load static %}
{% load i18n %}
{% block page_title %}{{ block.super }} / Branches{% endblock page_title %}
{% block content %}
<div id="branches_list">
<h1>Branches</h1>
<h1>{% trans "Branches" %}</h1>
<form method="post">
{% csrf_token %}
@ -14,26 +15,25 @@
{{ form.non_field_errors }}
</div>
{% endif %}
<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 }}
<strong>{% trans "Branch_Id" %}</strong>
{{ form.branch_id }}
</div>
</div>
<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 }}
<strong>{% trans "bank_id" %} </strong>
{{ form.bank_id }}
</div>
</div>
<div class="col-xs-12 col-sm-4">
{% if form.name.errors %}<div class="alert alert-danger">{{ form.name.errors }}</div>{% endif %}
<div class="form-group">
{{ form.name.label_tag }}
<strong>{% trans "name" %} </strong>
{{ form.name }}
</div>
</div>
@ -43,21 +43,21 @@
<div class="col-xs-12 col-sm-4">
{% if form.branch_type.errors %}<div class="alert alert-danger">{{ form.branch_type.errors }}</div>{% endif %}
<div class="form-group">
{{ form.branch_type.label_tag }}
<strong>{% trans "branch_type" %} </strong>
{{ form.branch_type }}
</div>
</div>
<div class="col-xs-12 col-sm-4">
{% if form.location_latitude.errors %}<div class="alert alert-danger">{{ form.location_latitude.errors }}</div>{% endif %}
<div class="form-group">
{{ form.location_latitude.label_tag }}
<strong>{% trans "location_latitude" %} </strong>
{{ form.location_latitude }}
</div>
</div>
<div class="col-xs-12 col-sm-4">
{% if form.location_longitude.errors %}<div class="alert alert-danger">{{ form.location_longitude.errors }}</div>{% endif %}
<div class="form-group">
{{ form.location_longitude.label_tag }}
<strong>{% trans "location_longitude" %} </strong>
{{ form.location_longitude }}
</div>
</div>
@ -67,21 +67,21 @@
<div class="col-xs-12 col-sm-4">
{% if form.meta_license_name.errors %}<div class="alert alert-danger">{{ form.meta_license_name.errors }}</div>{% endif %}
<div class="form-group">
{{ form.meta_license_name.label_tag }}
<strong>{% trans "meta_license_name" %} </strong>
{{ form.meta_license_name }}
</div>
</div>
<div class="col-xs-12 col-sm-4">
{% if form.branch_routing_scheme.errors %}<div class="alert alert-danger">{{ form.branch_routing_scheme.errors }}</div>{% endif %}
<div class="form-group">
{{ form.branch_routing_scheme.label_tag }}
<strong>{% trans "branch_routing_scheme" %} </strong>
{{ form.branch_routing_scheme }}
</div>
</div>
<div class="col-xs-12 col-sm-4">
{% if form.branch_routing_address.errors %}<div class="alert alert-danger">{{ form.branch_routing_address.errors }}</div>{% endif %}
<div class="form-group">
{{ form.branch_routing_address.label_tag }}
<strong>{% trans "branch_routing_address" %} </strong>
{{ form.branch_routing_address }}
</div>
</div>
@ -91,21 +91,21 @@
<div class="col-xs-12 col-sm-4">
{% if form.is_accessible.errors %}<div class="alert alert-danger">{{ form.is_accessible.errors }}</div>{% endif %}
<div class="form-group">
{{ form.is_accessible.label_tag }}
<strong>{% trans "is_accessible" %} </strong>
{{ form.is_accessible }}
</div>
</div>
<div class="col-xs-12 col-sm-4">
{% if form.accessibleFeatures.errors %}<div class="alert alert-danger">{{ form.accessibleFeatures.errors }}</div>{% endif %}
<div class="form-group">
{{ form.accessibleFeatures.label_tag }}
<strong>{% trans "accessibleFeatures" %} </strong>
{{ form.accessibleFeatures }}
</div>
</div>
<div class="col-xs-12 col-sm-4">
{% if form.more_info.errors %}<div class="alert alert-danger">{{ form.more_info.errors }}</div>{% endif %}
<div class="form-group">
{{ form.more_info.label_tag }}
<strong>{% trans "more_info" %} </strong>
{{ form.more_info }}
</div>
</div>
@ -115,7 +115,7 @@
<div class="col-xs-12 col-sm-4">
{% if form.phone_number.errors %}<div class="alert alert-danger">{{ form.phone_number.errors }}</div>{% endif %}
<div class="form-group">
{{ form.phone_number.label_tag }}
<strong>{% trans "phone_number" %} </strong>
{{ form.phone_number }}
</div>
</div>
@ -125,21 +125,21 @@
<div class="col-xs-12 col-sm-4">
{% if form.address.errors %}<div class="alert alert-danger">{{ form.address.errors }}</div>{% endif %}
<div class="form-group">
{{ form.address.label_tag }}
<strong>{% trans "address" %} </strong>
{{ form.address }}
</div>
</div>
<div class="col-xs-12 col-sm-4">
{% if form.lobby.errors %}<div class="alert alert-danger">{{ form.lobby.errors }}</div>{% endif %}
<div class="form-group">
{{ form.lobby.label_tag }}
<strong>{% trans "lobby" %} </strong>
{{ form.lobby }}
</div>
</div>
<div class="col-xs-12 col-sm-4">
{% if form.drive_up.errors %}<div class="alert alert-danger">{{ form.drive_up.errors }}</div>{% endif %}
<div class="form-group">
{{ form.drive_up.label_tag }}
<strong>{% trans "drive_up" %} </strong>
{{ form.drive_up }}
</div>
</div>
@ -148,7 +148,7 @@
<div class="row">
<div class="col-sm-12 hidden-xs">
<div class="form-group">
<button type="submit" class="btn btn-primary btn-green">Add</button>
<button type="submit" class="btn btn-primary btn-green">{% trans "Add" %}</button>
</div>
</div>
</div>
@ -157,11 +157,11 @@
<div class="table-responsive">
<table class="table table-hover tablesorter" id="branches-list" aria-describedby="branches list">
<thead>
<th scope="col">Branch Id</th>
<th scope="col">Bank Id</th>
<th scope="col">Branch Name</th>
<th scope="col">More_info</th>
<th scope="col">Update Button</th>
<th scope="col">{% trans "Branch Id" %}</th>
<th scope="col">{% trans "Bank Id" %}</th>
<th scope="col">{% trans "Branch Name" %}</th>
<th scope="col">{% trans "More_info" %}</th>
<th scope="col">{% trans "Update Button" %}</th>
</thead>
<tbody>
{% for branch in branches_list %}
@ -173,40 +173,40 @@
<td>
<div class="popuptext">
<ul>
<li>Address:
<li>{% trans "Address" %}:
<ul>
<li>line1: {{branch.address.line_1}}</li>
<li>line2: {{branch.address.line_2}}</li>
<li>line3: {{branch.address.line_3}}</li>
<li>city: {{branch.address.city}}</li>
<li>county: {{branch.address.county}}</li>
<li>state: {{branch.address.state}}</li>
<li>postcode: {{branch.address.postcode}}</li>
<li>country_code: {{branch.address.country_code}}</li>
<li>{% trans "line1" %}: {{branch.address.line_1}}</li>
<li>{% trans "line2" %}: {{branch.address.line_2}}</li>
<li>{% trans "line3" %}: {{branch.address.line_3}}</li>
<li>{% trans "city" %}: {{branch.address.city}}</li>
<li>{% trans "county" %}: {{branch.address.county}}</li>
<li>{% trans "state" %}: {{branch.address.state}}</li>
<li>{% trans "postcode" %}: {{branch.address.postcode}}</li>
<li>{% trans "country_code" %}: {{branch.address.country_code}}</li>
</ul>
</li>
<li>Location:
<li>{% trans "Location" %}:
<ul>
<li>latitude: {{branch.location.latitude}}</li>
<li>longitude: {{branch.location.longitude}}</li>
<li>{% trans "latitude" %}: {{branch.location.latitude}}</li>
<li>{% trans "longitude" %}: {{branch.location.longitude}}</li>
</ul>
</li>
<li>Meta License:
<li>{% trans "Meta License" %}:
<ul>
<li>id: {{branch.meta.license.id}}</li>
<li>name: {{branch.meta.license.name}}</li>
<li>{% trans "id" %}: {{branch.meta.license.id}}</li>
<li>{% trans "name" %}: {{branch.meta.license.name}}</li>
</ul>
</li>
<li>Branch Routing
<li>{% trans "Branch Routing" %}
<ul>
<li>Scheme: {{branch.branch_routing.scheme}}</li>
<li>Address: {{branch.branch_routing.address}}</li>
<li>{% trans "Scheme" %}: {{branch.branch_routing.scheme}}</li>
<li>{% trans "Address" %}: {{branch.branch_routing.address}}</li>
</ul>
</li>
<li>Branch Type: {{branch.branch_type}}</li>
<li>More Info: {{branch.more_info}}</li>
<li>Phone Number: {{branch.phone_number}}</li>
<li>Accessible Features: {{branch.accessibleFeatures}}</li>
<li>{% trans "Branch Type" %}: {{branch.branch_type}}</li>
<li>{% trans "More Info" %}: {{branch.more_info}}</li>
<li>{% trans "Phone Number" %}: {{branch.phone_number}}</li>
<li>{% trans "Accessible Features" %}: {{branch.accessibleFeatures}}</li>
</ul>
</div>
</td>

View File

@ -234,7 +234,6 @@ class UpdateBranchesView(LoginRequiredMixin, FormView):
urlpath = "/banks/{}/branches/{}".format(self.kwargs['bank_id'], self.kwargs['branch_id'])
try:
fields['bank_id'].choices = self.api.get_bank_id_choices()
except APIError as err:
messages.error(self.request, err)
except:
@ -265,9 +264,7 @@ class UpdateBranchesView(LoginRequiredMixin, FormView):
messages.error(self.request, err)
except Exception as err:
messages.error(self.request, "Unknown Error {}".format(err))
return form
def form_valid(self, form):
data = form.cleaned_data
urlpath = '/banks/{}/branches/{}'.format(data["bank_id"], data["branch_id"])

View File

@ -1,3 +1,4 @@
<a href="?app_type=Web&time={{ request.GET.time }}&enabled={{ request.GET.enabled }}" class="btn btn-default{% if active_app_type_Web %} active{% endif %}">Web</a>
<a href="?app_type=Mobile&time={{ request.GET.time }}&enabled={{ request.GET.enabled }}" class="btn btn-default{% if active_app_type_Mobile %} active{% endif %}">Mobile</a>
<a href="?app_type=All&time={{ request.GET.time }}&enabled={{ request.GET.enabled }}" class="btn btn-default{% if active_app_type_all %} active{% endif %}">All</a>
{% load i18n %}
<a href="?app_type=Web&time={{ request.GET.time }}&enabled={{ request.GET.enabled }}" class="btn btn-default{% if active_app_type_Web %} active{% endif %}">{% trans "Web" %}</a>
<a href="?app_type=Mobile&time={{ request.GET.time }}&enabled={{ request.GET.enabled }}" class="btn btn-default{% if active_app_type_Mobile %} active{% endif %}">{% trans "Mobile" %}</a>
<a href="?app_type=All&time={{ request.GET.time }}&enabled={{ request.GET.enabled }}" class="btn btn-default{% if active_app_type_all %} active{% endif %}">{% trans "All" %}</a>

View File

@ -1,3 +1,4 @@
<a href="?enabled=true&app_type={{ request.GET.app_type }}&time={{ request.GET.time }}" class="btn btn-default{% if active_enabled_true %} active{% endif %}">Enabled</a>
<a href="?enabled=false&app_type={{ request.GET.app_type }}&time={{ request.GET.time }}" class="btn btn-default{% if active_enabled_false %} active{% endif %}">Disabled</a>
<a href="?enabled=All&app_type={{ request.GET.app_type }}&time={{ request.GET.time }}" class="btn btn-default{% if active_enabled_all %} active{% endif %}">All</a>
{% load i18n %}
<a href="?enabled=true&app_type={{ request.GET.app_type }}&time={{ request.GET.time }}" class="btn btn-default{% if active_enabled_true %} active{% endif %}">{% trans "Enabled" %}</a>
<a href="?enabled=false&app_type={{ request.GET.app_type }}&time={{ request.GET.time }}" class="btn btn-default{% if active_enabled_false %} active{% endif %}">{% trans "Disabled" %}</a>
<a href="?enabled=All&app_type={{ request.GET.app_type }}&time={{ request.GET.time }}" class="btn btn-default{% if active_enabled_all %} active{% endif %}">{% trans "All" %}</a>

View File

@ -1,6 +1,7 @@
<a href="?time=hour&app_type={{ request.GET.app_type }}&enabled={{ request.GET.enabled }}" class="btn btn-default{% if active_time_hour %} active{% endif %}">Last Hour</a>
<a href="?time=day&app_type={{ request.GET.app_type }}&enabled={{ request.GET.enabled }}" class="btn btn-default{% if active_time_day %} active{% endif %}">Last Day</a>
<a href="?time=week&app_type={{ request.GET.app_type }}&enabled={{ request.GET.enabled }}" class="btn btn-default{% if active_time_week %} active{% endif %}">Last Week</a>
<a href="?time=month&app_type={{ request.GET.app_type }}&enabled={{ request.GET.enabled }}" class="btn btn-default{% if active_time_month %} active{% endif %}">Last Month</a>
<a href="?time=year&app_type={{ request.GET.app_type }}&enabled={{ request.GET.enabled }}" class="btn btn-default{% if active_time_year %} active{% endif %}">Last Year</a>
<a href="?time=All&app_type={{ request.GET.app_type }}&enabled={{ request.GET.enabled }}" class="btn btn-default{% if active_time_all %} active{% endif %}">All</a>
{% load i18n %}
<a href="?time=hour&app_type={{ request.GET.app_type }}&enabled={{ request.GET.enabled }}" class="btn btn-default{% if active_time_hour %} active{% endif %}">{% trans "Last Hour" %}</a>
<a href="?time=day&app_type={{ request.GET.app_type }}&enabled={{ request.GET.enabled }}" class="btn btn-default{% if active_time_day %} active{% endif %}">{% trans "Last Day" %}</a>
<a href="?time=week&app_type={{ request.GET.app_type }}&enabled={{ request.GET.enabled }}" class="btn btn-default{% if active_time_week %} active{% endif %}">{% trans "Last Week" %}</a>
<a href="?time=month&app_type={{ request.GET.app_type }}&enabled={{ request.GET.enabled }}" class="btn btn-default{% if active_time_month %} active{% endif %}">{% trans "Last Month" %}</a>
<a href="?time=year&app_type={{ request.GET.app_type }}&enabled={{ request.GET.enabled }}" class="btn btn-default{% if active_time_year %} active{% endif %}">{% trans "Last Year" %}</a>
<a href="?time=All&app_type={{ request.GET.app_type }}&enabled={{ request.GET.enabled }}" class="btn btn-default{% if active_time_all %} active{% endif %}">{% trans "All" %}</a>

View File

@ -1,11 +1,13 @@
{% extends 'base.html' %}
{% load i18n %}
{% load humanize static %}
{% block page_title %}{{ block.super }} / Consumers{% endblock page_title %}
{% block content %}
<div id="consumers">
<h1>Consumers</h1>
<h1>{% trans "Consumers" %}</h1>
<div class="row">
<div class="col-xs-12 col-md-6">
@ -42,21 +44,21 @@
</div>
</div>
<h4>Statistics</h4>
<h4>{% trans "Statistics" %}</h4>
<ul id="statistics">
<li>Total number of consumers: {{ statistics.consumers_num }}</li>
<li>Total number of unique developer email addresses: {{ statistics.unique_developer_email_num }}</li>
<li>Total number of unique consumer names: {{ statistics.unique_name_num }}</li>
<li>{% trans "Total number of consumers" %}: {{ statistics.consumers_num }} </li>
<li>{% trans "Total number of unique developer email addresses" %}: {{ statistics.unique_developer_email_num }}</li>
<li>{% trans "Total number of unique consumer names" %}: {{ statistics.unique_name_num }}</li>
</ul>
<div class="table-responsive">
<table class="table table-hover tablesorter" id="consumer-list" aria-describedby="consumer list">
<thead>
<th scope="col">ID</th>
<th scope="col">Name</th>
<th scope="col">Description</th>
<th scope="col">Created</th>
<th scope="col">Action</th>
<th scope="col">{% trans "ID" %}</th>
<th scope="col">{% trans "Name" %}</th>
<th scope="col">{% trans "Description" %}</th>
<th scope="col">{% trans "Created" %}</th>
<th scope="col">{% trans "Action" %}</th>
</thead>
<tbody>

View File

@ -1,12 +1,13 @@
{% extends 'base.html' %}
{% load static %}
{% load i18n %}
{% block page_title %}{{ block.super }} / Customers{% endblock page_title %}
{% block content %}
<div id="customers">
<h1>Create Customer</h1>
<h1>{% trans "Create Customer" %}</h1>
<form action="{% url 'customers-create' %}" method="post">
{% csrf_token %}
@ -20,21 +21,21 @@
<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 }}
<strong>{% trans "bank_id" %}</strong>
{{ form.bank_id }}
</div>
</div>
<div class="col-xs-12 col-sm-4">
{% if form.username.errors %}<div class="alert alert-danger">{{ form.username.errors }}</div>{% endif %}
<div class="form-group">
{{ form.username.label_tag }}
<strong>{% trans "username" %}</strong>
{{ form.username }}
</div>
</div>
<div class="col-xs-12 col-sm-4">
{% if form.customer_number.errors %}<div class="alert alert-danger">{{ form.customer_number.errors }}</div>{% endif %}
<div class="form-group">
{{ form.customer_number.label_tag }}
<strong>{% trans "customer_number" %}</strong>
{{ form.customer_number }}
</div>
</div>
@ -44,21 +45,21 @@
<div class="col-xs-12 col-sm-4">
{% if form.legal_name.errors %}<div class="alert alert-danger">{{ form.legal_name.errors }}</div>{% endif %}
<div class="form-group">
{{ form.legal_name.label_tag }}
<strong>{% trans "legal_name" %}</strong>
{{ form.legal_name }}
</div>
</div>
<div class="col-xs-12 col-sm-4">
{% if form.mobile_phone_number.errors %}<div class="alert alert-danger">{{ form.mobile_phone_number.errors }}</div>{% endif %}
<div class="form-group">
{{ form.mobile_phone_number.label_tag }}
<strong>{% trans "mobile_phone_number" %}</strong>
{{ form.mobile_phone_number }}
</div>
</div>
<div class="col-xs-12 col-sm-4">
{% if form.email.errors %}<div class="alert alert-danger">{{ form.email.errors }}</div>{% endif %}
<div class="form-group">
{{ form.email.label_tag }}
<strong>{% trans "email" %}</strong>
{{ form.email }}
</div>
</div>
@ -68,14 +69,14 @@
<div class="col-xs-12 col-sm-6">
{% if form.face_image_url.errors %}<div class="alert alert-danger">{{ form.face_image_url.errors }}</div>{% endif %}
<div class="form-group">
{{ form.face_image_url.label_tag }}
<strong>{% trans "face_image_url" %}</strong>
{{ form.face_image_url }}
</div>
</div>
<div class="col-xs-12 col-sm-6">
{% if form.face_image_date.errors %}<div class="alert alert-danger">{{ form.face_image_date.errors }}</div>{% endif %}
<div class="form-group">
{{ form.face_image_date.label_tag }}
<strong>{% trans "face_image_date" %}</strong>
{{ form.face_image_date }}
</div>
</div>
@ -85,14 +86,14 @@
<div class="col-xs-12 col-sm-6">
{% if form.date_of_birth.errors %}<div class="alert alert-danger">{{ form.date_of_birth.errors }}</div>{% endif %}
<div class="form-group">
{{ form.date_of_birth.label_tag }}
<strong>{% trans "date_of_birth" %}</strong>
{{ form.date_of_birth }}
</div>
</div>
<div class="col-xs-12 col-sm-6">
{% if form.relationship_status.errors %}<div class="alert alert-danger">{{ form.relationship_status.errors }}</div>{% endif %}
<div class="form-group">
{{ form.relationship_status.label_tag }}
<strong>{% trans "relationship_status" %}</strong>
{{ form.relationship_status }}
</div>
</div>
@ -102,14 +103,14 @@
<div class="col-xs-12 col-sm-6">
{% if form.dependants.errors %}<div class="alert alert-danger">{{ form.dependants.errors }}</div>{% endif %}
<div class="form-group">
{{ form.dependants.label_tag }}
<strong>{% trans "dependants" %}</strong>
{{ form.dependants }}
</div>
</div>
<div class="col-xs-12 col-sm-6">
{% if form.dob_of_dependants.errors %}<div class="alert alert-danger">{{ form.dob_of_dependants.errors }}</div>{% endif %}
<div class="form-group">
{{ form.dob_of_dependants.label_tag }}
<strong>{% trans "dob_of_dependants" %}</strong>
{{ form.dob_of_dependants }}
</div>
</div>
@ -119,14 +120,14 @@
<div class="col-xs-12 col-sm-6 col-md-3">
{% if form.credit_rating_rating.errors %}<div class="alert alert-danger">{{ form.credit_rating_rating.errors }}</div>{% endif %}
<div class="form-group">
{{ form.credit_rating_rating.label_tag }}
<strong>{% trans "credit_rating_rating" %}</strong>
{{ form.credit_rating_rating }}
</div>
</div>
<div class="col-xs-12 col-sm-6 col-md-3">
{% if form.credit_rating_source.errors %}<div class="alert alert-danger">{{ form.credit_rating_source.errors }}</div>{% endif %}
<div class="form-group">
{{ form.credit_rating_source.label_tag }}
<strong>{% trans "credit_rating_source" %}</strong>
{{ form.credit_rating_source }}
</div>
</div>
@ -134,14 +135,14 @@
<div class="col-xs-12 col-sm-6 col-md-3">
{% if form.credit_limit_currency.errors %}<div class="alert alert-danger">{{ form.credit_limit_currency.errors }}</div>{% endif %}
<div class="form-group">
{{ form.credit_limit_currency.label_tag }}
<strong>{% trans "credit_limit_currency" %}</strong>
{{ form.credit_limit_currency }}
</div>
</div>
<div class="col-xs-12 col-sm-6 col-md-3">
{% if form.credit_limit_amount.errors %}<div class="alert alert-danger">{{ form.credit_limit_amount.errors }}</div>{% endif %}
<div class="form-group">
{{ form.credit_limit_amount.label_tag }}
<strong>{% trans "credit_limit_amount" %}</strong>
{{ form.credit_limit_amount }}
</div>
</div>
@ -151,14 +152,14 @@
<div class="col-xs-12 col-sm-6">
{% if form.highest_education_attained.errors %}<div class="alert alert-danger">{{ form.highest_education_attained.errors }}</div>{% endif %}
<div class="form-group">
{{ form.highest_education_attained.label_tag }}
<strong>{% trans "highest_education_attained" %}</strong>
{{ form.highest_education_attained }}
</div>
</div>
<div class="col-xs-12 col-sm-6">
{% if form.employment_status.errors %}<div class="alert alert-danger">{{ form.employment_status.errors }}</div>{% endif %}
<div class="form-group">
{{ form.employment_status.label_tag }}
<strong>{% trans "employment_status" %}</strong>
{{ form.employment_status }}
</div>
</div>
@ -168,14 +169,14 @@
<div class="col-xs-12 col-sm-6">
{% if form.kyc_status.errors %}<div class="alert alert-danger">{{ form.kyc_status.errors }}</div>{% endif %}
<div class="form-group">
{{ form.kyc_status.label_tag }}
<strong>{% trans "kyc_status" %}</strong>
{{ form.kyc_status }}
</div>
</div>
<div class="col-xs-12 col-sm-6">
{% if form.last_ok_date.errors %}<div class="alert alert-danger">{{ form.last_ok_date.errors }}</div>{% endif %}
<div class="form-group">
{{ form.last_ok_date.label_tag }}
<strong>{% trans "last_ok_date" %}</strong>
{{ form.last_ok_date }}
</div>
</div>

View File

@ -1,6 +1,7 @@
<a href="?time=hour" class="btn btn-default{% if active_time_hour %} active{% endif %}">Last Hour</a>
<a href="?time=day" class="btn btn-default{% if active_time_day %} active{% endif %}">Last Day</a>
<a href="?time=week" class="btn btn-default{% if active_time_week %} active{% endif %}">Last Week</a>
<a href="?time=month" class="btn btn-default{% if active_time_month %} active{% endif %}">Last Month</a>
<a href="?time=year" class="btn btn-default{% if active_time_year %} active{% endif %}">Last Year</a>
<a href="?time=All" class="btn btn-default{% if active_time_all %} active{% endif %}">All</a>
{% load i18n %}
<a href="?time=hour" class="btn btn-default{% if active_time_hour %} active{% endif %}">{% trans "Last Hour" %}</a>
<a href="?time=day" class="btn btn-default{% if active_time_day %} active{% endif %}">{% trans "Last Day" %}</a>
<a href="?time=week" class="btn btn-default{% if active_time_week %} active{% endif %}">{% trans "Last Week" %}</a>
<a href="?time=month" class="btn btn-default{% if active_time_month %} active{% endif %}">{% trans "Last Month" %}</a>
<a href="?time=year" class="btn btn-default{% if active_time_year %} active{% endif %}">{% trans "Last Year" %}</a>
<a href="?time=All" class="btn btn-default{% if active_time_all %} active{% endif %}">{% trans "All" %}</a>

View File

@ -1,11 +1,11 @@
{% extends 'base.html' %}
{% load humanize static %}
{% load i18n %}
{% block page_title %}{{ block.super }} / Entitlement Requests {% endblock page_title %}
{% block content %}
<div id="entitlementrequests">
<h1>Entitlement Requests</h1>
<h1>{% trans "Entitlement Requests" %}</h1>
<div class="row">
<div class="col-xs-12 col-md-6">
@ -24,12 +24,12 @@
<div class="table-responsive">
<table class="table table-hover tablesorter" id="entitementrequests-list" aria-describedby="entitlement requests list">
<thead>
<th scope="col">Role Name</th>
<th scope="col">User name</th>
<th scope="col">Bank ID</th>
<th scope="col">Created</th>
<th scope="col">Action</th>
<th scope="col">Action</th>
<th scope="col">{% trans "Role Name" %}</th>
<th scope="col">{% trans "User name" %}</th>
<th scope="col">{% trans "Bank ID" %}</th>
<th scope="col">{% trans "Created" %}</th>
<th scope="col">{% trans "Action" %}</th>
<th scope="col">{% trans "Action" %}</th>
</thead>
<tbody>

Binary file not shown.

View File

@ -0,0 +1,115 @@
# Open Bank Project API Manager i18n files.
# Copyright (C) 2022 TESOBE GmbH
# This file is distributed under the AGPL. Commercial licences are available from TESOBE.
# FIRST AUTHOR <reena AT tesobe DOT com>, 2022.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-05-12 04:46+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"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: base/templates/base.html:48
msgid "Home"
msgstr "Startseite"
#: base/templates/base.html:50 consumers/templates/consumers/index.html:10
msgid "Consumers"
msgstr "Verbraucher"
#: base/templates/base.html:52
msgid "Entitlement Requests"
msgstr "Berechtigungsanfragen"
#: base/templates/base.html:57
msgid "Users"
msgstr "Verbindung zu WP-Benutzern"
#: base/templates/base.html:59
msgid "All"
msgstr "Alle"
#: base/templates/base.html:60
msgid "My User"
msgstr "Mein Benutzer"
#: base/templates/base.html:61
msgid "Invite Developer"
msgstr "Entwickler einladen"
#: base/templates/base.html:68
msgid "Metrics"
msgstr "Metriken"
#: base/templates/base.html:70
msgid "API Metrics"
msgstr "API-Metriken"
#: base/templates/base.html:71
msgid "Connector Metrics"
msgstr "Konnektor-Metriken"
#: base/templates/base.html:72
msgid "KPI Dashboard"
msgstr "KPI Dashboard"
#: base/templates/base.html:79
msgid "Resources"
msgstr "Ressourcen"
#: base/templates/base.html:81
msgid "Customers"
msgstr "Kunden"
#: base/templates/base.html:82
msgid "Branches"
msgstr "Niederlassungen"
#: base/templates/base.html:83
msgid "ATMs"
msgstr "ATMs"
#: base/templates/base.html:92
msgid "Configurations"
msgstr "Konfigurationen"
#: base/templates/base.html:94
msgid "Config"
msgstr "Konfig."
#: base/templates/base.html:95
msgid "Webui Props"
msgstr "Webui Requisiten"
#: base/templates/base.html:96
msgid "Method Routings"
msgstr "Methoden-Routings"
#: base/templates/base.html:97
msgid "Dynamic Endpoints"
msgstr "Dynamische Endpunkte"
#: base/templates/base.html:98
msgid "My API Collections"
msgstr "Meine API-Sammlungen"
#: base/templates/home.html:5
msgid "Welcome to API Manager"
msgstr "Willkommen bei API Manager"
#: consumers/templates/consumers/index.html:47
msgid "Statistics"
msgstr "Statistiken"
#: consumers/templates/consumers/index.html:49
msgid "Total number of consumers"
msgstr "Gesamtzahl der Verbraucher"

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -0,0 +1,231 @@
# Open Bank Project API Manager i18n files.
# Copyright (C) 2022 TESOBE GmbH
# This file is distributed under the AGPL. Commercial licences are available from TESOBE.
# FIRST AUTHOR <reena AT tesobe DOT com>, 2022.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-05-20 11:46+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"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: atms/templates/atms/index.html:4 base/templates/base.html:83
msgid "ATMs"
msgstr "GAB"
#: atms/templates/atms/index.html:17 atms/templates/atms/index.html:24
msgid "ATM Id"
msgstr "N ° GAB"
#: atms/templates/atms/index.html:31
msgid "name"
msgstr "nom"
#: atms/templates/atms/index.html:40
msgid "services"
msgstr "services"
#: atms/templates/atms/index.html:48
msgid "location_latitude"
msgstr "location_latitude"
#: atms/templates/atms/index.html:56
msgid "location_longitude"
msgstr "location_longitude"
#: atms/templates/atms/index.html:66
msgid "meta_license_name"
msgstr "meta_license_name"
#: atms/templates/atms/index.html:73
msgid "located_at"
msgstr "situé à"
#: atms/templates/atms/index.html:80
msgid "has_deposit_capability"
msgstr "has_deposit_capability"
#: atms/templates/atms/index.html:90
msgid "is_accessible"
msgstr "est accessible."
#: atms/templates/atms/index.html:98
msgid "accessibility_features"
msgstr "accessibilité_caractéristiques"
#: atms/templates/atms/index.html:105
msgid "more_info"
msgstr "plus_informations"
#: atms/templates/atms/index.html:114
msgid "notes"
msgstr "notes"
#: atms/templates/atms/index.html:121
msgid "supported_languages"
msgstr "langues_prises en charge"
#: atms/templates/atms/index.html:128
msgid "supported_currencies"
msgstr "devises_prises en charge"
#: atms/templates/atms/index.html:137
msgid "location_categories"
msgstr "location_categories"
#: atms/templates/atms/index.html:145
msgid "minimum_withdrawal"
msgstr "retrait_minimum"
#: atms/templates/atms/index.html:152
msgid "site_name"
msgstr "{$site_name}"
#: atms/templates/atms/index.html:161
msgid "branch_identification"
msgstr "identification_de_branche"
#: atms/templates/atms/index.html:168
msgid "site_identification"
msgstr "identification_du_site"
#: base/templates/base.html:11
#, fuzzy
#| msgid "Welcome to API Manager"
msgid "API Manager"
msgstr "Bienvenue dans API Manager"
#: base/templates/base.html:48
msgid "Home"
msgstr "Page d'accueil"
#: base/templates/base.html:50 consumers/templates/consumers/index.html:10
msgid "Consumers"
msgstr "Consommateurs"
#: base/templates/base.html:52
msgid "Entitlement Requests"
msgstr "Demandes de droits"
#: base/templates/base.html:57
msgid "Users"
msgstr "Comptes"
#: base/templates/base.html:59
msgid "All"
msgstr "Tous"
#: base/templates/base.html:60
msgid "My User"
msgstr "Mon utilisateur"
#: base/templates/base.html:61
msgid "Invite Developer"
msgstr "Inviter un développeur"
#: base/templates/base.html:68
msgid "Metrics"
msgstr "Indicateurs"
#: base/templates/base.html:70
msgid "API Metrics"
msgstr "Métriques API"
#: base/templates/base.html:71
msgid "Connector Metrics"
msgstr "Indicateurs du connecteur"
#: base/templates/base.html:72
msgid "KPI Dashboard"
msgstr "KPI Tableau de bord"
#: base/templates/base.html:79
msgid "Resources"
msgstr "Ressources"
#: base/templates/base.html:81
msgid "Customers"
msgstr "Clients"
#: base/templates/base.html:82
msgid "Branches"
msgstr "Agences"
#: base/templates/base.html:92
msgid "Configurations"
msgstr "Configurations"
#: base/templates/base.html:94
msgid "Config"
msgstr "Config"
#: base/templates/base.html:95
msgid "Webui Props"
msgstr "Accessoires Webui"
#: base/templates/base.html:96
msgid "Method Routings"
msgstr "Acheminement des méthodes"
#: base/templates/base.html:97
msgid "Dynamic Endpoints"
msgstr "Points de terminaison dynamiques"
#: base/templates/base.html:98
msgid "My API Collections"
msgstr "Mes collections d'API"
#: base/templates/home.html:5
msgid "Welcome to API Manager"
msgstr "Bienvenue dans API Manager"
#: consumers/templates/consumers/includes/filter_time.html:2
msgid "Last Hour"
msgstr ""
#: consumers/templates/consumers/index.html:47
msgid "Statistics"
msgstr "Statistiques"
#: consumers/templates/consumers/index.html:49
msgid "Total number of consumers"
msgstr "Nombre total de consommateurs"
#: consumers/templates/consumers/index.html:50
msgid "Total number of unique developer email addresses"
msgstr ""
#: consumers/templates/consumers/index.html:51
#, fuzzy
#| msgid "Total number of consumers"
msgid "Total number of unique consumer names"
msgstr "Nombre total de consommateurs"
#: consumers/templates/consumers/index.html:57
msgid "ID"
msgstr "ID"
#: consumers/templates/consumers/index.html:58
msgid "Name"
msgstr "Nom"
#: consumers/templates/consumers/index.html:59
msgid "Description"
msgstr "Description"
#: consumers/templates/consumers/index.html:60
msgid "Created"
msgstr "Créé"
#: consumers/templates/consumers/index.html:61
msgid "Action"
msgstr "Action"

Binary file not shown.

View File

@ -0,0 +1,115 @@
# Open Bank Project API Manager i18n files.
# Copyright (C) 2022 TESOBE GmbH
# This file is distributed under the AGPL. Commercial licences are available from TESOBE.
# FIRST AUTHOR <reena AT tesobe DOT com>, 2022.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-05-12 04:46+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"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: base/templates/base.html:48
msgid "Home"
msgstr "होमपेज"
#: base/templates/base.html:50 consumers/templates/consumers/index.html:10
msgid "Consumers"
msgstr "उपभोक्‍ता"
#: base/templates/base.html:52
msgid "Entitlement Requests"
msgstr "एंटाइटेलमेंट अनुरोध"
#: base/templates/base.html:57
msgid "Users"
msgstr "उपयोगकर्ता"
#: base/templates/base.html:59
msgid "All"
msgstr "सभी"
#: base/templates/base.html:60
msgid "My User"
msgstr "मेरा उपयोगकर्ता"
#: base/templates/base.html:61
msgid "Invite Developer"
msgstr "डेवलपर को आमंत्रित करें"
#: base/templates/base.html:68
msgid "Metrics"
msgstr "मेट्रिक्स"
#: base/templates/base.html:70
msgid "API Metrics"
msgstr "एपीआई मेट्रिक्स"
#: base/templates/base.html:71
msgid "Connector Metrics"
msgstr "कनेक्टर मेट्रिक्स"
#: base/templates/base.html:72
msgid "KPI Dashboard"
msgstr "केपीआई डैशबोर्ड"
#: base/templates/base.html:79
msgid "Resources"
msgstr "संसाधन"
#: base/templates/base.html:81
msgid "Customers"
msgstr "ग्राहक"
#: base/templates/base.html:82
msgid "Branches"
msgstr "कार्यालयों की शाखाए"
#: base/templates/base.html:83
msgid "ATMs"
msgstr "एटीएम"
#: base/templates/base.html:92
msgid "Configurations"
msgstr "कॉन्फ़िगरेशंस"
#: base/templates/base.html:94
msgid "Config"
msgstr "कॉन्फ़िग"
#: base/templates/base.html:95
msgid "Webui Props"
msgstr "Webui प्रॉप्स"
#: base/templates/base.html:96
msgid "Method Routings"
msgstr "विधि रूटिंग"
#: base/templates/base.html:97
msgid "Dynamic Endpoints"
msgstr "डायनामिक एंडपॉइंट्स"
#: base/templates/base.html:98
msgid "My API Collections"
msgstr "मेरे एपीआई संग्रह"
#: base/templates/home.html:5
msgid "Welcome to API Manager"
msgstr "एपीआई प्रबंधक में आपका स्वागत है"
#: consumers/templates/consumers/index.html:47
msgid "Statistics"
msgstr "आँकड़े"
#: consumers/templates/consumers/index.html:49
msgid "Total number of consumers"
msgstr "उपभोक्ताओं की कुल संख्या"

View File

@ -0,0 +1,64 @@
from translate import Translator # Convert one language to another
from concurrent.futures import ThreadPoolExecutor as tpe # Multithreading
from threading import Lock # Locking Purpose
lock=Lock() # Intializing Lock
languages=['de','es','fr','hi'] # Defining languages
# This class is used for converting languages
class clsTranslate():
def translateText(self, strString, strTolang):
"""
This function translates one language into another language. It takes two
parameters
1. strString :=> String that you want to convert
2. strTolang :=> Languages(fr,hi,es etc)
"""
self.strString = strString
self.strTolang = strTolang
translator = Translator(to_lang=self.strTolang)
translation = translator.translate(self.strString)
return (str(translation))
# This is method for writing file
def writeFile(language):
print(language,"Started")
fileName=f'locale/{language}/LC_MESSAGES/django.po' # Openning a file
try:
with open(fileName,encoding='utf-8') as f: # Reading from the file
a=[i.replace("\n","") for i in f.readlines()] # Reading everyline from a file and store it into a
except Exception as e:
print(fileName, e)
b=0
for i in range(len(a)):
if 'msgid' in a[i] and a[i]!='msgid ""':
b=i
break
if b!=0:
trans=clsTranslate() # Creating object for translation class
for i in range(b-1,len(a),4):
comment,msgid,msgstr=a[i],a[i+1],a[i+2]
if msgstr == 'msgstr ""':
ms=msgid[7:len(msgid)-1]
val=trans.translateText(ms,language)
a[i+2]=f'msgstr "{val}"'
try:
lock.acquire()
with open(fileName,'w',encoding='utf-8') as f:
for i in a:
f.write(f"{i}\n")
print(language,"is completed")
lock.release()
except Exception as e:
print(e)
lock.release()
else:
print(language,"is completed")
with tpe() as e:
e.map(writeFile,languages)

View File

@ -1,14 +1,14 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
# Open Bank Project API Manager i18n files.
# Copyright (C) 2022 TESOBE GmbH
# This file is distributed under the AGPL. Commercial licences are available from TESOBE.
# FIRST AUTHOR <reena AT tesobe DOT com>, 2022.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-05-09 11:38+0200\n"
"POT-Creation-Date: 2022-05-12 04:46+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"
@ -18,18 +18,98 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: apimanager/settings.py:175
msgid "English"
msgstr ""
#: base/templates/base.html:48
msgid "Home"
msgstr "होमपेज"
#: apimanager/settings.py:176
msgid "French"
msgstr ""
#: base/templates/base.html:50 consumers/templates/consumers/index.html:10
msgid "Consumers"
msgstr "उपभोक्‍ता"
#: base/templates/home.html:4
msgid "Hello"
msgstr ""
#: base/templates/base.html:52
msgid "Entitlement Requests"
msgstr "एंटाइटेलमेंट अनुरोध"
#: base/templates/home.html:7 base/views.py:39
#: base/templates/base.html:57
msgid "Users"
msgstr "उपयोगकर्ता"
#: base/templates/base.html:59
msgid "All"
msgstr "सभी"
#: base/templates/base.html:60
msgid "My User"
msgstr "मेरा उपयोगकर्ता"
#: base/templates/base.html:61
msgid "Invite Developer"
msgstr "डेवलपर को आमंत्रित करें"
#: base/templates/base.html:68
msgid "Metrics"
msgstr "मेट्रिक्स"
#: base/templates/base.html:70
msgid "API Metrics"
msgstr "एपीआई मेट्रिक्स"
#: base/templates/base.html:71
msgid "Connector Metrics"
msgstr "कनेक्टर मेट्रिक्स"
#: base/templates/base.html:72
msgid "KPI Dashboard"
msgstr "केपीआई डैशबोर्ड"
#: base/templates/base.html:79
msgid "Resources"
msgstr "संसाधन"
#: base/templates/base.html:81
msgid "Customers"
msgstr "ग्राहक"
#: base/templates/base.html:82
msgid "Branches"
msgstr "कार्यालयों की शाखाए"
#: base/templates/base.html:83
msgid "ATMs"
msgstr "एटीएम"
#: base/templates/base.html:92
msgid "Configurations"
msgstr "कॉन्फ़िगरेशंस"
#: base/templates/base.html:94
msgid "Config"
msgstr "कॉन्फ़िग"
#: base/templates/base.html:95
msgid "Webui Props"
msgstr "Webui प्रॉप्स"
#: base/templates/base.html:96
msgid "Method Routings"
msgstr "विधि रूटिंग"
#: base/templates/base.html:97
msgid "Dynamic Endpoints"
msgstr "डायनामिक एंडपॉइंट्स"
#: base/templates/base.html:98
msgid "My API Collections"
msgstr "मेरे एपीआई संग्रह"
#: base/templates/home.html:5
msgid "Welcome to API Manager"
msgstr "एपीआई प्रबंधक में आपका स्वागत है"
#: consumers/templates/consumers/index.html:47
msgid "Statistics"
msgstr "आँकड़े"
#: consumers/templates/consumers/index.html:49
msgid "Total number of consumers"
msgstr "उपभोक्ताओं की कुल संख्या"

View File

@ -0,0 +1,64 @@
from translate import Translator # Convert one language to another
from concurrent.futures import ThreadPoolExecutor as tpe # Multithreading
from threading import Lock # Locking Purpose
lock=Lock() # Intializing Lock
languages=['de','es','fr','hi'] # Defining languages
# This class is used for converting languages
class clsTranslate():
def translateText(self, strString, strTolang):
"""
This function translates one language into another language. It takes two
parameters
1. strString :=> String that you want to convert
2. strTolang :=> Languages(fr,hi,es etc)
"""
self.strString = strString
self.strTolang = strTolang
translator = Translator(to_lang=self.strTolang)
translation = translator.translate(self.strString)
return (str(translation))
# This is method for writing file
def writeFile(language):
print(language,"Started")
fileName=f'locale/{language}/LC_MESSAGES/django.po' # Openning a file
try:
with open(fileName,encoding='utf-8') as f: # Reading from the file
a=[i.replace("\n","") for i in f.readlines()] # Reading everyline from a file and store it into a
except Exception as e:
print(fileName, e)
b=0
for i in range(len(a)):
if 'msgid' in a[i] and a[i]!='msgid ""':
b=i
break
if b!=0:
trans=clsTranslate() # Creating object for translation class
for i in range(b-1,len(a),4):
comment,msgid,msgstr=a[i],a[i+1],a[i+2]
if msgstr == 'msgstr ""':
ms=msgid[7:len(msgid)-1]
val=trans.translateText(ms,language)
a[i+2]=f'msgstr "{val}"'
try:
lock.acquire()
with open(fileName,'w',encoding='utf-8') as f:
for i in a:
f.write(f"{i}\n")
print(language,"is completed")
lock.release()
except Exception as e:
print(e)
lock.release()
else:
print(language,"is completed")
with tpe() as e:
e.map(writeFile,languages)

View File

@ -0,0 +1,67 @@
from translate import Translator # Convert one language to another
from concurrent.futures import ThreadPoolExecutor as tpe # Multithreading
from threading import Lock # Locking Purpose
lock=Lock() # Intializing Lock
languages=['de','es','fr','hi'] # Defining languages
# This class is used for converting languages
class clsTranslate():
def translateText(self, strString, strTolang):
"""
This function translates one language into another language. It takes two
parameters
1. strString :=> String that you want to convert
2. strTolang :=> Languages(fr,hi,es etc)
"""
self.strString = strString
self.strTolang = strTolang
translator = Translator(to_lang=self.strTolang)
translation = translator.translate(self.strString)
return (str(translation))
# This is method for writing file
def writeFile(language):
print(language,"Started")
fileName=f'locale/{language}/LC_MESSAGES/django.po' # Openning a file
try:
with open(fileName,encoding='utf-8') as f: # Reading from the file
a=[i.replace("\n","") for i in f.readlines()] # Reading everyline from a file and store it into a
except Exception as e:
print(fileName, e)
b=0
for i in range(len(a)):
if 'msgid' in a[i] and a[i]!='msgid ""':
b=i
break
if b!=0:
trans=clsTranslate() # Creating object for translation class
for i in range(b-1,len(a)):
try:
if "msgid" in a[i]:
msgid,msgstr=a[i],a[i+1]
if msgstr == 'msgstr ""':
ms=msgid[7:len(msgid)-1]
val=trans.translateText(ms,language)
a[i+1]=f'msgstr "{val}"'
# print(a[i])
except: pass
try:
lock.acquire()
with open(fileName,'w',encoding='utf-8') as f:
for i in a:
f.write(f"{i}\n")
print(language,"is completed")
lock.release()
except Exception as e:
print(e)
lock.release()
else:
print(language,"is completed")
with tpe() as e:
e.map(writeFile,languages)

View File

@ -1,14 +1,15 @@
{% extends 'base.html' %}
{% load static %}
{% load i18n %}
{% block page_title %}{{ block.super }} / API Metrics{% endblock page_title %}
{% block content %}
<div id="metrics">
<h1>API Metrics</h1>
<h1>{% trans "API Metrics" %}</h1>
<div id="metrics-filter">
<h2>Filter</h2>
<h2>{% trans "Filter" %}</h2>
<form action="" method="get">
{% if form.non_field_errors %}
<div class="alert alert-danger">
@ -20,28 +21,28 @@
<div class="col-xs-6 col-sm-3">
{% if form.from_date.errors %}<div class="alert alert-danger">{{ form.from_date.errors }}</div>{% endif %}
<div class="form-group">
{{ form.from_date.label_tag }}
<strong>{% trans "from date" %} </strong>
{{ form.from_date }}
</div>
</div>
<div class="col-xs-6 col-sm-3">
{% if form.to_date.errors %}<div class="alert alert-danger">{{ form.to_date.errors }}</div>{% endif %}
<div class="form-group">
{{ form.to_date.label_tag }}
<strong>{% trans "to_date" %} </strong>
{{ form.to_date }}
</div>
</div>
<div class="col-xs-6 col-sm-3">
{% if form.limit.errors %}<div class="alert alert-danger">{{ form.limit.errors }}</div>{% endif %}
<div class="form-group">
{{ form.limit.label_tag }}
<strong>{% trans "limit" %} </strong>
{{ form.limit }}
</div>
</div>
<div class="col-xs-6 col-sm-3">
{% if form.offset.errors %}<div class="alert alert-danger">{{ form.offset.errors }}</div>{% endif %}
<div class="form-group">
{{ form.offset.label_tag }}
<strong>{% trans "offset" %} </strong>
{{ form.offset }}
</div>
</div>
@ -51,7 +52,7 @@
<div class="col-xs-6 col-sm-3">
{% if form.consumer_id.errors %}<div class="alert alert-danger">{{ form.consumer_id.errors }}</div>{% endif %}
<div class="form-group">
{{ form.consumer_id.label_tag }}
<strong>{% trans "consumer id" %} </strong>
{{ form.consumer_id }}
</div>
</div>
@ -59,7 +60,7 @@
<div class="col-xs-6 col-sm-3">
{% 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 }}
<strong>{% trans "user_id" %} </strong>
{{ form.user_id }}
</div>
</div>
@ -67,7 +68,7 @@
<div class="col-xs-6 col-sm-3">
{% if form.anon.errors %}<div class="alert alert-danger">{{ form.anon.errors }}</div>{% endif %}
<div class="form-group">
{{ form.anon.label_tag }}
<strong>{% trans "anon" %} </strong>
{{ form.anon }}
</div>
</div>
@ -75,7 +76,7 @@
<div class="col-xs-6 col-sm-3">
{% if form.app_name.errors %}<div class="alert alert-danger">{{ form.app_name.errors }}</div>{% endif %}
<div class="form-group">
{{ form.app_name.label_tag }}
<strong>{% trans "app_name" %} </strong>
{{ form.app_name }}
</div>
</div>
@ -86,7 +87,7 @@
<div class="col-xs-2">
{% if form.verb.errors %}<div class="alert alert-danger">{{ form.verb.errors }}</div>{% endif %}
<div class="form-group">
{{ form.verb.label_tag }}
<strong>{% trans "verb" %} </strong>
{{ form.verb }}
</div>
</div>
@ -94,7 +95,7 @@
<div class="col-xs-10">
{% if form.url.errors %}<div class="alert alert-danger">{{ form.url.errors }}</div>{% endif %}
<div class="form-group">
{{ form.url.label_tag }}
<strong>{% trans "url" %} </strong>
{{ form.url }}
</div>
</div>
@ -104,7 +105,7 @@
<div class="col-xs-7">
{% if form.implemented_by_partial_function.errors %}<div class="alert alert-danger">{{ form.implemented_by_partial_function.errors }}</div>{% endif %}
<div class="form-group">
{{ form.implemented_by_partial_function.label_tag }}
<strong>{% trans "implemented by partial function" %} </strong>
{{ form.implemented_by_partial_function }}
</div>
</div>
@ -112,22 +113,22 @@
<div class="col-xs-5">
{% if form.implemented_in_version.errors %}<div class="alert alert-danger">{{ form.implemented_in_version.errors }}</div>{% endif %}
<div class="form-group">
{{ form.implemented_in_version.label_tag }}
<strong>{% trans "implemented in version" %} </strong>
{{ form.implemented_in_version }}
</div>
</div>
</div>
<button type="submit" class="btn btn-primary">Update filter</button>
<button type="submit" class="btn btn-primary">{% trans "Update filter" %}</button>
</form>
</div>
<div id="metrics-data">
<ul class="nav nav-tabs">
{% block nav_tabs %}
<li class="active"><a href="{% url 'api-metrics' %}?{{ request.GET.urlencode }}">List</a></li>
<li><a href="{% url 'api-metrics-summary-partial-function' %}?{{ request.GET.urlencode }}">Summary by Partial Function</a></li>
<li class="active"><a href="{% url 'api-metrics' %}?{{ request.GET.urlencode }}">{% trans "List" %}</a></li>
<li><a href="{% url 'api-metrics-summary-partial-function' %}?{{ request.GET.urlencode }}">{% trans "Summary by Partial Function" %}</a></li>
{% endblock nav_tabs %}
</ul>
@ -139,11 +140,11 @@
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Verb</th>
<th scope="col">URL</th>
<th scope="col">Date</th>
<th scope="col">Duration(ms)</th>
<th scope="col">Details</th>
<th scope="col">{% trans "Verb" %}</th>
<th scope="col">{% trans "URL" %}</th>
<th scope="col">{% trans "Date" %}</th>
<th scope="col">{% trans "Duration(ms)" %}</th>
<th scope="col">{% trans "Details" %}</th>
</tr>
</thead>
<tbody>
@ -158,13 +159,13 @@
<td>{{ metric.duration }}</td>
<td>
<ul>
<li>User Name: {{ metric.user_name }}</li>
<li>User ID: {{ metric.user_id }}</li>
<li>Developer Email: {{ metric.developer_email }}</li>
<li>App Name: {{ metric.app_name }}</li>
<li>Consumer ID: {{ metric.consumer_id }}</li>
<li>Implemented by Partial Function: {{ metric.implemented_by_partial_function }}</li>
<li>Implemented In Version: {{ metric.implemented_in_version }}</li>
<li>{% trans "User Name" %}: {{ metric.user_name }}</li>
<li>{% trans "User ID" %}: {{ metric.user_id }}</li>
<li>{% trans "Developer Email" %}: {{ metric.developer_email }}</li>
<li>{% trans "App Name" %}: {{ metric.app_name }}</li>
<li>{% trans "Consumer ID" %}: {{ metric.consumer_id }}</li>
<li>{% trans "Implemented by Partial Function" %}: {{ metric.implemented_by_partial_function }}</li>
<li>{% trans "Implemented In Version" %}: {{ metric.implemented_in_version }}</li>
</ul>
</td>
</tr>

View File

@ -1,9 +1,10 @@
{% extends 'metrics/api.html' %}
{% load static %}
{% load i18n %}
{% block nav_tabs %}
<li><a href="{% url 'api-metrics' %}?{{ request.GET.urlencode }}">List</a></li>
<li class="active"><a href="{% url 'api-metrics-summary-partial-function' %}?{{ request.GET.urlencode }}">Summary by Partial Function</a></li>
<li><a href="{% url 'api-metrics' %}?{{ request.GET.urlencode }}">{% trans "List" %}</a></li>
<li class="active"><a href="{% url 'api-metrics-summary-partial-function' %}?{{ request.GET.urlencode }}">{% trans "Summary by Partial Function" %}</a></li>
{% endblock nav_tabs %}
{% block tab_content %}

View File

@ -1,14 +1,15 @@
{% extends 'base.html' %}
{% load static %}
{% load i18n %}
{% block page_title %}{{ block.super }} / Connector Metrics{% endblock page_title %}
{% block content %}
<div id="metrics">
<h1>Connector Metrics</h1>
<h1>{% trans "Connector Metrics" %}</h1>
<div id="metrics-filter">
<h2>Filter</h2>
<h2>{% trans "Filter" %}</h2>
<form action="{% url 'connector-metrics' %}" method="get">
{% if form.non_field_errors %}
<div class="alert alert-danger">
@ -20,28 +21,28 @@
<div class="col-xs-6 col-sm-3">
{% if form.from_date.errors %}<div class="alert alert-danger">{{ form.from_date.errors }}</div>{% endif %}
<div class="form-group">
{{ form.from_date.label_tag }}
<strong>{% trans "from_date" %} </strong>
{{ form.from_date }}
</div>
</div>
<div class="col-xs-6 col-sm-3">
{% if form.to_date.errors %}<div class="alert alert-danger">{{ form.to_date.errors }}</div>{% endif %}
<div class="form-group">
{{ form.to_date.label_tag }}
<strong>{% trans "to_date" %} </strong>
{{ form.to_date }}
</div>
</div>
<div class="col-xs-6 col-sm-3">
{% if form.limit.errors %}<div class="alert alert-danger">{{ form.limit.errors }}</div>{% endif %}
<div class="form-group">
{{ form.limit.label_tag }}
<strong>{% trans "limit" %} </strong>
{{ form.limit }}
</div>
</div>
<div class="col-xs-6 col-sm-3">
{% if form.offset.errors %}<div class="alert alert-danger">{{ form.offset.errors }}</div>{% endif %}
<div class="form-group">
{{ form.offset.label_tag }}
<strong>{% trans "offset" %} </strong>
{{ form.offset }}
</div>
</div>
@ -51,27 +52,27 @@
<div class="col-xs-12 col-sm-4">
{% if form.connector_name.errors %}<div class="alert alert-danger">{{ form.connector_name.errors }}</div>{% endif %}
<div class="form-group">
{{ form.connector_name.label_tag }}
<strong>{% trans "connector_name" %} </strong>
{{ form.connector_name }}
</div>
</div>
<div class="col-xs-12 col-sm-4">
{% if form.function_name.errors %}<div class="alert alert-danger">{{ form.function_name.errors }}</div>{% endif %}
<div class="form-group">
{{ form.function_name.label_tag }}
<strong>{% trans "function_name" %} </strong>
{{ form.function_name }}
</div>
</div>
<div class="col-xs-12 col-sm-4">
{% if form.correlation_id.errors %}<div class="alert alert-danger">{{ form.correlation_id.errors }}</div>{% endif %}
<div class="form-group">
{{ form.correlation_id.label_tag }}
<strong>{% trans "correlation_id" %} </strong>
{{ form.correlation_id }}
</div>
</div>
</div>
<button type="submit" class="btn btn-primary">Update filter</button>
<button type="submit" class="btn btn-primary">{% trans "Update filter" %}</button>
</form>
</div>
@ -82,11 +83,11 @@
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Date</th>
<th scope="col">Connector Name</th>
<th scope="col">Function Name</th>
<th scope="col">Correlation ID</th>
<th scope="col">Duration (ms)</th>
<th scope="col">{% trans "Date" %}</th>
<th scope="col">{% trans "Connector Name" %}</th>
<th scope="col">{% trans "Function Name" %}</th>
<th scope="col">{% trans "Correlation ID" %}</th>
<th scope="col">{% trans "Duration (ms)" %}</th>
</tr>
</thead>
<tbody>

View File

@ -1,26 +1,27 @@
{% extends 'base.html' %}
{% load static %}
{% load i18n %}
{% block page_title %}{{ block.super }} / API Usage Report{% endblock page_title %}
{% block content %}
<div id="metrics">
<h1>API Usage Report</h1>
<h2>API instance : {{ api_host_name }}</h2>
<h1>{% trans "API Usage Report" %}</h1>
<h2>{% trans "API instance" %}: {{ api_host_name }}</h2>
<div id="metrics-data">
<ul class="nav nav-tabs">
{% block nav_tabs %}
<li><a href="{% url 'yearly-summary' %}?{{ request.GET.urlencode }}">Year</a></li>
<li><a href="{% url 'quarterly-summary' %}?{{ request.GET.urlencode }}">Quarter</a></li>
<li><a href="{% url 'metrics-summary' %}?{{ request.GET.urlencode }}">Month</a></li>
<li><a href="{% url 'weekly-summary' %}?{{ request.GET.urlencode }}">Week</a></li>
<li><a href="{% url 'daily-summary' %}?{{ request.GET.urlencode }}">Day</a></li>
<li><a href="{% url 'yearly-summary' %}?{{ request.GET.urlencode }}">{% trans "Year" %}</a></li>
<li><a href="{% url 'quarterly-summary' %}?{{ request.GET.urlencode }}">{% trans "Quarter" %}</a></li>
<li><a href="{% url 'metrics-summary' %}?{{ request.GET.urlencode }}">{% trans "Month" %}</a></li>
<li><a href="{% url 'weekly-summary' %}?{{ request.GET.urlencode }}">{% trans "Week" %}</a></li>
<li><a href="{% url 'daily-summary' %}?{{ request.GET.urlencode }}">{% trans "Day" %}</a></li>
<!--<li><a href="{% url 'hourly-summary' %}?{{ request.GET.urlencode }}">Hour</a></li>-->
<li class="active"><a href="{% url 'custom-summary' %}?{{ request.GET.urlencode }}">Custom</a></li>
<li class="active"><a href="{% url 'custom-summary' %}?{{ request.GET.urlencode }}">{% trans "Custom" %}</a></li>
{% endblock nav_tabs %}
</ul>
@ -34,7 +35,7 @@
{{ form.media }} {# Form required JS and CSS #}
{% endblock %}
<h2>Filter</h2>
<h2>{% trans "Filter" %}</h2>
<form action="{% url 'custom-summary' %}" method="get">
{% if form.non_field_errors %}
<div class="alert alert-danger">
@ -46,26 +47,26 @@
<div class="col-xs-6 col-sm-3">
{% if form.from_date_custom.errors %}<div class="alert alert-danger">{{ form.from_date_custom.errors }}</div>{% endif %}
<div class="form-group">
{{ form.from_date_custom.label_tag }}
<strong>{% trans "from_date_custom" %} </strong>
{{ form.from_date_custom }}
</div>
</div>
<div class="col-xs-6 col-sm-3">
{% if form.to_date.errors %}<div class="alert alert-danger">{{ form.to_date.errors }}</div>{% endif %}
<div class="form-group">
{{ form.to_date.label_tag }}
<strong>{% trans "to_date" %} </strong>
{{ form.to_date }}
</div>
</div>
<div class="col-xs-6 col-sm-3">
<div class="form-group">
{{ form.include_obp_apps }} Include System Calls
</div>
{{ form.include_obp_apps }} {% trans "Include System Calls" %}
</div>
</div>
</div>
<button type="submit" class="btn btn-primary">Update filter</button>
<button type="submit" class="btn btn-primary">{% trans "Update filter" %}</button>
</form>
</div>
@ -81,68 +82,68 @@
<th></th>
</tr>
<tr>
<td>Total API calls:</td>
<td>{% trans "Total API calls" %}:</td>
<td>{{ api_calls }}</td>
</tr>
<tr>
<td>API calls made using API Explorer:</td>
<td>{% trans "API calls made using API Explorer" %}:</td>
<td>{{ calls_by_api_explorer }} ({% widthratio calls_by_api_explorer api_calls 100 %} %)</td>
</tr>
<tr>
<td>Calls per day:</td>
<td>{% trans "Calls per day (last 30 days)" %}:</td>
<td><img src="data:image/png;base64, {{ per_day_chart }}" alt="somealt" /></td>
</tr>
<tr>
<td>Average number of calls per day: </td>
<td>{% trans "Average number of calls per day" %}: </td>
<td>{{ average_calls_per_day }}</td>
</tr>
<tr>
<td>Average response time (ms):</td>
<td>{% trans "Average response time (ms)" %}:</td>
<td>{{ average_response_time }}</td>
</tr>
<tr>
<td>Median time from consumer registration to first API call:</td>
<td>{% trans "Median time from consumer registration to first API call" %}:</td>
<td>{{ median_time_to_first_api_call }}</td>
</tr>
<tr>
<td>Apps with distinct names:</td>
<td>{% trans "Apps with distinct names" %}:</td>
<td>{{ number_of_apps_with_unique_app_name }}</td>
</tr>
<tr>
<td>Distinct developer email addresses:</td>
<td>{% trans "Distinct developer email addresses" %}:</td>
<td>{{ number_of_apps_with_unique_developer_email }}</td>
</tr>
<tr>
<td>Active Apps (at least one API call in the period):</td>
<td>{% trans "Active Apps (at least one API call in the period)" %}:</td>
<td>{%for item in active_apps_list%} <p>{{item.app_name}} ({{ item.developer_email }})</p> {% endfor %}</td>
</tr>
<tr>
<td>Top 10 APIs:</td>
<td>{% trans "Top 10 APIs" %}:</td>
<td><img src="data:image/png;base64, {{ top_apis_bar_chart }}" alt="somealt" /></td>
</tr>
<tr>
<td>Top 10 Consumers:</td>
<td>{% trans "Top 10 Consumers" %}:</td>
<td><img src="data:image/png;base64, {{ top_consumers_bar_chart }}" alt="somealt" /></td>
</tr>
<tr>
<td>Top Warehouse APIs:</td>
<td>{% trans "Top Warehouse APIs" %}:</td>
<td>{% if top_warehouse_apis %}{%for element in top_warehouse_apis%} <p>{{ element.Implemented_by_partial_function }} : {{ element.count }}</p> {% endfor %}{% else %} <p>N/A</p>{% endif %}</td>
</tr>
<tr>
<td>Top Apps using data warehouse:</td>
<td>{% trans "Top Apps using data warehouse" %}:</td>
<td>{% if top_apps_using_warehouse %}{%for element in top_apps_using_warehouse%} <p>{{ element.app_name }} ({{ element.developer_email }}) : {{ element.count }}</p> {% endfor %}{% else %} <p>N/A</p>{% endif %}</td>
</tr>
<tr>
<td>Total number of CanSearchWarehouse users:</td>
<td>{% trans "Total number of CanSearchWarehouse users" %}:</td>
<td>{{number_of_users_with_cansearchwarehouse}}</td>
</tr>
<tr>
<td>Users with role CanSearchWarehouse:</td>
<td>{% if user_email_cansearchwarehouse %}{% for key, value in user_email_cansearchwarehouse.items %} {{key}}, {% endfor %}{% else %} <p>N/A</p>{% endif %}</td>
<td>{% trans "Users with role CanSearchWarehouse" %}:</td>
<td>{% if user_email_cansearchwarehouse %}{% for key, value in user_email_cansearchwarehouse.items %} {{key}}, {% endfor %}{% else %} <p>{% trans "N/A" %}</p>{% endif %}</td>
</tr>
</table>

View File

@ -1,5 +1,6 @@
{% extends 'base.html' %}
{% load static %}
{% load i18n %}
{% load mathfilters %}
{% block page_title %}{{ block.super }} / API Usage Report{% endblock page_title %}
@ -7,19 +8,19 @@
{% block content %}
<div id="metrics">
<h1>API Usage Report</h1>
<h2>API instance : {{ api_host_name }}</h2>
<h1>{% trans "API Usage Report" %}</h1>
<h2>{% trans "API instance" %}: {{ api_host_name }}</h2>
<div id="metrics-data">
<ul class="nav nav-tabs">
{% block nav_tabs %}
<li><a href="{% url 'yearly-summary' %}?{{ request.GET.urlencode }}">Year</a></li>
<li><a href="{% url 'quarterly-summary' %}?{{ request.GET.urlencode }}">Quarter</a></li>
<li><a href="{% url 'metrics-summary' %}?{{ request.GET.urlencode }}">Month</a></li>
<li><a href="{% url 'weekly-summary' %}?{{ request.GET.urlencode }}">Week</a></li>
<li class="active"><a href="{% url 'daily-summary' %}?{{ request.GET.urlencode }}">Day</a></li>
<li><a href="{% url 'yearly-summary' %}?{{ request.GET.urlencode }}">{% trans "Year" %}</a></li>
<li><a href="{% url 'quarterly-summary' %}?{{ request.GET.urlencode }}">{% trans "Quarter" %}</a></li>
<li><a href="{% url 'metrics-summary' %}?{{ request.GET.urlencode }}">{% trans "Month" %}</a></li>
<li><a href="{% url 'weekly-summary' %}?{{ request.GET.urlencode }}">{% trans "Week" %}</a></li>
<li class="active"><a href="{% url 'daily-summary' %}?{{ request.GET.urlencode }}">{% trans "Day" %}</a></li>
<!--<li><a href="{% url 'hourly-summary' %}?{{ request.GET.urlencode }}">Hour</a></li>-->
<li><a href="{% url 'custom-summary' %}?{{ request.GET.urlencode }}">Custom</a></li>
<li><a href="{% url 'custom-summary' %}?{{ request.GET.urlencode }}">{% trans "Custom" %}</a></li>
{% endblock nav_tabs %}
</ul>
@ -33,7 +34,7 @@
{{ form.media }} {# Form required JS and CSS #}
{% endblock %}
<h2>Filter</h2>
<h2>{% trans "Filter" %}</h2>
<form action="{% url 'daily-summary' %}" method="get">
{% if form.non_field_errors %}
<div class="alert alert-danger">
@ -46,19 +47,19 @@
<div class="col-xs-6 col-sm-3">
{% if form.to_date.errors %}<div class="alert alert-danger">{{ form.to_date.errors }}</div>{% endif %}
<div class="form-group">
{{ form.to_date.label_tag }}
<strong>{% trans "to_date" %} </strong>
{{ form.to_date }}
</div>
</div>
<div class="col-xs-6 col-sm-3">
<div class="form-group">
{{ form.include_obp_apps }} Include System Calls
{{ form.include_obp_apps }} {% trans "Include System Calls" %}
</div>
</div>
</div>
<button type="submit" class="btn btn-primary">Update filter</button>
<button type="submit" class="btn btn-primary">{% trans "Update filter" %}</button>
</form>
</div>
@ -66,7 +67,7 @@
<div class="tab-content">
{% block tab_content %}
<div class="tab-pane active">
<h2>Period : From {{ from_date }} to {{ to_date }}</h2>
<h2>{% trans "Period" %} : {% trans "From" %} {{ from_date }} {% trans "to" %} {{ to_date }}</h2>
<table border="1">
<tr>
@ -74,68 +75,68 @@
<th></th>
</tr>
<tr>
<td>Total API calls:</td>
<td>{% trans "Total API calls" %}:</td>
<td>{{ api_calls }}</td>
</tr>
<tr>
<td>API calls made using API Explorer:</td>
<td>{% trans "API calls made using API Explorer" %}:</td>
<td>{{ calls_by_api_explorer }} ({% widthratio calls_by_api_explorer api_calls 100 %} %)</td>
</tr>
<tr>
<td>Calls per hour:</td>
<td>{% trans "Calls per hour" %}:</td>
<td><img src="data:image/png;base64, {{ per_hour_chart }}" alt="somealt" /></td>
</tr>
<tr>
<td>Average number of calls per hour: </td>
<td>{% trans "Average number of calls per hour" %}: </td>
<td>{{ api_calls|intdiv:24 }}</td>
</tr>
<tr>
<td>Average response time (ms):</td>
<td>{% trans "Average response time (ms)" %}:</td>
<td>{{ average_response_time }}</td>
</tr>
<tr>
<td>Median time from consumer registration to first API call:</td>
<td>{% trans "Median time from consumer registration to first API call" %}:</td>
<td>{{ median_time_to_first_api_call }}</td>
</tr>
<tr>
<td>Apps with distinct names:</td>
<td>{% trans "Apps with distinct names" %}:</td>
<td>{{ number_of_apps_with_unique_app_name }}</td>
</tr>
<tr>
<td>Apps with distinct developer email addresses:</td>
<td>{% trans "Apps with distinct developer email addresses" %}:</td>
<td>{{ number_of_apps_with_unique_developer_email }}</td>
</tr>
<tr>
<td>Active Apps (at least one API call in the period):</td>
<td>{% trans "Active Apps (at least one API call in the period)" %}:</td>
<td>{%for item in active_apps_list%} <p>{{item.app_name}} ({{ item.developer_email }})</p> {% endfor %}</td>
</tr>
<tr>
<td>Top 10 APIs:</td>
<td>{% trans "Top 10 APIs" %}:</td>
<td><img src="data:image/png;base64, {{ top_apis_bar_chart }}" alt="somealt" /></td>
</tr>
<tr>
<td>Top 10 Consumers:</td>
<td>{% trans "Top 10 Consumers" %}:</td>
<td><img src="data:image/png;base64, {{ top_consumers_bar_chart }}" alt="somealt" /></td>
</tr>
<tr>
<td>Top Warehouse APIs:</td>
<td>{% trans "Top Warehouse APIs" %}:</td>
<td>{% if top_warehouse_apis %}{%for element in top_warehouse_apis%} <p>{{ element.Implemented_by_partial_function }} : {{ element.count }}</p> {% endfor %}{% else %} <p>N/A</p>{% endif %}</td>
</tr>
<tr>
<td>Top Apps using data warehouse:</td>
<td>{% trans "Top Apps using data warehouse" %}:</td>
<td>{% if top_apps_using_warehouse %}{%for element in top_apps_using_warehouse%} <p>{{ element.app_name }} ({{ element.developer_email }}) : {{ element.count }}</p> {% endfor %}{% else %} <p>N/A</p>{% endif %}</td>
</tr>
<tr>
<td>Total number of CanSearchWarehouse users:</td>
<td>{% trans "Total number of CanSearchWarehouse users" %}:</td>
<td>{{number_of_users_with_cansearchwarehouse}}</td>
</tr>
<tr>
<td>Users with role CanSearchWarehouse:</td>
<td>{% trans "Users with role CanSearchWarehouse" %}:</td>
<td>{% if user_email_cansearchwarehouse %}{% for key, value in user_email_cansearchwarehouse.items %} {{key}}, {% endfor %}{% else %} <p>N/A</p>{% endif %}</td>
</tr>

View File

@ -6,19 +6,19 @@
{% block content %}
<div id="metrics">
<h1>API Usage Report</h1>
<h2>API instance : {{ api_host_name }}</h2>
<h1>{% trans "API Usage Report" %}</h1>
<h2>{% trans "API instance" %}: {{ api_host_name }}</h2>
<div id="metrics-data">
<ul class="nav nav-tabs">
{% block nav_tabs %}
<li><a href="{% url 'yearly-summary' %}?{{ request.GET.urlencode }}">Year</a></li>
<li><a href="{% url 'quarterly-summary' %}?{{ request.GET.urlencode }}">Quarter</a></li>
<li><a href="{% url 'metrics-summary' %}?{{ request.GET.urlencode }}">Month</a></li>
<li><a href="{% url 'weekly-summary' %}?{{ request.GET.urlencode }}">Week</a></li>
<li><a href="{% url 'daily-summary' %}?{{ request.GET.urlencode }}">Day</a></li>
<li class="active"><a href="{% url 'hourly-summary' %}?{{ request.GET.urlencode }}">Hour</a></li>
<li><a href="{% url 'custom-summary' %}?{{ request.GET.urlencode }}">Custom</a></li>
<li><a href="{% url 'yearly-summary' %}?{{ request.GET.urlencode }}">{% trans "Year" %}</a></li>
<li><a href="{% url 'quarterly-summary' %}?{{ request.GET.urlencode }}">{% trans "Quarter" %}</a></li>
<li><a href="{% url 'metrics-summary' %}?{{ request.GET.urlencode }}">{% trans "Month" %}</a></li>
<li><a href="{% url 'weekly-summary' %}?{{ request.GET.urlencode }}">{% trans "Week" %}</a></li>
<li><a href="{% url 'daily-summary' %}?{{ request.GET.urlencode }}">{% trans "Day" %}</a></li>
<li class="active"><a href="{% url 'hourly-summary' %}?{{ request.GET.urlencode }}">{% trans "Hour" %}</a></li>
<li><a href="{% url 'custom-summary' %}?{{ request.GET.urlencode }}">{% trans "Custom" %}</a></li>
{% endblock nav_tabs %}
</ul>
@ -32,7 +32,7 @@
{{ form.media }} {# Form required JS and CSS #}
{% endblock %
<h2>Filter</h2>
<h2>{% trans "Filter" %}</h2>
<form action="{% url 'hourly-summary' %}" method="get">
{% if form.non_field_errors %}
<div class="alert alert-danger">
@ -45,19 +45,19 @@
<div class="col-xs-6 col-sm-3">
{% if form.to_date.errors %}<div class="alert alert-danger">{{ form.to_date.errors }}</div>{% endif %}
<div class="form-group">
{{ form.to_date.label_tag }}
<strong>{% trans "to_date" %} </strong>
{{ form.to_date }}
</div>
</div>
<div class="col-xs-6 col-sm-3">
<div class="form-group">
{{ form.include_obp_apps }} Include System Calls
{{ form.include_obp_apps }} {% trans "Include System Calls" %}
</div>
</div>
</div>
<button type="submit" class="btn btn-primary">Update filter</button>
<button type="submit" class="btn btn-primary">{% trans "Update filter" %}</button>
</form>
</div>
@ -65,7 +65,7 @@
<div class="tab-content">
{% block tab_content %}
<div class="tab-pane active">
<h2>Period : From {{ from_date }} to {{ to_date }}</h2>
<h2>{% trans "Period" %}: {% trans "From" %}{{ from_date }} {% trans "to" %} {{ to_date }}</h2>
<table border="1">
<tr>
@ -73,68 +73,68 @@
<th></th>
</tr>
<tr>
<td>API calls:</td>
<td>{% trans "API calls" %}:</td>
<td>{{ api_calls }}</td>
</tr>
<tr>
<td>API calls made using API Explorer:</td>
<td>{% trans "API calls made using API Explorer" %}:</td>
<td>{{ calls_by_api_explorer }} ({% widthratio calls_by_api_explorer api_calls 100 %} %)</td>
</tr>
<tr>
<td>Calls per minute:</td>
<td>{% trans "Calls per minute" %}:</td>
<td bgcolor="#FF0000">{%for item in calls_per_hour_list%}<li>{{item}}</li>{% endfor %}</td>
</tr>
<tr>
<td>Calls per minute:</td>
<td>{% trans "Calls per minute" %}:</td>
<td bgcolor="#FF0000"><img src="data:image/png;base64, {{ per_hour_chart }}" alt="somealt" /></td>
</tr>
<tr>
<td>Average number of calls hour: </td>
<td>{% trans "Average number of calls hour" %}: </td>
<td>{{ average_calls_per_hour }}</td>
</tr>
<tr>
<td>Average response time (ms):</td>
<td>{% trans "Average response time (ms)" %}:</td>
<td>{{ average_response_time }}</td>
</tr>
<tr>
<td>Median time from consumer registration to first API call:</td>
<td>{% trans "Median time from consumer registration to first API call" %}:</td>
<td>{{ median_time_to_first_api_call }}</td>
</tr>
<tr>
<td>Apps with distinct names:</td>
<td>{% trans "Apps with distinct names" %}:</td>
<td>{{ number_of_apps_with_unique_app_name }}</td>
</tr>
<tr>
<td>Apps with distinct developer email addresses:</td>
<td>{% trans "Apps with distinct developer email addresses" %}:</td>
<td>{{ number_of_apps_with_unique_developer_email }}</td>
</tr>
<tr>
<td>Active Apps (at least one API call in the period):</td>
<td>{% trans "Active Apps (at least one API call in the period)" %}:</td>
<td>{%for item in active_apps_names%}{{item}}, {% endfor %}</td>
</tr>
<tr>
<td>Top APIs:</td>
<td>{% trans "Top APIs" %}:</td>
<td><img src="data:image/png;base64, {{ top_apis_bar_chart }}" alt="somealt" /></td>
</tr>
<tr>
<td>Top Warehouse APIs:</td>
<td>{% trans "Top Warehouse APIs" %}:</td>
<td>{%for element in top_warehouse_apis%} <p>{{ element.Implemented_by_partial_function }} : {{ element.count }}</p> {% endfor %}</td>
</tr>
<tr>
<td>Top apps using the data warehouse:</td>
<td>{% trans "Top apps using the data warehouse" %}:</td>
<td>{%for element in top_apps_using_warehouse%} <p>{{ element.app_name }} : {{ element.count }}</p> {% endfor %}</td>
</tr>
<tr>
<td>Users with role CanSearchWarehouse:</td>
<td>{% trans "Users with role CanSearchWarehouse" %}:</td>
<td>{% for key, value in user_email_cansearchwarehouse.items %} {{key}} ({{value}}), {% endfor %}</td>
</tr>
<tr>
<td>CanSearchWarehouse users:</td>
<td>{% trans "CanSearchWarehouse users" %}:</td>
<td>{{number_of_users_with_cansearchwarehouse}}</td>
</tr>

View File

@ -1,26 +1,27 @@
{% extends 'base.html' %}
{% load static %}
{% load i18n %}
{% block page_title %}{{ block.super }} / API Usage Report{% endblock page_title %}
{% block content %}
<div id="metrics">
<h1>API Usage Report</h1>
<h2>API instance : {{ api_host_name }}</h2>
<h1>{% trans "API Usage Report" %}</h1>
<h2>{% trans "API instance" %}: {{ api_host_name }}</h2>
<div id="metrics-data">
<ul class="nav nav-tabs">
{% block nav_tabs %}
<li><a href="{% url 'yearly-summary' %}?{{ request.GET.urlencode }}">Year</a></li>
<li><a href="{% url 'quarterly-summary' %}?{{ request.GET.urlencode }}">Quarter</a></li>
<li class="active"><a href="{% url 'metrics-summary' %}?{{ request.GET.urlencode }}">Month</a></li>
<li><a href="{% url 'weekly-summary' %}?{{ request.GET.urlencode }}">Week</a></li>
<li><a href="{% url 'daily-summary' %}?{{ request.GET.urlencode }}">Day</a></li>
<li><a href="{% url 'yearly-summary' %}?{{ request.GET.urlencode }}">{% trans "Year" %}</a></li>
<li><a href="{% url 'quarterly-summary' %}?{{ request.GET.urlencode }}">{% trans "Quarter" %}</a></li>
<li class="active"><a href="{% url 'metrics-summary' %}?{{ request.GET.urlencode }}">{% trans "Month" %}</a></li>
<li><a href="{% url 'weekly-summary' %}?{{ request.GET.urlencode }}">{% trans "Week" %}</a></li>
<li><a href="{% url 'daily-summary' %}?{{ request.GET.urlencode }}">{% trans "Day" %}</a></li>
<!--<li><a href="{% url 'hourly-summary' %}?{{ request.GET.urlencode }}">Hour</a></li>-->
<li><a href="{% url 'custom-summary' %}?{{ request.GET.urlencode }}">Custom</a></li>
<li><a href="{% url 'custom-summary' %}?{{ request.GET.urlencode }}">{% trans "Custom" %}</a></li>
{% endblock nav_tabs %}
</ul>
@ -34,7 +35,7 @@
{{ form.media }} {# Form required JS and CSS #}
{% endblock %}
<h2>Filter</h2>
<h2>{% trans "Filter" %}</h2>
<form action="{% url 'metrics-summary' %}" method="get">
{% if form.non_field_errors %}
<div class="alert alert-danger">
@ -47,14 +48,14 @@
<div class="col-xs-6 col-sm-3">
{% if form.to_date.errors %}<div class="alert alert-danger">{{ form.to_date.errors }}</div>{% endif %}
<div class="form-group">
{{ form.to_date.label_tag }}
<strong>{% trans "to_date" %} </strong>
{{ form.to_date }}
</div>
</div>
<div class="col-xs-6 col-sm-3">
<div class="form-group">
{{ form.include_obp_apps }} Include System Calls
{{ form.include_obp_apps }} {% trans "Include System Calls" %}
</div>
{% if excluded_apps %}
{{ excluded_apps }}
@ -68,7 +69,7 @@
</div>
</div>
<button type="submit" class="btn btn-primary">Update filter</button>
<button type="submit" class="btn btn-primary">{% trans "Update filter" %}</button>
</form>
</div>
@ -76,7 +77,7 @@
<div class="tab-content">
{% block tab_content %}
<div class="tab-pane active">
<h2>Period : From {{ from_date }} to {{ to_date }}</h2>
<h2>{% trans "Period" %}: {% trans "From" %} {{ from_date }} {% trans "to" %} {{ to_date }}</h2>
<table border="1">
<tr>
@ -84,67 +85,67 @@
<th></th>
</tr>
<tr>
<td>Total API calls:</td>
<td>{% trans "Total API calls" %}:</td>
<td>{{ api_calls }}</td>
</tr>
<tr>
<td>API calls made using API Explorer:</td>
<td>{% trans "API calls made using API Explorer" %}:</td>
<td>{{ calls_by_api_explorer }} ({% widthratio calls_by_api_explorer api_calls 100 %} %)</td>
</tr>
<tr>
<td>Calls per day:</td>
<td>{% trans "Calls per day" %}:</td>
<td><img src="data:image/png;base64, {{ per_day_chart }}" alt="somealt" /></td>
</tr>
<tr>
<td>Average number of calls per day: </td>
<td>{% trans "Average number of calls per day" %}: </td>
<td>{{ average_calls_per_day }}</td>
</tr>
<tr>
<td>Average response time (ms):</td>
<td>{% trans "Average response time (ms)" %}:</td>
<td>{{ average_response_time }}</td>
</tr>
<tr>
<td>Median time from consumer registration to first API call:</td>
<td>{% trans "Median time from consumer registration to first API call" %}:</td>
<td>{{ median_time_to_first_api_call }}</td>
</tr>
<tr>
<td>Apps with distinct names:</td>
<td>{% trans "Apps with distinct names" %}:</td>
<td>{{ number_of_apps_with_unique_app_name }}</td>
</tr>
<tr>
<td>Distinct developer email addresses:</td>
<td>{% trans "Distinct developer email addresses" %}:</td>
<td>{{ number_of_apps_with_unique_developer_email }}</td>
</tr>
<tr>
<td>Active Apps (at least one API call in the period):</td>
<td>{% trans "Active Apps (at least one API call in the period)" %}:</td>
<td>{%for item in active_apps_list%} <p>{{item.app_name}} ({{ item.developer_email }})</p> {% endfor %}</td>
</tr>
<tr>
<td>Top 10 APIs:</td>
<td>{% trans "Top 10 APIs" %}:</td>
<td><img src="data:image/png;base64, {{ top_apis_bar_chart }}" alt="somealt" /></td>
</tr>
<tr>
<td>Top 10 Consumers:</td>
<td>{% trans "Top 10 Consumers" %}:</td>
<td><img src="data:image/png;base64, {{ top_consumers_bar_chart }}" alt="somealt" /></td>
</tr>
<tr>
<td>Top Warehouse APIs:</td>
<td>{% trans "Top Warehouse APIs" %}:</td>
<td>{% if top_warehouse_apis %}{%for element in top_warehouse_apis%} <p>{{ element.Implemented_by_partial_function }} : {{ element.count }}</p> {% endfor %}{% else %} <p>N/A</p>{% endif %}</td>
</tr>
<tr>
<td>Top Apps using data warehouse:</td>
<td>{% trans "Top Apps using data warehouse" %}:</td>
<td>{% if top_apps_using_warehouse %}{%for element in top_apps_using_warehouse%} <p>{{ element.app_name }} ({{ element.developer_email }}) : {{ element.count }}</p> {% endfor %}{% else %} <p>N/A</p>{% endif %}</td>
</tr>
<tr>
<td>Total number of CanSearchWarehouse users:</td>
<td>{% trans "Total number of CanSearchWarehouse users" %}:</td>
<td>{{number_of_users_with_cansearchwarehouse}}</td>
</tr>
<tr>
<td>Users with role CanSearchWarehouse:</td>
<td>{% trans "Users with role CanSearchWarehouse" %}:</td>
<td>{% if user_email_cansearchwarehouse %}{% for key, value in user_email_cansearchwarehouse.items %} {{key}}, {% endfor %}{% else %} <p>N/A</p>{% endif %}</td>
</tr>

View File

@ -1,24 +1,25 @@
{% extends 'base.html' %}
{% load static %}
{% load i18n %}
{% block page_title %}{{ block.super }} / API Usage Report{% endblock page_title %}
{% block content %}
<div id="metrics">
<h1>API Usage Report</h1>
<h2>API instance : {{ api_host_name }}</h2>
<h1>{% trans "API Usage Report" %}</h1>
<h2>{% trans "API instance : {{ api_host_name }}</h2>
<div id="metrics-data">
<ul class="nav nav-tabs">
{% block nav_tabs %}
<li><a href="{% url 'yearly-summary' %}?{{ request.GET.urlencode }}">Year</a></li>
<li class="active"><a href="{% url 'quarterly-summary' %}?{{ request.GET.urlencode }}">Quarter</a></li>
<li><a href="{% url 'metrics-summary' %}?{{ request.GET.urlencode }}">Month</a></li>
<li><a href="{% url 'weekly-summary' %}?{{ request.GET.urlencode }}">Week</a></li>
<li><a href="{% url 'daily-summary' %}?{{ request.GET.urlencode }}">Day</a></li>
<li><a href="{% url 'yearly-summary' %}?{{ request.GET.urlencode }}">{% trans "Year" %}</a></li>
<li class="active"><a href="{% url 'quarterly-summary' %}?{{ request.GET.urlencode }}">{% trans "Quarter" %}</a></li>
<li><a href="{% url 'metrics-summary' %}?{{ request.GET.urlencode }}">{% trans "Month" %}</a></li>
<li><a href="{% url 'weekly-summary' %}?{{ request.GET.urlencode }}">{% trans "Week" %}</a></li>
<li><a href="{% url 'daily-summary' %}?{{ request.GET.urlencode }}">{% trans "Day" %}</a></li>
<!--<li><a href="{% url 'hourly-summary' %}?{{ request.GET.urlencode }}">Hour</a></li>-->
<li><a href="{% url 'custom-summary' %}?{{ request.GET.urlencode }}">Custom</a></li>
<li><a href="{% url 'custom-summary' %}?{{ request.GET.urlencode }}">{% trans "Custom" %}</a></li>
{% endblock nav_tabs %}
</ul>
@ -32,7 +33,7 @@
{{ form.media }} {# Form required JS and CSS #}
{% endblock %}
<h2>Filter</h2>
<h2>{% trans "Filter" %}</h2>
<form action="{% url 'quarterly-summary' %}" method="get">
{% if form.non_field_errors %}
<div class="alert alert-danger">
@ -52,12 +53,12 @@
<div class="col-xs-6 col-sm-3">
<div class="form-group">
{{ form.include_obp_apps }} Include System Calls
{{ form.include_obp_apps }} {% trans "Include System Calls" %}
</div>
</div>
</div>
<button type="submit" class="btn btn-primary">Update filter</button>
<button type="submit" class="btn btn-primary">{% trans "Update filter" %}</button>
</form>
</div>
@ -65,7 +66,7 @@
<div class="tab-content">
{% block tab_content %}
<div class="tab-pane active">
<h2>Period : From {{ from_date }} to {{ to_date }}</h2>
<h2>{% trans "Period" %}:{% trans "From" %} {{ from_date }} {% trans "to" %} {{ to_date }}</h2>
<table border="1">
<tr>
@ -73,72 +74,72 @@
<th></th>
</tr>
<tr>
<td>Total API calls:</td>
<td>{% trans "Total API calls" %}:</td>
<td>{{ api_calls }}</td>
</tr>
<tr>
<td>API calls made using API Explorer:</td>
<td>{% trans "API calls made using API Explorer" %}:</td>
<td>{{ calls_by_api_explorer }} ({% widthratio calls_by_api_explorer api_calls 100 %} %)</td>
</tr>
<tr>
<td>Calls per month:</td>
<td>{% trans "Calls per month" %}:</td>
<td><img src="data:image/png;base64, {{ per_month_chart }}" alt="somealt" /></td>
</tr>
{# <tr>#}
{# <td>Calls per day:</td>#}
{# <td>{% trans "Calls per day" %}:</td>#}
{# <td><img src="data:image/png;base64, {{ per_day_chart }}" alt="somealt" /></td>#}
{# </tr>#}
<tr>
<td>Average number of calls per day: </td>
<td>{% trans "Average number of calls per day" %}: </td>
<td>{{ average_calls_per_day }}</td>
</tr>
<tr>
<td>Average response time (ms):</td>
<td>{% trans "Average response time (ms)" %}:</td>
<td>{{ average_response_time }}</td>
</tr>
<tr>
<td>Median time from consumer registration to first API call:</td>
<td>{% trans "Median time from consumer registration to first API call" %}:</td>
<td>{{ median_time_to_first_api_call }}</td>
</tr>
<tr>
<td>Apps with distinct names:</td>
<td>{% trans "Apps with distinct names" %}:</td>
<td>{{ number_of_apps_with_unique_app_name }}</td>
</tr>
<tr>
<td>Apps with distinct developer email addresses:</td>
<td>{% trans "Apps with distinct developer email addresses" %}:</td>
<td>{{ number_of_apps_with_unique_developer_email }}</td>
</tr>
<tr>
<td>Active Apps (at least one API call in the period):</td>
<td>{% trans "Active Apps (at least one API call in the period)" %}:</td>
<td>{%for item in active_apps_list%} <p>{{item.app_name}} ({{ item.developer_email }})</p> {% endfor %}</td>
</tr>
<tr>
<td>Top 10 APIs:</td>
<td>{% trans "Top 10 APIs" %}:</td>
<td><img src="data:image/png;base64, {{ top_apis_bar_chart }}" alt="somealt" /></td>
</tr>
<tr>
<td>Top 10 Consumers:</td>
<td>{% trans "Top 10 Consumers" %}:</td>
<td><img src="data:image/png;base64, {{ top_consumers_bar_chart }}" alt="somealt" /></td>
</tr>
<tr>
<td>Top Warehouse APIs:</td>
<td>{% trans "Top Warehouse APIs" %}:</td>
<td>{% if top_warehouse_apis %}{%for element in top_warehouse_apis%} <p>{{ element.Implemented_by_partial_function }} : {{ element.count }}</p> {% endfor %}{% else %} <p>N/A</p>{% endif %}</td>
</tr>
<tr>
<td>Top Apps using data warehouse:</td>
<td>{% trans "Top Apps using data warehouse" %}:</td>
<td>{% if top_apps_using_warehouse %}{%for element in top_apps_using_warehouse%} <p>{{ element.app_name }} ({{ element.developer_email }}) : {{ element.count }}</p> {% endfor %}{% else %} <p>N/A</p>{% endif %}</td>
</tr>
<tr>
<td>Total number of CanSearchWarehouse users:</td>
<td>{% trans "Total number of CanSearchWarehouse users" %}:</td>
<td>{{number_of_users_with_cansearchwarehouse}}</td>
</tr>
<tr>
<td>Users with role CanSearchWarehouse:</td>
<td>{% trans "Users with role CanSearchWarehouse" %}:</td>
<td>{% if user_email_cansearchwarehouse %}{% for key, value in user_email_cansearchwarehouse.items %} {{key}}, {% endfor %}{% else %} <p>N/A</p>{% endif %}</td>
</tr>

View File

@ -1,26 +1,27 @@
{% extends 'base.html' %}
{% load static %}
{% load i18n %}
{% block page_title %}{{ block.super }} / API Usage Report{% endblock page_title %}
{% block content %}
<div id="metrics">
<h1>API Usage Report</h1>
<h2>API instance : {{ api_host_name }}</h2>
<h1>{% trans "API Usage Report" %}</h1>
<h2>{% trans "API instance" %}: {{ api_host_name }}</h2>
<div id="metrics-data">
<ul class="nav nav-tabs">
{% block nav_tabs %}
<li><a href="{% url 'yearly-summary' %}?{{ request.GET.urlencode }}">Year</a></li>
<li><a href="{% url 'quarterly-summary' %}?{{ request.GET.urlencode }}">Quarter</a></li>
<li><a href="{% url 'metrics-summary' %}?{{ request.GET.urlencode }}">Month</a></li>
<li class="active"><a href="{% url 'weekly-summary' %}?{{ request.GET.urlencode }}">Week</a></li>
<li><a href="{% url 'daily-summary' %}?{{ request.GET.urlencode }}">Day</a></li>
<li><a href="{% url 'yearly-summary' %}?{{ request.GET.urlencode }}">{% trans "Year" %}</a></li>
<li><a href="{% url 'quarterly-summary' %}?{{ request.GET.urlencode }}">{% trans "Quarter" %}</a></li>
<li><a href="{% url 'metrics-summary' %}?{{ request.GET.urlencode }}">{% trans "Month" %}</a></li>
<li class="active"><a href="{% url 'weekly-summary' %}?{{ request.GET.urlencode }}">{% trans "Week" %}</a></li>
<li><a href="{% url 'daily-summary' %}?{{ request.GET.urlencode }}">{% trans "Day" %}</a></li>
<!--<li><a href="{% url 'hourly-summary' %}?{{ request.GET.urlencode }}">Hour</a></li>-->
<li><a href="{% url 'custom-summary' %}?{{ request.GET.urlencode }}">Custom</a></li>
<li><a href="{% url 'custom-summary' %}?{{ request.GET.urlencode }}">{% trans "Custom" %}</a></li>
{% endblock nav_tabs %}
</ul>
@ -54,12 +55,12 @@
<div class="col-xs-6 col-sm-3">
<div class="form-group">
{{ form.include_obp_apps }} Include System Calls
{{ form.include_obp_apps }} {% trans "Include System Calls" %}
</div>
</div>
</div>
<button type="submit" class="btn btn-primary">Update filter</button>
<button type="submit" class="btn btn-primary">{% trans "Update filter" %}</button>
</form>
</div>
@ -67,7 +68,7 @@
<div class="tab-content">
{% block tab_content %}
<div class="tab-pane active">
<h2>Period : From {{ from_date }} to {{ to_date }}</h2>
<h2>{% trans "Period" %} : {% trans "From" %} {{ from_date }} {% trans "to" %} {{ to_date }}</h2>
<table border="1">
<tr>
@ -75,68 +76,68 @@
<th></th>
</tr>
<tr>
<td>Total API calls:</td>
<td>{% trans "Total API calls" %}:</td>
<td>{{ api_calls }}</td>
</tr>
<tr>
<td>API calls made using API Explorer:</td>
<td>{% trans "API calls made using API Explorer" %}:</td>
<td>{{ calls_by_api_explorer }} ({% widthratio calls_by_api_explorer api_calls 100 %} %)</td>
</tr>
<tr>
<td>Calls per day:</td>
<td>{% trans "Calls per day" %}:</td>
<td><img src="data:image/png;base64, {{ per_day_chart }}" alt="somealt" /></td>
</tr>
<tr>
<td>Average number of calls per day: </td>
<td>{% trans "Average number of calls per day" %}: </td>
<td>{{ average_calls_per_day }}</td>
</tr>
<tr>
<td>Average response time (ms):</td>
<td>{% trans "Average response time (ms)" %}:</td>
<td>{{ average_response_time }}</td>
</tr>
<tr>
<td>Median time from consumer registration to first API call:</td>
<td>{% trans "Median time from consumer registration to first API call" %}:</td>
<td>{{ median_time_to_first_api_call }}</td>
</tr>
<tr>
<td>Apps with distinct names:</td>
<td>{% trans "Apps with distinct names" %}:</td>
<td>{{ number_of_apps_with_unique_app_name }}</td>
</tr>
<tr>
<td>Apps with distinct developer email addresses:</td>
<td>{% trans "Apps with distinct developer email addresses" %}:</td>
<td>{{ number_of_apps_with_unique_developer_email }}</td>
</tr>
<tr>
<td>Active Apps (at least one API call in the period):</td>
<td>{% trans "Active Apps (at least one API call in the period)" %}:</td>
<td>{%for item in active_apps_list%} <p>{{item.app_name}} ({{ item.developer_email }})</p> {% endfor %}</td>
</tr>
<tr>
<td>Top 10 APIs:</td>
<td>{% trans "Top 10 APIs" %}:</td>
<td><img src="data:image/png;base64, {{ top_apis_bar_chart }}" alt="somealt" /></td>
</tr>
<tr>
<td>Top 10 Consumers:</td>
<td>{% trans "Top 10 Consumers" %}:</td>
<td><img src="data:image/png;base64, {{ top_consumers_bar_chart }}" alt="somealt" /></td>
</tr>
<tr>
<td>Top Warehouse APIs:</td>
<td>{% trans "Top Warehouse APIs" %}:</td>
<td>{% if top_warehouse_apis %}{%for element in top_warehouse_apis%} <p>{{ element.Implemented_by_partial_function }} : {{ element.count }}</p> {% endfor %}{% else %} <p>N/A</p>{% endif %}</td>
</tr>
<tr>
<td>Top Apps using data warehouse:</td>
<td>{% trans "Top Apps using data warehouse" %}:</td>
<td>{% if top_apps_using_warehouse %}{%for element in top_apps_using_warehouse%} <p>{{ element.app_name }} ({{ element.developer_email }}) : {{ element.count }}</p> {% endfor %}{% else %} <p>N/A</p>{% endif %}</td>
</tr>
<tr>
<td>Total number of CanSearchWarehouse users:</td>
<td>{% trans "Total number of CanSearchWarehouse users" %}:</td>
<td>{{number_of_users_with_cansearchwarehouse}}</td>
</tr>
<tr>
<td>Users with role CanSearchWarehouse:</td>
<td>{% trans "Users with role CanSearchWarehouse" %}:</td>
<td>{% if user_email_cansearchwarehouse %}{% for key, value in user_email_cansearchwarehouse.items %} {{key}}, {% endfor %}{% else %} <p>N/A</p>{% endif %}</td>
</tr>

View File

@ -1,26 +1,27 @@
{% extends 'base.html' %}
{% load static %}
{% load i18n %}
{% block page_title %}{{ block.super }} / API Usage Report{% endblock page_title %}
{% block content %}
<div id="metrics">
<h1>API Usage Report</h1>
<h2>API instance : {{ api_host_name }}</h2>
<h1>{% trans "API Usage Report" %}</h1>
<h2>{% trans "API instance" %}: {{ api_host_name }}</h2>
<div id="metrics-data">
<ul class="nav nav-tabs">
{% block nav_tabs %}
<li class="active"><a href="{% url 'yearly-summary' %}?{{ request.GET.urlencode }}">Year</a></li>
<li><a href="{% url 'quarterly-summary' %}?{{ request.GET.urlencode }}">Quarter</a></li>
<li><a href="{% url 'metrics-summary' %}?{{ request.GET.urlencode }}">Month</a></li>
<li><a href="{% url 'weekly-summary' %}?{{ request.GET.urlencode }}">Week</a></li>
<li><a href="{% url 'daily-summary' %}?{{ request.GET.urlencode }}">Day</a></li>
<li class="active"><a href="{% url 'yearly-summary' %}?{{ request.GET.urlencode }}">{% trans "Year" %}</a></li>
<li><a href="{% url 'quarterly-summary' %}?{{ request.GET.urlencode }}">{% trans "Quarter" %}</a></li>
<li><a href="{% url 'metrics-summary' %}?{{ request.GET.urlencode }}">{% trans "Month" %}</a></li>
<li><a href="{% url 'weekly-summary' %}?{{ request.GET.urlencode }}">{% trans "Week" %}</a></li>
<li><a href="{% url 'daily-summary' %}?{{ request.GET.urlencode }}">{% trans "Day" %}</a></li>
<!--<li><a href="{% url 'hourly-summary' %}?{{ request.GET.urlencode }}">Hour</a></li>-->
<li><a href="{% url 'custom-summary' %}?{{ request.GET.urlencode }}">Custom</a></li>
<li><a href="{% url 'custom-summary' %}?{{ request.GET.urlencode }}">{% trans "Custom" %}</a></li>
{% endblock nav_tabs %}
</ul>
@ -34,7 +35,7 @@
{{ form.media }} {# Form required JS and CSS #}
{% endblock %}
<h2>Filter</h2>
<h2>{% trans "Filter" %}</h2>
<form action="{% url 'yearly-summary' %}" method="get">
{% if form.non_field_errors %}
<div class="alert alert-danger">
@ -54,12 +55,12 @@
<div class="col-xs-6 col-sm-3">
<div class="form-group">
{{ form.include_obp_apps }} Include System Calls
{{ form.include_obp_apps }} {% trans "Include System Calls" %}
</div>
</div>
</div>
<button type="submit" class="btn btn-primary">Update filter</button>
<button type="submit" class="btn btn-primary">{% trans "Update filter" %}</button>
</form>
</div>
@ -67,7 +68,7 @@
<div class="tab-content">
{% block tab_content %}
<div class="tab-pane active">
<h2>Period : From {{ from_date }} to {{ to_date }}</h2>
<h2>{% trans "Period" %} : {% trans "From" %} {{ from_date }} {% trans "to" %} {{ to_date }}</h2>
<table border="1">
<tr>
@ -75,68 +76,68 @@
<th></th>
</tr>
<tr>
<td>Total API calls:</td>
<td>{% trans "Total API calls" %}:</td>
<td>{{ api_calls }}</td>
</tr>
<tr>
<td>API calls made using API Explorer:</td>
<td>{% trans "API calls made using API Explorer" %}:</td>
<td>{{ calls_by_api_explorer }} ({% widthratio calls_by_api_explorer api_calls 100 %} %)</td>
</tr>
<tr>
<td>Calls per month:</td>
<td>{% trans "Calls per month" %}:</td>
<td><img src="data:image/png;base64, {{ per_month_chart }}" alt="somealt" /></td>
</tr>
<tr>
<td>Average number of calls per day: </td>
<td>{% trans "Average number of calls per day" %}: </td>
<td>{{ average_calls_per_day }}</td>
</tr>
<tr>
<td>Average response time (ms):</td>
<td>{% trans "Average response time (ms)" %}:</td>
<td>{{ average_response_time }}</td>
</tr>
<tr>
<td>Median time from consumer registration to first API call:</td>
<td>{% trans "Median time from consumer registration to first API call" %}:</td>
<td>{{ median_time_to_first_api_call }}</td>
</tr>
<tr>
<td>Apps with distinct names:</td>
<td>{% trans "Apps with distinct names" %}:</td>
<td>{{ number_of_apps_with_unique_app_name }}</td>
</tr>
<tr>
<td>Apps with distinct developer email addresses:</td>
<td>{% trans "Apps with distinct developer email addresses:</td>
<td>{{ number_of_apps_with_unique_developer_email }}</td>
</tr>
<tr>
<td>Active Apps (at least one API call in the period):</td>
<td>{% trans "Active Apps (at least one API call in the period)" %}:</td>
<td>{%for item in active_apps_list%} <p>{{item.app_name}} ({{ item.developer_email }})</p> {% endfor %}</td>
</tr>
<tr>
<td>Top 10 APIs:</td>
<td>{% trans "Top 10 APIs" %}:</td>
<td><img src="data:image/png;base64, {{ top_apis_bar_chart }}" alt="somealt" /></td>
</tr>
<tr>
<td>Top 10 Consumers:</td>
<td>{% trans "Top 10 Consumers" %}:</td>
<td><img src="data:image/png;base64, {{ top_consumers_bar_chart }}" alt="somealt" /></td>
</tr>
<tr>
<td>Top Warehouse APIs:</td>
<td>{% trans "Top Warehouse APIs" %}:</td>
<td>{% if top_warehouse_apis %}{%for element in top_warehouse_apis%} <p>{{ element.Implemented_by_partial_function }} : {{ element.count }}</p> {% endfor %}{% else %} <p>N/A</p>{% endif %}</td>
</tr>
<tr>
<td>Top Apps using data warehouse:</td>
<td>{% trans "Top Apps using data warehouse" %}:</td>
<td>{% if top_apps_using_warehouse %}{%for element in top_apps_using_warehouse%} <p>{{ element.app_name }} ({{ element.developer_email }}) : {{ element.count }}</p> {% endfor %}{% else %} <p>N/A</p>{% endif %}</td>
</tr>
<tr>
<td>Total number of CanSearchWarehouse users:</td>
<td>{% trans "Total number of CanSearchWarehouse users" %}:</td>
<td>{{number_of_users_with_cansearchwarehouse}}</td>
</tr>
<tr>
<td>Users with role CanSearchWarehouse:</td>
<td>{% trans "Users with role CanSearchWarehouse" %}:</td>
<td>{% if user_email_cansearchwarehouse %}{% for key, value in user_email_cansearchwarehouse.items %} {{key}}, {% endfor %}{% else %} <p>N/A</p>{% endif %}</td>
</tr>

View File

@ -1,39 +1,39 @@
{% extends 'base.html' %}
{% load static %}
{% load i18n %}
{% block page_title %}{{ block.super }} / {{ apiuser.username }}{% endblock page_title %}
{% block content %}
<div id="users-detail">
<h1>User {{ apiuser.username }}</h1>
<h1>{% trans "User" %} {{ apiuser.username }}</h1>
<div id="users-detail-user_id">
<strong>User ID</strong><br />
<strong>{% trans "User ID" %}</strong><br />
<span>{{ apiuser.user_id }}</span>
</div>
<div id="users-detail-email">
<strong>Email</strong><br />
<strong>{% trans "Email" %}</strong><br />
<span>{{ apiuser.email }}</span>
</div>
<div id="users-detail-provider">
<strong>Provider</strong><br />
<strong>{% trans "Provider" %}</strong><br />
<span>{{ apiuser.provider }}</span>
</div>
<div id="users-detail-provider_id">
<strong>Provider ID</strong><br />
<strong>{% trans "Provider ID" %}</strong><br />
<span>{{ apiuser.provider_id }}</span>
</div>
<div id="users-detail-deleted">
<strong>Deleted</strong><br />
<strong>{% trans "Deleted" %}</strong><br />
<span>{{ apiuser.is_deleted }}</span>
</div>
<div id="users-detail-locked">
<strong>Locked</strong><br />
<strong>{% trans "Locked" %}</strong><br />
<span>{{ apiuser.is_locked }}</span>
</div>
@ -44,11 +44,11 @@
{% if apiuser.is_deleted %}
{% else %}
<button type="submit" class="btn btn-primary btn-red" value ="Delete" name ="Delete">Delete User</button>
<button type="submit" class="btn btn-primary btn-red" value ="Delete" name ="Delete">{% trans "Delete User" %}</button>
{% endif %}
{% if apiuser.is_locked %}
<button type="submit" class="btn btn-primary btn-green" value ="Unlock" name ="Unlock">Unlock User</button>
<button type="submit" class="btn btn-primary btn-green" value ="Unlock" name ="Unlock">{% trans "Unlock User" %}</button>
{% else %}
{% endif %}
@ -59,20 +59,20 @@
{% if apiuser.user_id %}
<div id="users-detail-entitlements">
<h2>Add Entitlement</h2>
<h2>{% trans "Add Entitlement" %}</h2>
<form class="form" action="" method="post">
{% csrf_token %}
{{ form.user_id }}
<div class="row">
<div class="col-xs-12 col-md-4">
<div class="form-group">
{{ form.role_name.label_tag}}
<strong>{% trans "Role name" %}</strong>
{{ form.role_name }}
</div>
</div>
<div class="col-xs-12 col-md-8">
<div class="form-group">
{{ form.bank_id.label_tag }}
<strong>{% trans "bank_id" %}</strong>
{{ form.bank_id }}
</div>
</div>
@ -80,24 +80,24 @@
<div class="row">
<div class="col-xs-12 hidden-sm hidden-md hidden-lg">
<div class="form-group">
<button type="submit" class="btn btn-primary btn-green form-control">Add</button>
<button type="submit" class="btn btn-primary btn-green form-control">{% trans "Add" %}</button>
</div>
</div>
<div class="col-sm-12 hidden-xs">
<div class="form-group">
<button type="submit" class="btn btn-primary btn-green">Add</button>
<button type="submit" class="btn btn-primary btn-green">{% trans "Add" %}</button>
</div>
</div>
</div>
</form>
<h2>Entitlements</h2>
<h2>{% trans "Entitlements" %}</h2>
<div class="table-responsive">
<table class="table table-striped" aria-describedby="uses table">
<thead>
<th scope="col">Role name</th>
<th scope="col">Bank Id</th>
<th scope="col">Action</th>
<th scope="col">{% trans "Role name" %}</th>
<th scope="col">{% trans "Bank Id" %}</th>
<th scope="col">{% trans "Action" %}</th>
</thead>
<tbody>
{% for entitlement in apiuser.entitlements.list %}
@ -111,7 +111,7 @@
{% csrf_token %}
<input type="hidden" name="next" value="{{ request.path }}" />
<input type="hidden" name="role_name" value="{{ entitlement.role_name }}" />
<button type="submit" class="btn btn-primary btn-red">Delete</button>
<button type="submit" class="btn btn-primary btn-red">{% trans "Delete" %}</button>
</form>
{% endif %}
</td>

View File

@ -1,3 +1,4 @@
<a href="?locked_status=active&role_name={{ request.GET.role_name }}" class="btn btn-default{% if locked_status == "active" %} active{% endif %}">Active</a>
<a href="?locked_status=locked&role_name={{ request.GET.role_name }}" class="btn btn-default{% if locked_status == "locked" %} active{% endif %}">Locked</a>
<a href="?locked_status=all&role_name={{ request.GET.role_name }}" class="btn btn-default{% if locked_status == "all" %} active{% endif %}">All</a>
{% load i18n %}
<a href="?locked_status=active&role_name={{ request.GET.role_name }}" class="btn btn-default{% if locked_status == "active" %} active{% endif %}">{% trans "Active" %}</a>
<a href="?locked_status=locked&role_name={{ request.GET.role_name }}" class="btn btn-default{% if locked_status == "locked" %} active{% endif %}">{% trans "Locked" %}</a>
<a href="?locked_status=all&role_name={{ request.GET.role_name }}" class="btn btn-default{% if locked_status == "all" %} active{% endif %}">{% trans "All" %}</a>

View File

@ -1,10 +1,11 @@
{% load i18n %}
<form class="form-inline" method="get">
<div class="form-group">
<label for="offset">Offset:</label>
<label for="offset">{% trans "Offset" %}:</label>
<input type="number" class="form-control" name="offset" id="offset" placeholder="0" value="{{ offset }}">
</div>
<div class="form-group">
<label for="limit">Limit:</label>
<label for="limit">{% trans "Limit" %}:</label>
<input type="number" class="form-control" name="limit" id="limit" placeholder="50" value="{{ limit }}">
</div>
<input type="submit" class="btn btn-default" value ="Refresh" onclick="javascript: form.action='';"></input>

View File

@ -1,10 +1,11 @@
{% load i18n %}
<div id="filter-role" class="filter">
<div class="btn-group">
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
{% if active_role_name_all %}All Roles{% else %}{{ active_role_name }}{% endif %} <span class="caret"></span>
</button>
<ul class="dropdown-menu">
<li><a href="?email={{ active_email }}&amp;username={{ active_username }}&amp;locked_status={{ active_locked_status }}&amp;role_name=All">All Roles</a></li>
<li><a href="?email={{ active_email }}&amp;username={{ active_username }}&amp;locked_status={{ active_locked_status }}&amp;role_name=All">{% trans "All Roles" %}</a></li>
<li role="separator" class="divider"></li>
{% for role_name in role_names %}
<li><a href="?email={{ active_email }}&amp;username={{ active_username }}&amp;role_name={{ role_name }}&amp;locked_status={{ active_locked_status }}">{{ role_name }}</a></li>

View File

@ -1,14 +1,14 @@
{% extends 'base.html' %}
{% load static %}
{% load i18n %}
{% block page_title %}{{ block.super }} / Users{% endblock page_title %}
{% block content %}
<div id="users">
<h1>Users</h1>
<h1>{% trans "Users" %}</h1>
<div id="users-filters">
<h4>Filters</h4>
<h4>{% trans "Filters" %}</h4>
<div class="hidden-xs">
{% include "users/includes/filter_role.html" %}
{% include "users/includes/filter_email.html" %}
@ -41,23 +41,23 @@
<div class="row">
<div class="col-xs-12">
<h4>Pagination</h4>
<h4>{% trans "Pagination" %}</h4>
{% include "users/includes/filter_pagination.html" %}
</div>
</div>
<h4>Statistics</h4>
<h4>{% trans "Statistics" %}</h4>
<ul id="statistics">
<li>Total number of users: {{ statistics.users_num }}
<li>{% trans "Total number of users" %}: {{ statistics.users_num }}
</ul>
<div class="table-responsive">
<table class="table table-hover tablesorter" id="users-list" aria-describedby="users list">
<thead>
<th scope="col">User Id</th>
<th scope="col">Username</th>
<th scope="col">Email</th>
<th scope="col">Action</th>
<th scope="col">{% trans "User Id" %}</th>
<th scope="col">{% trans "Username" %}</th>
<th scope="col">{% trans "Email" %}</th>
<th scope="col">{% trans "Action" %}</th>
</thead>
<tbody>
{% for user in users %}
@ -66,7 +66,7 @@
<td><a href="{{ url_users_detail }}">{{ user.user_id }}</td>
<td>{{ user.username }}</td>
<td>{{ user.email }}</td>
<td><a href="{{ url_users_detail }}" class="btn btn-primary">View</a></td>
<td><a href="{{ url_users_detail }}" class="btn btn-primary">{% trans "View" %}</a></td>
</tr>
{% endfor %}
</tbody>

View File

@ -1,12 +1,11 @@
{% extends 'base.html' %}
{% load static %}
{% load i18n %}
{% block page_title %}{{ block.super }} / Users{% endblock page_title %}
{% block content %}
<div id="user-invitation">
<h1>Invite Developer</h1>
<h1>{% trans "Invite Developer" %}</h1>
<form action="{% url 'my-user-invitation' %}" method="post">
{% csrf_token %}
@ -20,21 +19,21 @@
<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 }}
<strong>{% trans "Bank Id" %} </strong>
{{ form.bank_id }}
</div>
</div>
<div class="col-xs-12 col-sm-4">
{% if form.first_name.errors %}<div class="alert alert-danger">{{ form.first_name.errors }}</div>{% endif %}
<div class="form-group">
{{ form.first_name.label_tag }}
<strong>{% trans "First Name" %} </strong>
{{ form.first_name }}
</div>
</div>
<div class="col-xs-12 col-sm-4">
{% if form.last_name.errors %}<div class="alert alert-danger">{{ form.last_name.errors }}</div>{% endif %}
<div class="form-group">
{{ form.last_name.label_tag }}
<strong>{% trans "Last Name" %} </strong>
{{ form.last_name }}
</div>
</div>
@ -43,21 +42,21 @@
<div class="col-xs-12 col-sm-4">
{% if form.email.errors %}<div class="alert alert-danger">{{ form.email.errors }}</div>{% endif %}
<div class="form-group">
{{ form.email.label_tag }}
<strong>{% trans "email" %} </strong>
{{ form.email }}
</div>
</div>
<div class="col-xs-12 col-sm-4">
{% if form.company.errors %}<div class="alert alert-danger">{{ form.company.errors }}</div>{% endif %}
<div class="form-group">
{{ form.company.label_tag }}
<strong>{% trans "company" %} </strong>
{{ form.company }}
</div>
</div>
<div class="col-xs-12 col-sm-4">
{% if form.country.errors %}<div class="alert alert-danger">{{ form.country.errors }}</div>{% endif %}
<div class="form-group">
{{ form.country.label_tag }}
<strong>{% trans "country" %} </strong>
{{ form.country }}
</div>
</div>
@ -67,12 +66,12 @@
<div class="table-responsive">
<table class="table table-hover tablesorter" id="invitation-list" aria-describedby="invitation list">
<thead>
<th scope="col">First Name</th>
<th scope="col">Last Name</th>
<th scope="col">Email</th>
<th scope="col">company</th>
<th scope="col">country</th>
<th scope="col">status</th>
<th scope="col">{% trans "First Name" %}</th>
<th scope="col">{% trans "Last Name" %}</th>
<th scope="col">{% trans "Email" %}</th>
<th scope="col">{% trans "company" %}</th>
<th scope="col">{% trans "country" %}</th>
<th scope="col">{% trans "status" %}</th>
</thead>
<tbody>
{% for invitation in invitations %}