Merge pull request #365 from tawoe/develop

Develop
This commit is contained in:
Simon Redfern 2024-11-05 14:56:05 +01:00 committed by GitHub
commit 3b477887d1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
53 changed files with 263 additions and 183 deletions

13
.github/dependabot.yml vendored Normal file
View File

@ -0,0 +1,13 @@
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "weekly"

View File

@ -1,6 +1,9 @@
name: build and publish container
name: build and publish container develop branch
on: [push]
on:
push:
branches:
- develop
env:
DOCKER_HUB_ORGANIZATION: ${{ vars.DOCKER_HUB_ORGANIZATION }}
DOCKER_HUB_REPOSITORY_NGINX: apimanager-nginx
@ -17,20 +20,20 @@ jobs:
run: echo "branch=$(echo ${GITHUB_REF#refs/heads/})" >>$GITHUB_OUTPUT
id: extract_branch
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- name: Build the Docker image
run: |
echo "${{ secrets.DOCKER_HUB_TOKEN }}" | docker login -u "${{ secrets.DOCKER_HUB_USERNAME }}" --password-stdin docker.io
docker build . --file .github/Dockerfile_nginx_OC --tag docker.io/${{ env.DOCKER_HUB_ORGANIZATION }}/${{ env.DOCKER_HUB_REPOSITORY_NGINX }}:$GITHUB_SHA --tag docker.io/${{ env.DOCKER_HUB_ORGANIZATION }}/${{ env.DOCKER_HUB_REPOSITORY_NGINX }}:${{ steps.extract_branch.outputs.branch }}-OC
docker build . --file .github/Dockerfile_nginx_OC --tag docker.io/${{ env.DOCKER_HUB_ORGANIZATION }}/${{ env.DOCKER_HUB_REPOSITORY_NGINX }}:$GITHUB_SHA --tag docker.io/${{ env.DOCKER_HUB_ORGANIZATION }}/${{ env.DOCKER_HUB_REPOSITORY_NGINX }}:${{ steps.extract_branch.outputs.branch }}-OC --tag docker.io/${{ env.DOCKER_HUB_ORGANIZATION }}/${{ env.DOCKER_HUB_REPOSITORY_NGINX }}:latest-OC
docker push docker.io/${{ env.DOCKER_HUB_ORGANIZATION }}/${{ env.DOCKER_HUB_REPOSITORY_NGINX }} --all-tags
echo docker apimanager-nginx-OC done
docker build . --file .github/Dockerfile_OC --tag docker.io/${{ env.DOCKER_HUB_ORGANIZATION }}/${{ env.DOCKER_HUB_REPOSITORY }}:$GITHUB_SHA --tag docker.io/${{ env.DOCKER_HUB_ORGANIZATION }}/${{ env.DOCKER_HUB_REPOSITORY }}:${{ steps.extract_branch.outputs.branch }}-OC
docker build . --file .github/Dockerfile_OC --tag docker.io/${{ env.DOCKER_HUB_ORGANIZATION }}/${{ env.DOCKER_HUB_REPOSITORY }}:$GITHUB_SHA --tag docker.io/${{ env.DOCKER_HUB_ORGANIZATION }}/${{ env.DOCKER_HUB_REPOSITORY }}:${{ steps.extract_branch.outputs.branch }}-OC --tag docker.io/${{ env.DOCKER_HUB_ORGANIZATION }}/${{ env.DOCKER_HUB_REPOSITORY }}:latest-OC
docker push docker.io/${{ env.DOCKER_HUB_ORGANIZATION }}/${{ env.DOCKER_HUB_REPOSITORY }} --all-tags
echo docker api-manager-OC done
docker build . --file Dockerfile_nginx --tag docker.io/${{ env.DOCKER_HUB_ORGANIZATION }}/${{ env.DOCKER_HUB_REPOSITORY_NGINX }}:$GITHUB_SHA --tag docker.io/${{ env.DOCKER_HUB_ORGANIZATION }}/${{ env.DOCKER_HUB_REPOSITORY_NGINX }}:${{ steps.extract_branch.outputs.branch }}
docker build . --file Dockerfile_nginx --tag docker.io/${{ env.DOCKER_HUB_ORGANIZATION }}/${{ env.DOCKER_HUB_REPOSITORY_NGINX }}:$GITHUB_SHA --tag docker.io/${{ env.DOCKER_HUB_ORGANIZATION }}/${{ env.DOCKER_HUB_REPOSITORY_NGINX }}:${{ steps.extract_branch.outputs.branch }} --tag docker.io/${{ env.DOCKER_HUB_ORGANIZATION }}/${{ env.DOCKER_HUB_REPOSITORY_NGINX }}:latest
docker push docker.io/${{ env.DOCKER_HUB_ORGANIZATION }}/${{ env.DOCKER_HUB_REPOSITORY_NGINX }} --all-tags
echo docker apimanager-nginx done
docker build . --file Dockerfile --tag docker.io/${{ env.DOCKER_HUB_ORGANIZATION }}/${{ env.DOCKER_HUB_REPOSITORY }}:$GITHUB_SHA --tag docker.io/${{ env.DOCKER_HUB_ORGANIZATION }}/${{ env.DOCKER_HUB_REPOSITORY }}:${{ steps.extract_branch.outputs.branch }}
docker build . --file Dockerfile --tag docker.io/${{ env.DOCKER_HUB_ORGANIZATION }}/${{ env.DOCKER_HUB_REPOSITORY }}:$GITHUB_SHA --tag docker.io/${{ env.DOCKER_HUB_ORGANIZATION }}/${{ env.DOCKER_HUB_REPOSITORY }}:${{ steps.extract_branch.outputs.branch }} --tag docker.io/${{ env.DOCKER_HUB_ORGANIZATION }}/${{ env.DOCKER_HUB_REPOSITORY }}:latest
docker push docker.io/${{ env.DOCKER_HUB_ORGANIZATION }}/${{ env.DOCKER_HUB_REPOSITORY }} --all-tags
echo docker api-manager done
- uses: sigstore/cosign-installer@main

