From 31ec9ad3b211c0e688700462037ab13bd94acde7 Mon Sep 17 00:00:00 2001 From: Reena Aheer Date: Mon, 3 Apr 2023 16:42:25 +0200 Subject: [PATCH 1/3] get bank --- apimanager/banklist/__init__.py | 0 apimanager/banklist/admin.py | 3 + apimanager/banklist/apps.py | 5 ++ apimanager/banklist/models.py | 4 + .../banklist/static/banklist/css/banklist.css | 18 +++++ .../banklist/static/banklist/js/banklist.js | 5 ++ .../banklist/templates/banklist/banklist.html | 45 +++++++++++ apimanager/banklist/tests.py | 3 + apimanager/banklist/urls.py | 16 ++++ apimanager/banklist/views.py | 81 +++++++++++++++++++ 10 files changed, 180 insertions(+) create mode 100644 apimanager/banklist/__init__.py create mode 100644 apimanager/banklist/admin.py create mode 100644 apimanager/banklist/apps.py create mode 100644 apimanager/banklist/models.py create mode 100644 apimanager/banklist/static/banklist/css/banklist.css create mode 100644 apimanager/banklist/static/banklist/js/banklist.js create mode 100644 apimanager/banklist/templates/banklist/banklist.html create mode 100644 apimanager/banklist/tests.py create mode 100644 apimanager/banklist/urls.py create mode 100644 apimanager/banklist/views.py diff --git a/apimanager/banklist/__init__.py b/apimanager/banklist/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/apimanager/banklist/admin.py b/apimanager/banklist/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/apimanager/banklist/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/apimanager/banklist/apps.py b/apimanager/banklist/apps.py new file mode 100644 index 0000000..26b574f --- /dev/null +++ b/apimanager/banklist/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class BanksConfig(AppConfig): + name = 'banks_list' diff --git a/apimanager/banklist/models.py b/apimanager/banklist/models.py new file mode 100644 index 0000000..3b5ea8d --- /dev/null +++ b/apimanager/banklist/models.py @@ -0,0 +1,4 @@ +from django.db import models + +# Create your models here. +# -*- coding: utf-8 -*- diff --git a/apimanager/banklist/static/banklist/css/banklist.css b/apimanager/banklist/static/banklist/css/banklist.css new file mode 100644 index 0000000..a2e16e3 --- /dev/null +++ b/apimanager/banklist/static/banklist/css/banklist.css @@ -0,0 +1,18 @@ +#atms_list div { + margin: 5px 0; +} + +/* The actual popup (appears on top) */ +.popuptext { + width: 250px; + background-color: #555; + color: #fff; + text-align: left; + border-radius: 6px; + padding: 8px 0; + z-index: 1; + /*bottom: 125%;*/ + top:100% + left: 50%; + margin-left: -80px; +} diff --git a/apimanager/banklist/static/banklist/js/banklist.js b/apimanager/banklist/static/banklist/js/banklist.js new file mode 100644 index 0000000..338fe9e --- /dev/null +++ b/apimanager/banklist/static/banklist/js/banklist.js @@ -0,0 +1,5 @@ +$(document).ready(function($) { + $('#info').click(function() { + alert("Hello World") + }); +}); diff --git a/apimanager/banklist/templates/banklist/banklist.html b/apimanager/banklist/templates/banklist/banklist.html new file mode 100644 index 0000000..a136a01 --- /dev/null +++ b/apimanager/banklist/templates/banklist/banklist.html @@ -0,0 +1,45 @@ +{% extends 'base.html' %} {% load static %} {% load i18n %} +{% block page_title %} {{ block.super }} / {% trans "ATM List" %}{% endblock page_title %} {% block content %} +
+

{% trans "ATM List" %}

+
+ +
+
+ + + + + + + + + {% for atm in atms_list %} + + {% url 'atms_update' atm.id atm.bank_id as url_atm_update %} + + + + + + + + {% endfor %} + + +
{% trans "ATM Id" %}{% trans "Bank Id" %}{% trans "ATM Name" %}{% trans "More info" %}
{{ atm.id }}{{ atm.bank_id }}{{ atm.name }} +
+
    +
  • {% trans "Address" %}: +
      +
    • line1: {{atm.address.line_1}}
    • +
    +
  • + +