View File

@ -0,0 +1,69 @@
name: build and publish container non develop branches
on:
push:
branches:
- '*'
- '!develop'
env:
DOCKER_HUB_ORGANIZATION: ${{ vars.DOCKER_HUB_ORGANIZATION }}
DOCKER_HUB_REPOSITORY_NGINX: apimanager-nginx
DOCKER_HUB_REPOSITORY: api-manager
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Extract branch name
shell: bash
run: echo "branch=$(echo ${GITHUB_REF#refs/heads/})" >>$GITHUB_OUTPUT
id: extract_branch
- uses: actions/checkout@v4
- name: Build the Docker image
run: |
echo "${{ secrets.DOCKER_HUB_TOKEN }}" | docker login -u "${{ secrets.DOCKER_HUB_USERNAME }}" --password-stdin docker.io
docker build . --file .github/Dockerfile_nginx_OC --tag docker.io/${{ env.DOCKER_HUB_ORGANIZATION }}/${{ env.DOCKER_HUB_REPOSITORY_NGINX }}:$GITHUB_SHA --tag docker.io/${{ env.DOCKER_HUB_ORGANIZATION }}/${{ env.DOCKER_HUB_REPOSITORY_NGINX }}:${{ steps.extract_branch.outputs.branch }}-OC
docker push docker.io/${{ env.DOCKER_HUB_ORGANIZATION }}/${{ env.DOCKER_HUB_REPOSITORY_NGINX }} --all-tags
echo docker apimanager-nginx-OC done
docker build . --file .github/Dockerfile_OC --tag docker.io/${{ env.DOCKER_HUB_ORGANIZATION }}/${{ env.DOCKER_HUB_REPOSITORY }}:$GITHUB_SHA --tag docker.io/${{ env.DOCKER_HUB_ORGANIZATION }}/${{ env.DOCKER_HUB_REPOSITORY }}:${{ steps.extract_branch.outputs.branch }}-OC
docker push docker.io/${{ env.DOCKER_HUB_ORGANIZATION }}/${{ env.DOCKER_HUB_REPOSITORY }} --all-tags
echo docker api-manager-OC done
docker build . --file Dockerfile_nginx --tag docker.io/${{ env.DOCKER_HUB_ORGANIZATION }}/${{ env.DOCKER_HUB_REPOSITORY_NGINX }}:$GITHUB_SHA --tag docker.io/${{ env.DOCKER_HUB_ORGANIZATION }}/${{ env.DOCKER_HUB_REPOSITORY_NGINX }}:${{ steps.extract_branch.outputs.branch }}
docker push docker.io/${{ env.DOCKER_HUB_ORGANIZATION }}/${{ env.DOCKER_HUB_REPOSITORY_NGINX }} --all-tags
echo docker apimanager-nginx done
docker build . --file Dockerfile --tag docker.io/${{ env.DOCKER_HUB_ORGANIZATION }}/${{ env.DOCKER_HUB_REPOSITORY }}:$GITHUB_SHA --tag docker.io/${{ env.DOCKER_HUB_ORGANIZATION }}/${{ env.DOCKER_HUB_REPOSITORY }}:${{ steps.extract_branch.outputs.branch }}
docker push docker.io/${{ env.DOCKER_HUB_ORGANIZATION }}/${{ env.DOCKER_HUB_REPOSITORY }} --all-tags
echo docker api-manager done
- uses: sigstore/cosign-installer@main
- name: Write signing key to disk (only needed for `cosign sign --key`)
run: echo "${{ secrets.COSIGN_PRIVATE_KEY }}" > cosign.key
- name: Sign container image with annotations from our environment
env:
COSIGN_PASSWORD: ${{ secrets.COSIGN_PASSWORD }}
run: |
cosign sign -y --key cosign.key \
-a "repo=${{ github.repository }}" \
-a "workflow=${{ github.workflow }}" \
-a "ref=${{ github.sha }}" \
docker.io/${{ env.DOCKER_HUB_ORGANIZATION }}/${{ env.DOCKER_HUB_REPOSITORY }}:${{ steps.extract_branch.outputs.branch }}-OC
cosign sign -y --key cosign.key \
-a "repo=${{ github.repository }}" \
-a "workflow=${{ github.workflow }}" \
-a "ref=${{ github.sha }}-nginx" \
docker.io/${{ env.DOCKER_HUB_ORGANIZATION }}/${{ env.DOCKER_HUB_REPOSITORY_NGINX }}:${{ steps.extract_branch.outputs.branch }}-OC
cosign sign -y --key cosign.key \
-a "repo=${{ github.repository }}" \
-a "workflow=${{ github.workflow }}" \
-a "ref=${{ github.sha }}" \
docker.io/${{ env.DOCKER_HUB_ORGANIZATION }}/${{ env.DOCKER_HUB_REPOSITORY }}:${{ steps.extract_branch.outputs.branch }}
cosign sign -y --key cosign.key \
-a "repo=${{ github.repository }}" \
-a "workflow=${{ github.workflow }}" \
-a "ref=${{ github.sha }}-nginx" \
docker.io/${{ env.DOCKER_HUB_ORGANIZATION }}/${{ env.DOCKER_HUB_REPOSITORY_NGINX }}:${{ steps.extract_branch.outputs.branch }}

View File

@ -2,9 +2,8 @@ name: scan container image
on:
workflow_run:
workflows: [build and publish container]
types:
- completed
workflows: [build and publish container develop branch, build and publish container non develop branches]
types: [completed]
env:
## Sets environment variable
DOCKER_HUB_ORGANIZATION: ${{ vars.DOCKER_HUB_ORGANIZATION }}
@ -40,7 +39,6 @@ jobs:
format: 'template'
template: '@/contrib/sarif.tpl'
output: 'trivy-results.sarif'
security-checks: 'vuln'
severity: 'CRITICAL,HIGH'
timeout: '30m'
cache-dir: .trivy

View File

@ -2,4 +2,4 @@ from django.apps import AppConfig
class AccountConfig(AppConfig):
name = 'account-list'
name = 'accountlist'

View File

@ -3,14 +3,14 @@
URLs for Account list app
"""
from django.conf.urls import url
from django.urls import re_path
from .views import AccountListView, ExportCsvView
urlpatterns = [
url(r'^$',
re_path(r'^$',
AccountListView.as_view(),
name='account-list'),
url(r'^export_csv$',
re_path(r'^export_csv$',
ExportCsvView.as_view(),
name='export-csv-account')
]

View File

@ -3,7 +3,7 @@ Forms of Accounts app
"""
from django import forms
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
import random

View File