+
+
{% trans "Detail" %}
+
+
+{% endblock %} {% block extrajs %} {% endblock extrajs %} {% block extracss %} + {% endblock extracss %} \ No newline at end of file diff --git a/apimanager/banklist/tests.py b/apimanager/banklist/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/apimanager/banklist/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/apimanager/banklist/urls.py b/apimanager/banklist/urls.py new file mode 100644 index 0000000..8c72109 --- /dev/null +++ b/apimanager/banklist/urls.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +""" +URLs for ATM list app +""" + +from django.conf.urls import url +from .views import BankListView, ExportCsvView + +urlpatterns = [ + url(r'^$', + BankListView.as_view(), + name='atm-list'), + url(r'^export_csv$', + ExportCsvView.as_view(), + name='export-csv') +] diff --git a/apimanager/banklist/views.py b/apimanager/banklist/views.py new file mode 100644 index 0000000..151c260 --- /dev/null +++ b/apimanager/banklist/views.py @@ -0,0 +1,81 @@ +from django.shortcuts import render + +# Create your views here. +# -*- coding: utf-8 -*- +""" +Views of Banks List app +""" +import datetime +from django.contrib import messages +from django.contrib.auth.mixins import LoginRequiredMixin +import json +from django.urls import reverse_lazy +from django.http import HttpResponse +from django.views.generic import FormView,TemplateView, View +from banks.views import IndexBanksView +from base.views import get_banks +from obp.api import API, APIError +import csv + + + +class AtmListView(IndexBanksView, LoginRequiredMixin, FormView ): + template_name = "banklist/banklist.html" + success_url = '/banks/list' + + def get_atms(self,context): + api = API(self.request.session.get('obp')) + try: + self.bankids = get_banks(self.request) + atms_list = [] + for bank_id in self.bankids: + urlpath = '/banks/{}/atms'.format(bank_id) + result = api.get(urlpath) + #print(result) + if 'atms' in result: + atms_list.extend(result['atms']) + except APIError as err: + messages.error(self.request, err) + return [] + except Exception as inst: + messages.error(self.request, "Unknown Error {}".format(type(inst).__name__)) + return [] + + return atms_list + def get_context_data(self, **kwargs): + context = super(IndexAtmsView, self).get_context_data(**kwargs) + atms_list = self.get_atms(context) + context.update({ + 'atms_list': atms_list, + 'bankids': get_banks(self.request) + }) + return context +class ExportCsvView(LoginRequiredMixin, View): + """View to export the user to csv""" + + def get(self, request, *args, **kwargs): + api = API(self.request.session.get('obp')) + try: + self.bankids = get_banks(self.request) + atms_list = [] + for bank_id in self.bankids: + urlpath = '/banks/{}/atms'.format(bank_id) + result = api.get(urlpath) + #print(result) + if 'atms' in result: + atms_list.extend(result['atms']) + except APIError as err: + messages.error(self.request, err) + except Exception as inst: + messages.error(self.request, "Unknown Error {}".format(type(inst).__name__)) + response = HttpResponse(content_type = 'text/csv') + response['Content-Disposition'] = 'attachment;filename= Atms'+ str(datetime.datetime.now())+'.csv' + writer = csv.writer(response) + writer.writerow(["id","name","notes","line_1","line_2","line_3","city", "county", "state", "postcode","country_code", "longitude","latitude","more_info"]) + for user in atms_list: + writer.writerow([user['id'],user['name'], user['notes'], user["address"]['line_1'], user["address"]['line_2'], + user["address"]['line_3'], user["address"]['city'], user["address"]['county'], user["address"]['state'], user["address"]['postcode'], user["address"]['country_code'], user["location"]['longitude'], user["location"]['latitude'], user['more_info']]) + return response + + #print(atms_list) + From 23b988215a8616d49595dc441c789445e644c40b Mon Sep 17 00:00:00 2001 From: Reena Aheer Date: Tue, 4 Apr 2023 14:16:18 +0200 Subject: [PATCH 2/3] get bank done --- apimanager/apimanager/settings.py | 3 +- apimanager/apimanager/urls.py | 6 +-- .../banklist/templates/banklist/banklist.html | 40 +++++++------------ apimanager/banklist/urls.py | 6 +-- apimanager/banklist/views.py | 30 +++++++------- apimanager/base/templates/base.html | 3 +- 6 files changed, 40 insertions(+), 48 deletions(-) diff --git a/apimanager/apimanager/settings.py b/apimanager/apimanager/settings.py index b483a14..c989983 100644 --- a/apimanager/apimanager/settings.py +++ b/apimanager/apimanager/settings.py @@ -57,8 +57,9 @@ INSTALLED_APPS = [ 'users', 'branches', 'atms', - 'banks', 'atmlist', + 'banks', + 'banklist', 'products', 'productlist', 'entitlementrequests', diff --git a/apimanager/apimanager/urls.py b/apimanager/apimanager/urls.py index fe20059..4dfef6c 100644 --- a/apimanager/apimanager/urls.py +++ b/apimanager/apimanager/urls.py @@ -32,8 +32,7 @@ urlpatterns += i18n_patterns( url(r'^$', HomeView.as_view(), name="home"), url(r'^single-sign-on', OAuthInitiateView.as_view(), name='single-sign-on'), - url(r'^logout$', - LogoutView.as_view(), name='oauth-logout'), + 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')), @@ -42,8 +41,9 @@ urlpatterns += i18n_patterns( url(r'^users/', include('users.urls')), url(r'^branches/', include('branches.urls')), url(r'^atms/', include('atms.urls')), - url(r'^banks/', include('banks.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')), diff --git a/apimanager/banklist/templates/banklist/banklist.html b/apimanager/banklist/templates/banklist/banklist.html index a136a01..2a55b6d 100644 --- a/apimanager/banklist/templates/banklist/banklist.html +++ b/apimanager/banklist/templates/banklist/banklist.html @@ -1,39 +1,29 @@ {% extends 'base.html' %} {% load static %} {% load i18n %} -{% block page_title %} {{ block.super }} / {% trans "ATM List" %}{% endblock page_title %} {% block content %} -
-