@ -3,11 +3,11 @@
URLs for Account app
"""
from django.conf.urls import url
from django.urls import re_path
from .views import IndexAccountsView
urlpatterns = [
url(r'^create',
re_path(r'^create',
IndexAccountsView.as_view(),
name='accounts-create'),

View File

@ -13,7 +13,7 @@ from django.urls import reverse_lazy
from django.views.generic import FormView
from obp.api import API, APIError
from .forms import CreateAccountForm
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
class IndexAccountsView(LoginRequiredMixin, FormView):

View File

@ -1,5 +1,5 @@
from django.apps import AppConfig
class CustomersConfig(AppConfig):
name = 'customers_list'
class ApiCollectionListConfig(AppConfig):
name = 'apicollectionlist'

View File

@ -3,14 +3,14 @@
URLs for Api Collection list app
"""
from django.conf.urls import url
from django.urls import re_path
from .views import ApiCollectionListView, ExportCsvView
urlpatterns = [
url(r'^$',
re_path(r'^$',
ApiCollectionListView.as_view(),
name='apicollection-list'),
url(r'^export_csv$',
re_path(r'^export_csv$',
ExportCsvView.as_view(),
name='export-csv-apicollection')
]

View File

@ -3,28 +3,25 @@
URLs for config app
"""
from django.conf.urls import url
from django.urls import re_path
from apicollections.views import IndexView, apicollections_save, \
apicollections_delete, DetailView, DeleteCollectionEndpointView, apicollections_update
urlpatterns = [
url(r'^$',
re_path(r'^$',
IndexView.as_view(),
name='apicollections-index'),
url(r'save/apicollection', apicollections_save,
re_path(r'save/apicollection', apicollections_save,
name='apicollection-save'),
url(r'update/apicollection', apicollections_update,
re_path(r'update/apicollection', apicollections_update,
name='apicollection-update'),
url(r'delete/apicollection', apicollections_delete,
re_path(r'delete/apicollection', apicollections_delete,
name='apicollection-delete'),
url(r'^my-api-collection-ids/(?P<api_collection_id>[\w\@\.\+-]+)$',
re_path(r'^my-api-collection-ids/(?P<api_collection_id>[\w\@\.\+-]+)$',
DetailView.as_view(),
name='my-api-collection-detail'),
url(r'^delete/api-collections/(?P<api_collection_id>[\w-]+)/api-collection-endpoint/(?P<operation_id>[\w\@\.\+-]+)$',
re_path(r'^delete/api-collections/(?P<api_collection_id>[\w-]+)/api-collection-endpoint/(?P<operation_id>[\w\@\.\+-]+)$',
DeleteCollectionEndpointView.as_view(),
name='delete-api-collection-endpoint'),
# url(r'^add/api-collections/(?P<api_collection_id>[\w-]+)/api-collection-endpoints/(?P<operation_id>[\w\@\.\+-]+)$',
# AddCollectionEndpointView.as_view(),
# name='add-api-collection-endpoint'),
]

View File

@ -44,7 +44,7 @@ INSTALLED_APPS = [
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'bootstrap3',
'bootstrap',
'bootstrap_datepicker_plus',
'mathfilters',
'base',

View File

@ -3,7 +3,7 @@
URLs for apimanager
"""
from django.conf.urls import url, include
from django.urls import re_path, include
from django.conf.urls.i18n import i18n_patterns
from base.views import HomeView
@ -16,46 +16,46 @@ from obp.views import (
urlpatterns = [
#These pages URLs have no GUI
url(r'^oauth/initiate$',
re_path(r'^oauth/initiate$',
OAuthInitiateView.as_view(), name='oauth-initiate'),
url(r'^oauth/authorize$',
re_path(r'^oauth/authorize$',
OAuthAuthorizeView.as_view(), name='oauth-authorize'),
url(r'^directlogin$',
re_path(r'^directlogin$',
DirectLoginView.as_view(), name='directlogin'),
url(r'^gatewaylogin$',
re_path(r'^gatewaylogin$',
GatewayLoginView.as_view(), name='gatewaylogin'),
# Defining authentication URLs here and not including oauth.urls for
# backward compatibility
]
urlpatterns += i18n_patterns(
#urlpatterns = (
url(r'^$', HomeView.as_view(), name="home"),
url(r'^single-sign-on',
re_path(r'^$', HomeView.as_view(), name="home"),
re_path(r'^single-sign-on',
OAuthInitiateView.as_view(), name='single-sign-on'),
url(r'^logout$', LogoutView.as_view(), name='oauth-logout'),
url(r'^systemviews/', include('systemviews.urls')),
url(r'^accounts/', include('accounts.urls')),
url(r'^account/list', include('accountlist.urls')),
url(r'^consumers/', include('consumers.urls')),
url(r'^entitlementrequests/', include('entitlementrequests.urls')),
url(r'^users/', include('users.urls')),
url(r'^branches/', include('branches.urls')),
url(r'^atms/', include('atms.urls')),
url(r'^atms/list', include('atmlist.urls')),
url(r'^banks/', include('banks.urls')),
url(r'^banks/list', include('banklist.urls')),
url(r'^products/', include('products.urls')),
url(r'^products/list', include('productlist.urls')),
url(r'^customers/', include('customers.urls')),
url(r'^customer/list', include('customerlist.urls')),
url(r'^metrics/', include('metrics.urls')),
url(r'^config/', include('config.urls')),
url(r'^webui/', include('webui.urls')),
url(r'^methodrouting/', include('methodrouting.urls')),
url(r'^connectormethod/', include('connectormethod.urls')),
url(r'^dynamicendpoints/', include('dynamicendpoints.urls')),
url(r'^apicollections/', include('apicollections.urls')),
url(r'^apicollections-list', include('apicollectionlist.urls')),
re_path(r'^logout$', LogoutView.as_view(), name='oauth-logout'),
re_path(r'^systemviews/', include('systemviews.urls')),
re_path(r'^accounts/', include('accounts.urls')),
re_path(r'^account/list', include('accountlist.urls')),
re_path(r'^consumers/', include('consumers.urls')),
re_path(r'^entitlementrequests/', include('entitlementrequests.urls')),
re_path(r'^users/', include('users.urls')),
re_path(r'^branches/', include('branches.urls')),
re_path(r'^atms/', include('atms.urls')),
re_path(r'^atms/list', include('atmlist.urls')),
re_path(r'^banks/', include('banks.urls')),
re_path(r'^banks/list', include('banklist.urls')),
re_path(r'^products/', include('products.urls')),
re_path(r'^products/list', include('productlist.urls')),
re_path(r'^customers/', include('customers.urls')),
re_path(r'^customer/list', include('customerlist.urls')),
re_path(r'^metrics/', include('metrics.urls')),
re_path(r'^config/', include('config.urls')),
re_path(r'^webui/', include('webui.urls')),
re_path(r'^methodrouting/', include('methodrouting.urls')),
re_path(r'^connectormethod/', include('connectormethod.urls')),
re_path(r'^dynamicendpoints/', include('dynamicendpoints.urls')),
re_path(r'^apicollections/', include('apicollections.urls')),
re_path(r'^apicollections-list', include('apicollectionlist.urls')),
)
#prefix_default_language=False,
#)+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

View File

@ -2,4 +2,4 @@ from django.apps import AppConfig
class AtmsConfig(AppConfig):
name = 'atms_list'
name = 'atmlist'

View File

@ -3,14 +3,14 @@
URLs for ATM list app
"""
from django.conf.urls import url
from django.urls import re_path
from .views import AtmListView, ExportCsvView
urlpatterns = [
url(r'^$',
re_path(r'^$',
AtmListView.as_view(),
name='atm-list'),
url(r'^export_csv$',
re_path(r'^export_csv$',
ExportCsvView.as_view(),
name='export-csv')
]

View File

@ -3,7 +3,7 @@ Forms of ATMs app
"""
from django import forms
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
import random

View File

@ -3,20 +3,20 @@
URLs for metrics app
"""
from django.conf.urls import url
from django.urls import re_path
from atms.views import IndexAtmsView, UpdateAtmsView, atm_attribute_save, atm_attribute_delete, atm_attribute_update
urlpatterns = [
url(r'^create',
re_path(r'^create',
IndexAtmsView.as_view(),
name='atms_create'),
url(r'^update/(?P<atm_id>[ 0-9\w|\W\@\.\+-]+)/bank/(?P<bank_id>[0-9\w\@\.\+-]+)/$',
re_path(r'^update/(?P<atm_id>[ 0-9\w|\W\@\.\+-]+)/bank/(?P<bank_id>[0-9\w\@\.\+-]+)/$',
UpdateAtmsView.as_view(),
name='atms_update'),
url(r'save/attribute', atm_attribute_save,
re_path(r'save/attribute', atm_attribute_save,
name='atm_attribute_save'),
url(r'delete/attribute', atm_attribute_delete,
re_path(r'delete/attribute', atm_attribute_delete,
name='atm_attribute_delete'),
url(r'updateattribute/attribute', atm_attribute_update,
re_path(r'updateattribute/attribute', atm_attribute_update,
name='atm_attribute_update'),
]

View File

@ -13,7 +13,7 @@ from django.urls import reverse_lazy
from django.views.generic import FormView
from obp.api import API, APIError
from .forms import CreateAtmForm
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
from django.views.decorators.csrf import csrf_exempt
from django.urls import reverse, reverse_lazy
from base.utils import exception_handle, error_once_only

View File

@ -2,4 +2,4 @@ from django.apps import AppConfig
class BanksConfig(AppConfig):
name = 'banks_list'
name = 'banklist'

View File

@ -3,11 +3,11 @@
URLs for Bank list app
"""
from django.conf.urls import url
from django.urls import re_path
from .views import BankListView #, ExportCsvView
urlpatterns = [
url(r'^$',
re_path(r'^$',
BankListView.as_view(),
name='bank-list'),

View File

@ -3,7 +3,7 @@ Forms of Banks app
"""
from django import forms
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
import random

View File

@ -3,20 +3,20 @@
URLs for Bank app
"""
from django.conf.urls import url
from django.urls import re_path
from banks.views import IndexBanksView, UpdateBanksView, bank_attribute_save, bank_attribute_update, bank_attribute_delete
urlpatterns = [
url(r'^create',
re_path(r'^create',
IndexBanksView.as_view(),
name='banks_create'),
url(r'^update/bank/(?P<bank_id>[0-9\w\@\.\+-]+)/$',
re_path(r'^update/bank/(?P<bank_id>[0-9\w\@\.\+-]+)/$',
UpdateBanksView.as_view(),
name='banks_update'),
url(r'save/attribute', bank_attribute_save,
re_path(r'save/attribute', bank_attribute_save,
name='bank_attribute_save'),
url(r'updateattribute/attribute', bank_attribute_update,
re_path(r'updateattribute/attribute', bank_attribute_update,
name='bank_attribute_update'),
url(r'delete/attribute', bank_attribute_delete,
re_path(r'delete/attribute', bank_attribute_delete,
name='bank_attribute_delete'),
]

View File

@ -13,7 +13,7 @@ from django.urls import reverse, reverse_lazy
from django.views.generic import FormView
from obp.api import API, APIError
from .forms import CreateBankForm
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
from apimanager.settings import DEBUG
from django.views.decorators.csrf import csrf_exempt
from base.utils import exception_handle, error_once_only

View File

@ -43,9 +43,9 @@
<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>
<li {% if request.path == url_users_detail %} class="active" {% endif %}><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 User" %}</a></li>
<li {% if request.path == my_user_invitation %} class="active" {% endif %}><a href="{{ my_user_invitation }}">{% trans "Invite User" %}</a></li>
</ul>
</li>
{% url "api-metrics" as api_metrics_url %} {% url "connector-metrics" as connector_metrics_url %} {% url "weekly-summary" as metrics_summary_url %}
@ -123,7 +123,7 @@
{% if 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">
<div class="alert alert-dismissible{% if message.tags == "error" %} alert-danger{% else %}{% if message.tags == "debug" %} alert-info{% else %} alert-{{ message.tags }}{% endif %}{% endif %}" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span
aria-hidden="true">&times;</span></button>
{{ message }}

View File

@ -3,7 +3,7 @@ Forms of branches app
"""
from django import forms
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
import random

View File

@ -3,15 +3,15 @@
URLs for metrics app
"""
from django.conf.urls import url
from django.urls import re_path
from .views import IndexBranchesView, UpdateBranchesView
urlpatterns = [
url(r'^$',
re_path(r'^$',
IndexBranchesView.as_view(),
name='branches_list'),
url(r'^update/(?P<branch_id>[0-9\w\@\.\+-]+)/bank/(?P<bank_id>[0-9\w\@\.\+-]+)/$',
re_path(r'^update/(?P<branch_id>[0-9\w\@\.\+-]+)/bank/(?P<bank_id>[0-9\w\@\.\+-]+)/$',
UpdateBranchesView.as_view(),
name='branches_update')
]

View File

@ -3,12 +3,12 @@
URLs for config app
"""
from django.conf.urls import url
from django.urls import re_path
from .views import IndexView
urlpatterns = [
url(r'^$',
re_path(r'^$',
IndexView.as_view(),
name='config-index'),
]

View File

@ -3,16 +3,16 @@
URLs for config app
"""
from django.conf.urls import url
from django.urls import re_path
from connectormethod.views import IndexView, connectormethod_save, connectormethod_update
urlpatterns = [
url(r'^$',
re_path(r'^$',
IndexView.as_view(),
name='connectormethod'),
url(r'save/connectormethod', connectormethod_save,
re_path(r'save/connectormethod', connectormethod_save,
name='connectormethod-save'),
url(r'^update/connectormethod', connectormethod_update,
re_path(r'^update/connectormethod', connectormethod_update,
name='connectormethod-update')
]

View File

@ -3,21 +3,21 @@
URLs for consumers app
"""
from django.conf.urls import url
from django.urls import re_path
from .views import IndexView, DetailView, EnableView, DisableView
urlpatterns = [
url(r'^$',
re_path(r'^$',
IndexView.as_view(),
name='consumers-index'),
url(r'^(?P<consumer_id>[0-9a-z\-]+)$',
re_path(r'^(?P<consumer_id>[0-9a-z\-]+)$',
DetailView.as_view(),
name='consumers-detail'),
url(r'^(?P<consumer_id>[0-9a-z\-]+)/enable$',
re_path(r'^(?P<consumer_id>[0-9a-z\-]+)/enable$',
EnableView.as_view(),
name='consumers-enable'),
url(r'^(?P<consumer_id>[0-9a-z\-]+)/disable$',
re_path(r'^(?P<consumer_id>[0-9a-z\-]+)/disable$',
DisableView.as_view(),
name='consumers-disable'),
]

View File

@ -2,4 +2,4 @@ from django.apps import AppConfig
class CustomersConfig(AppConfig):
name = 'customers_list'
name = 'customerlist'

View File

@ -3,14 +3,14 @@
URLs for customer list app
"""
from django.conf.urls import url
from django.urls import re_path
from .views import CustomerListView, ExportCsvView
urlpatterns = [
url(r'^$',
re_path(r'^$',
CustomerListView.as_view(),
name='customer-list'),
url(r'^export_csv$',
re_path(r'^export_csv$',
ExportCsvView.as_view(),
name='export-csv-customer')
]

View File

@ -5,10 +5,10 @@ Forms of customers app
from django import forms
from django.conf import settings
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
from apimanager.settings import API_DATE_FORMAT_WITH_DAY, API_FIELD_TIME_FORMAT
from bootstrap_datepicker_plus import DatePickerInput, DateTimePickerInput
from bootstrap_datepicker_plus.widgets import DatePickerInput, DateTimePickerInput
from datetime import datetime, timedelta
from obp.api import APIError

View File

@ -3,11 +3,11 @@
URLs for customers app
"""
from django.conf.urls import url
from django.urls import re_path
from .views import CreateView
urlpatterns = [
url(r'^$',
re_path(r'^$',
CreateView.as_view(),
name='customers-create'),
]

View File

@ -3,16 +3,16 @@
URLs for config app
"""
from django.conf.urls import url
from django.urls import re_path
from dynamicendpoints.views import IndexView, dynamicendpoints_save,dynamicendpoints_delete
urlpatterns = [
url(r'^$',
re_path(r'^$',
IndexView.as_view(),
name='dynamicendpoints-index'),
url(r'save/dynamicendpoint', dynamicendpoints_save,
re_path(r'save/dynamicendpoint', dynamicendpoints_save,
name='dynamicendpoint-save'),
url(r'delete/dynamicendpoint', dynamicendpoints_delete,
re_path(r'delete/dynamicendpoint', dynamicendpoints_delete,
name='dynamicendpoint-delete')
]

View File

@ -3,18 +3,18 @@
URLs for entitlement requests app
"""
from django.conf.urls import url
from django.urls import re_path
from .views import IndexView, RejectEntitlementRequest, AcceptEntitlementRequest
urlpatterns = [
url(r'^$',
re_path(r'^$',
IndexView.as_view(),
name='entitlementrequests-index'),
url(r'^entitlement-requests/entitlement_request_id/(?P<entitlement_request_id>[\w\@\.\+-]+)$',
re_path(r'^entitlement-requests/entitlement_request_id/(?P<entitlement_request_id>[\w\@\.\+-]+)$',
RejectEntitlementRequest.as_view(),
name='entitlement-request-delete'),
url(r'^entitlement-requests/user_id/(?P<user_id>[\w\@\.\+-]+)$',
re_path(r'^entitlement-requests/user_id/(?P<user_id>[\w\@\.\+-]+)$',
AcceptEntitlementRequest.as_view(),
name='entitlement-request-accept'),
]

View File

@ -3,16 +3,16 @@
URLs for config app
"""
from django.conf.urls import url
from django.urls import re_path
from methodrouting.views import IndexView, methodrouting_save, methodrouting_delete
urlpatterns = [
url(r'^$',
re_path(r'^$',
IndexView.as_view(),
name='methodrouting-index'),
url(r'save/method', methodrouting_save,
re_path(r'save/method', methodrouting_save,
name='methodrouting-save'),
url(r'delete/method', methodrouting_delete,
re_path(r'delete/method', methodrouting_delete,
name='methodrouting-delete'),
]

View File

@ -8,9 +8,9 @@ from django.conf import settings
from datetime import date
from django.forms.widgets import SelectMultiple, CheckboxInput, CheckboxSelectMultiple
from datetime import datetime, timedelta
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
from bootstrap_datepicker_plus import DateTimePickerInput
from bootstrap_datepicker_plus.widgets import DateTimePickerInput
from apimanager.settings import API_DATE_FORMAT_WITH_DAY_DATE_TIME
API_DATE_FORMAT_WITH_MILLISECONDS_PLACEHOLDER = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"

View File

@ -3,7 +3,7 @@
URLs for metrics app
"""
from django.conf.urls import url
from django.urls import re_path
from .views import (
APIMetricsView,
@ -20,37 +20,37 @@ from .views import (
)
urlpatterns = [
url(r'^api/$',
re_path(r'^api/$',
APIMetricsView.as_view(),
name='api-metrics'),
url(r'^api/last-endpoint/$',
re_path(r'^api/last-endpoint/$',
get_metric_last_endpoint,
name='api-metrics-last-endpoint'),
url(r'^api/summary-partial-function$',
re_path(r'^api/summary-partial-function$',
APISummaryPartialFunctionView.as_view(),
name='api-metrics-summary-partial-function'),
url(r'^connector/$',
re_path(r'^connector/$',
ConnectorMetricsView.as_view(),
name='connector-metrics'),
url(r'^monthly-summary/$',
re_path(r'^monthly-summary/$',
MonthlyMetricsSummaryView.as_view(),
name='metrics-summary'),
url(r'^yearly-summary/$',
re_path(r'^yearly-summary/$',
YearlySummaryView.as_view(),
name='yearly-summary'),
url(r'^quarterly-summary/$',
re_path(r'^quarterly-summary/$',
QuarterlySummaryView.as_view(),
name='quarterly-summary'),
url(r'^weekly-summary/$',
re_path(r'^weekly-summary/$',
WeeklySummaryView.as_view(),
name='weekly-summary'),
url(r'^daily-summary/$',
re_path(r'^daily-summary/$',
DailySummaryView.as_view(),
name='daily-summary'),
url(r'^hourly-summary/$',
re_path(r'^hourly-summary/$',
HourlySummaryView.as_view(),
name='hourly-summary'),
url(r'^custom-summary/$',
re_path(r'^custom-summary/$',
CustomSummaryView.as_view(),
name='custom-summary'),
]

View File

@ -15,7 +15,7 @@ import requests
from requests.exceptions import ConnectionError
from django.conf import settings
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
DATE_FORMAT = '%d/%b/%Y %H:%M:%S'
LOGGER = logging.getLogger(__name__)

View File

@ -3,7 +3,7 @@
URLs for OBP app
"""
from django.conf.urls import url
from django.urls import re_path
from .views import (
OAuthInitiateView, OAuthAuthorizeView,
@ -14,14 +14,14 @@ from .views import (
urlpatterns = [
url(r'^oauth/initiate$',
re_path(r'^oauth/initiate$',
OAuthInitiateView.as_view(), name='oauth-initiate'),
url(r'^oauth/authorize$',
re_path(r'^oauth/authorize$',
OAuthAuthorizeView.as_view(), name='oauth-authorize'),
url(r'^directlogin$',
re_path(r'^directlogin$',
DirectLoginView.as_view(), name='directlogin'),
url(r'^gatewaylogin$',
re_path(r'^gatewaylogin$',
GatewayLoginView.as_view(), name='gatewaylogin'),
url(r'^logout$',
re_path(r'^logout$',
LogoutView.as_view(), name='oauth-logout'),
]

View File

@ -2,4 +2,4 @@ from django.apps import AppConfig
class ProductsConfig(AppConfig):
name = 'products_list'
name = 'productlist'

View File

@ -3,14 +3,14 @@
URLs for Product list app
"""
from django.conf.urls import url
from django.urls import re_path
from .views import ProductListView, ExportCsvView
urlpatterns = [
url(r'^$',
re_path(r'^$',
ProductListView.as_view(),
name='product-list'),
url(r'^export_csv$',
re_path(r'^export_csv$',
ExportCsvView.as_view(),
name='export-csv-product'),

View File

@ -3,7 +3,7 @@ Forms of branches app
"""
from django import forms
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
import random

View File

@ -3,18 +3,18 @@
URLs for metrics app
"""
from django.conf.urls import url
from django.urls import re_path
from .views import IndexProductView, UpdateProductView, create_list
urlpatterns = [
url(r'^create',
re_path(r'^create',
IndexProductView.as_view(),
name='products-create'),
url(r'^update/(?P<product_code>[0-9\w\@\.\+-]+)/bank/(?P<bank_id>[0-9\w\@\.\+-]+)/$',
re_path(r'^update/(?P<product_code>[0-9\w\@\.\+-]+)/bank/(?P<bank_id>[0-9\w\@\.\+-]+)/$',
UpdateProductView.as_view(),
name='products_update'),
url(r'^createProductList',
re_path(r'^createProductList',
create_list,
name = 'create-product-list'),
]

View File

@ -1,5 +1,5 @@
from django.apps import AppConfig
class AtmsConfig(AppConfig):
name = 'atms'
class SystemViewsConfig(AppConfig):
name = 'systemviews'

View File

@ -3,11 +3,11 @@
URLs for System View app
"""
from django.conf.urls import url
from django.urls import re_path
from .views import SystemView
urlpatterns = [
url(r'^$',
re_path(r'^$',
SystemView.as_view(),
name='system_view'),
]

View File

@ -6,6 +6,6 @@ App config for users app
from django.apps import AppConfig
class BranchesConfig(AppConfig):
"""Config for branches"""
name = 'branches'
class UsersConfig(AppConfig):
"""Config for users"""
name = 'users'

View File

@ -4,7 +4,7 @@ Forms of users app
"""
from django import forms
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _
class AddEntitlementForm(forms.Form):
user_id = forms.CharField(

View File

@ -3,35 +3,35 @@
URLs for users app
"""
from django.conf.urls import url
from django.urls import re_path
from django.urls import path
from .views import IndexView, DetailView, MyDetailView, DeleteEntitlementView, InvitationView, UserStatusUpdateView, \
ExportCsvView, AutocompleteFieldView, DeleteAttributeView
urlpatterns = [
url(r'^all$',
re_path(r'^all$',
IndexView.as_view(),
name='users-index'),
url(r'^all/user_id/(?P<user_id>[\w\@\.\+-]+)$',
re_path(r'^all/user_id/(?P<user_id>[\w\@\.\+-]+)$',
DetailView.as_view(),
name='users-detail'),
url(r'^myuser$',
re_path(r'^myuser$',
MyDetailView.as_view(),
name='my-user-detail'),
url(r'^myuser/invitation$',
re_path(r'^myuser/invitation$',
InvitationView.as_view(),
name='my-user-invitation'),
url(r'^(?P<user_id>[\w-]+)/entitlement/delete/(?P<entitlement_id>[\w-]+)$',
re_path(r'^(?P<user_id>[\w-]+)/entitlement/delete/(?P<entitlement_id>[\w-]+)$',
DeleteEntitlementView.as_view(),
name='users-delete-entitlement'),
url(r'^(?P<user_id>[\w-]+)/atribute/delete/(?P<user_attribute_id>[\w-]+)$',
re_path(r'^(?P<user_id>[\w-]+)/atribute/delete/(?P<user_attribute_id>[\w-]+)$',
DeleteAttributeView.as_view(),
name='users-delete-attribute'),
url(r'^(?P<user_id>[\w-]+)/userStatusUpdateView/(?P<username>[\w\@\.\+-]+)$',
re_path(r'^(?P<user_id>[\w-]+)/userStatusUpdateView/(?P<username>[\w\@\.\+-]+)$',
UserStatusUpdateView.as_view(),
name='user-status-update'),
url(r'^export_csv$',
re_path(r'^export_csv$',
ExportCsvView.as_view(),
name='export-csv-users'),
]

View File

@ -8,4 +8,4 @@ from django.apps import AppConfig
class WebuiConfig(AppConfig):
"""Config for config"""
name = 'Webui'
name = 'webui'

View File

@ -3,16 +3,16 @@
URLs for config app
"""
from django.conf.urls import url
from django.urls import re_path
from .views import IndexView, webui_save, webui_delete
urlpatterns = [
url(r'^$',
re_path(r'^$',
IndexView.as_view(),
name='webui-index'),
url(r'save/method', webui_save,
re_path(r'save/method', webui_save,
name='methodrouting-save'),
url(r'delete/method', webui_delete,
re_path(r'delete/method', webui_delete,
name='methodrouting-delete')
]

View File

@ -1,13 +1,13 @@
psycopg2
psycopg
#Django==1.11.7
Django==2.2.28
Django==4.2.16
oauthlib==3.2.2
requests==2.32.3
requests-oauthlib==1.3.1
PyJWT==2.8.0
gunicorn==22.0.0
matplotlib
django-bootstrap-datepicker-plus==3.0.5
django-bootstrap-datepicker-plus
django-mathfilters
django-bootstrap3
django-bootstrap
django-csp