{% trans "ATM List" %}

+{% block page_title %} {{ block.super }} / {% trans "Bank List" %}{% endblock page_title %} {% block content %} +
+

{% trans "Bank List" %}

- +
- - - + + + - {% for atm in atms_list %} + {% for bank in banks_list %} - {% url 'atms_update' atm.id atm.bank_id as url_atm_update %} - - - - - + + + + - - - - + {% endfor %} diff --git a/apimanager/banklist/urls.py b/apimanager/banklist/urls.py index 8c72109..891d68d 100644 --- a/apimanager/banklist/urls.py +++ b/apimanager/banklist/urls.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- """ -URLs for ATM list app +URLs for Bank list app """ from django.conf.urls import url @@ -9,8 +9,8 @@ from .views import BankListView, ExportCsvView urlpatterns = [ url(r'^$', BankListView.as_view(), - name='atm-list'), + name='bank-list'), url(r'^export_csv$', ExportCsvView.as_view(), - name='export-csv') + name='export-bank-csv') ] diff --git a/apimanager/banklist/views.py b/apimanager/banklist/views.py index 151c260..208e840 100644 --- a/apimanager/banklist/views.py +++ b/apimanager/banklist/views.py @@ -19,21 +19,22 @@ import csv -class AtmListView(IndexBanksView, LoginRequiredMixin, FormView ): +class BankListView(IndexBanksView, LoginRequiredMixin, FormView ): template_name = "banklist/banklist.html" success_url = '/banks/list' - def get_atms(self,context): + def get_banks(self,context): api = API(self.request.session.get('obp')) try: - self.bankids = get_banks(self.request) - atms_list = [] - for bank_id in self.bankids: - urlpath = '/banks/{}/atms'.format(bank_id) - result = api.get(urlpath) - #print(result) - if 'atms' in result: - atms_list.extend(result['atms']) + urlpath = '/banks' + result = api.get(urlpath) + print("result is from get_banks:", result) + banks_list = [] + if 'banks' in result: + banks_list.extend(result["banks"]) + """ return [bank['id'] for bank in sorted(result['banks'], key=lambda d: d['id'])] + else: + return [] """ except APIError as err: messages.error(self.request, err) return [] @@ -41,13 +42,12 @@ class AtmListView(IndexBanksView, LoginRequiredMixin, FormView ): messages.error(self.request, "Unknown Error {}".format(type(inst).__name__)) return [] - return atms_list + return banks_list def get_context_data(self, **kwargs): - context = super(IndexAtmsView, self).get_context_data(**kwargs) - atms_list = self.get_atms(context) + context = super(BankListView, self).get_context_data(**kwargs) + banks_list = self.get_banks(context) context.update({ - 'atms_list': atms_list, - 'bankids': get_banks(self.request) + 'banks_list': banks_list }) return context class ExportCsvView(LoginRequiredMixin, View): diff --git a/apimanager/base/templates/base.html b/apimanager/base/templates/base.html index e9ee40a..1926850 100644 --- a/apimanager/base/templates/base.html +++ b/apimanager/base/templates/base.html @@ -58,13 +58,14 @@
  • {% trans "KPI Dashboard" %}
  • - {% url "system_view" as system_view_url %} {% url "banks_create" as banks_create_url %} {% url "accounts-create" as accounts_create_url %} {% url "account-list" as accounts_list_url %} {% url "branches_list" as branches_list_url %} {% url "customers-create" as customers_create_url %} {% url "customer-list" as customer_list_url %} {% url "atms_create" as atms_create_url %} {% url "atm-list" as atm_list_url %} {% url "product-list" as product_list_url %} {% url "products-create" as product_create_url %} + {% url "system_view" as system_view_url %} {% url "banks_create" as banks_create_url %} {% url "bank-list" as bank_list_url %} {% url "accounts-create" as accounts_create_url %} {% url "account-list" as accounts_list_url %} {% url "branches_list" as branches_list_url %} {% url "customers-create" as customers_create_url %} {% url "customer-list" as customer_list_url %} {% url "atms_create" as atms_create_url %} {% url "atm-list" as atm_list_url %} {% url "product-list" as product_list_url %} {% url "products-create" as product_create_url %}
    {% trans "ATM Id" %} {% trans "Bank Id" %}{% trans "ATM Name" %}{% trans "More info" %}{% trans "Short Name" %}{% trans "Full Name" %}{% trans "Logo" %}
    {{ atm.id }}{{ atm.bank_id }}{{ atm.name }} -
    -
      -
    • {% trans "Address" %}: -
        -
      • line1: {{atm.address.line_1}}
      • -
      -
    • + {% url 'banks_update' bank.id as url_bank_update %} +
    {{ bank.id }}{{ bank.short_name }}{{ bank.full_name }}{{ bank.logo }}{% trans "Detail" %}{% trans "Detail" %}
    diff --git a/apimanager/banklist/urls.py b/apimanager/banklist/urls.py index 891d68d..2bafd12 100644 --- a/apimanager/banklist/urls.py +++ b/apimanager/banklist/urls.py @@ -4,13 +4,15 @@ URLs for Bank list app """ from django.conf.urls import url -from .views import BankListView, ExportCsvView +from .views import BankListView #, ExportCsvView urlpatterns = [ url(r'^$', BankListView.as_view(), name='bank-list'), - url(r'^export_csv$', - ExportCsvView.as_view(), - name='export-bank-csv') + ] +""" +url(r'^export_csv$', + ExportCsvView.as_view(), + name='export-bank-csv') """ diff --git a/apimanager/banklist/views.py b/apimanager/banklist/views.py index 208e840..1e5bbb1 100644 --- a/apimanager/banklist/views.py +++ b/apimanager/banklist/views.py @@ -3,7 +3,7 @@ from django.shortcuts import render # Create your views here. # -*- coding: utf-8 -*- """ -Views of Banks List app +Views of Bank List app """ import datetime from django.contrib import messages @@ -13,10 +13,7 @@ from django.urls import reverse_lazy from django.http import HttpResponse from django.views.generic import FormView,TemplateView, View from banks.views import IndexBanksView -from base.views import get_banks from obp.api import API, APIError -import csv - class BankListView(IndexBanksView, LoginRequiredMixin, FormView ): @@ -28,13 +25,9 @@ class BankListView(IndexBanksView, LoginRequiredMixin, FormView ): try: urlpath = '/banks' result = api.get(urlpath) - print("result is from get_banks:", result) banks_list = [] if 'banks' in result: banks_list.extend(result["banks"]) - """ return [bank['id'] for bank in sorted(result['banks'], key=lambda d: d['id'])] - else: - return [] """ except APIError as err: messages.error(self.request, err) return [] @@ -50,32 +43,3 @@ class BankListView(IndexBanksView, LoginRequiredMixin, FormView ): 'banks_list': banks_list }) return context -class ExportCsvView(LoginRequiredMixin, View): - """View to export the user to csv""" - - def get(self, request, *args, **kwargs): - api = API(self.request.session.get('obp')) - try: - self.bankids = get_banks(self.request) - atms_list = [] - for bank_id in self.bankids: - urlpath = '/banks/{}/atms'.format(bank_id) - result = api.get(urlpath) - #print(result) - if 'atms' in result: - atms_list.extend(result['atms']) - except APIError as err: - messages.error(self.request, err) - except Exception as inst: - messages.error(self.request, "Unknown Error {}".format(type(inst).__name__)) - response = HttpResponse(content_type = 'text/csv') - response['Content-Disposition'] = 'attachment;filename= Atms'+ str(datetime.datetime.now())+'.csv' - writer = csv.writer(response) - writer.writerow(["id","name","notes","line_1","line_2","line_3","city", "county", "state", "postcode","country_code", "longitude","latitude","more_info"]) - for user in atms_list: - writer.writerow([user['id'],user['name'], user['notes'], user["address"]['line_1'], user["address"]['line_2'], - user["address"]['line_3'], user["address"]['city'], user["address"]['county'], user["address"]['state'], user["address"]['postcode'], user["address"]['country_code'], user["location"]['longitude'], user["location"]['latitude'], user['more_info']]) - return response - - #print(atms_list) -