From f952210d9ed126e025de9a56b4012d563241d7fd Mon Sep 17 00:00:00 2001 From: Reena-cell Date: Fri, 4 Nov 2022 10:45:15 +0100 Subject: [PATCH] Account List Page --- apimanager/accountlist/__init__.py | 0 apimanager/accountlist/admin.py | 3 + apimanager/accountlist/apps.py | 5 ++ apimanager/accountlist/forms.py | 0 apimanager/accountlist/models.py | 4 + .../static/accountlist/css/accountlist.css | 18 +++++ .../static/accountlist/js/accountlist.js | 0 .../templates/accountlist/accountlist.html | 43 +++++++++++ apimanager/accountlist/tests.py | 3 + apimanager/accountlist/urls.py | 16 ++++ apimanager/accountlist/views.py | 75 +++++++++++++++++++ apimanager/apimanager/settings.py | 1 + apimanager/apimanager/urls.py | 1 + apimanager/base/templates/base.html | 3 +- apimanager/customerlist/views.py | 2 - 15 files changed, 171 insertions(+), 3 deletions(-) create mode 100644 apimanager/accountlist/__init__.py create mode 100644 apimanager/accountlist/admin.py create mode 100644 apimanager/accountlist/apps.py create mode 100644 apimanager/accountlist/forms.py create mode 100644 apimanager/accountlist/models.py create mode 100644 apimanager/accountlist/static/accountlist/css/accountlist.css create mode 100644 apimanager/accountlist/static/accountlist/js/accountlist.js create mode 100644 apimanager/accountlist/templates/accountlist/accountlist.html create mode 100644 apimanager/accountlist/tests.py create mode 100644 apimanager/accountlist/urls.py create mode 100644 apimanager/accountlist/views.py diff --git a/apimanager/accountlist/__init__.py b/apimanager/accountlist/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/apimanager/accountlist/admin.py b/apimanager/accountlist/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/apimanager/accountlist/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/apimanager/accountlist/apps.py b/apimanager/accountlist/apps.py new file mode 100644 index 0000000..50a7695 --- /dev/null +++ b/apimanager/accountlist/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class AccountConfig(AppConfig): + name = 'account-list' diff --git a/apimanager/accountlist/forms.py b/apimanager/accountlist/forms.py new file mode 100644 index 0000000..e69de29 diff --git a/apimanager/accountlist/models.py b/apimanager/accountlist/models.py new file mode 100644 index 0000000..3b5ea8d --- /dev/null +++ b/apimanager/accountlist/models.py @@ -0,0 +1,4 @@ +from django.db import models + +# Create your models here. +# -*- coding: utf-8 -*- diff --git a/apimanager/accountlist/static/accountlist/css/accountlist.css b/apimanager/accountlist/static/accountlist/css/accountlist.css new file mode 100644 index 0000000..5e85ae8 --- /dev/null +++ b/apimanager/accountlist/static/accountlist/css/accountlist.css @@ -0,0 +1,18 @@ +#accounts_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/accountlist/static/accountlist/js/accountlist.js b/apimanager/accountlist/static/accountlist/js/accountlist.js new file mode 100644 index 0000000..e69de29 diff --git a/apimanager/accountlist/templates/accountlist/accountlist.html b/apimanager/accountlist/templates/accountlist/accountlist.html new file mode 100644 index 0000000..99cc0d7 --- /dev/null +++ b/apimanager/accountlist/templates/accountlist/accountlist.html @@ -0,0 +1,43 @@ +{% extends 'base.html' %} {% load static %} {% load i18n %} +{% block page_title %} {{ block.super }} / {% trans "Account List" %}{% endblock page_title %} {% block content %} +
+

{% trans "Account List" %}

+
+ +
+
+ + + + + + + + + {% for account in accounts_list %} + {% url 'account_update' account.id account.bank_id as url_account_update %} + + + + + + + + {% endfor %} + + +
{% trans "Account Id" %}{% trans "Bank Id" %}{% trans "Label" %}{% trans "More info" %}
{{ account.id }}{{ account.bank_id }}{{ account.label }} +
+
    +
  • {% trans "Other Info" %}: +
      +
    • {{account.account_type}}
    • +
    +
  • +
+
+
{% trans "View" %}
+
+
+{% endblock %} {% block extrajs %} {% endblock extrajs %} {% block extracss %} + {% endblock extracss %} \ No newline at end of file diff --git a/apimanager/accountlist/tests.py b/apimanager/accountlist/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/apimanager/accountlist/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/apimanager/accountlist/urls.py b/apimanager/accountlist/urls.py new file mode 100644 index 0000000..66d4b9a --- /dev/null +++ b/apimanager/accountlist/urls.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +""" +URLs for Account list app +""" + +from django.conf.urls import url +from .views import AccountListView, ExportCsvView + +urlpatterns = [ + url(r'^$', + AccountListView.as_view(), + name='account-list'), + url(r'^export_csv$', + ExportCsvView.as_view(), + name='export-csv-account') +] diff --git a/apimanager/accountlist/views.py b/apimanager/accountlist/views.py new file mode 100644 index 0000000..156c905 --- /dev/null +++ b/apimanager/accountlist/views.py @@ -0,0 +1,75 @@ +from django.shortcuts import render + +# Create your views here. +# -*- coding: utf-8 -*- +""" +Views of Account 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 accounts.views import IndexAccountsView +from obp.api import API, APIError +from base.views import get_banks +import csv + +class AccountListView(IndexAccountsView, LoginRequiredMixin, FormView ): + template_name = "accountlist/accountlist.html" + success_url = '/accounts/list' + + def get_accountlist(self, context): + api = API(self.request.session.get('obp')) + try: + #self.bankids = self.get_banks() + accounts_list = [] + #for bank_id in self.bankids: + urlpath = '/my/accounts' + result = api.get(urlpath) + if 'accounts' in result: + accounts_list.extend(result['accounts']) + 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 accounts_list + def get_context_data(self, **kwargs): + context = super(IndexAccountsView, self).get_context_data(**kwargs) + accounts_list = self.get_accountlist(context) + context.update({ + 'accounts_list': accounts_list, + #'bankids': bankids + }) + 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) + accounts_list = [] + for bank_id in self.bankids: + urlpath = 'banks/{}/accounts'.format(bank_id) + result = api.get(urlpath) + if 'accounts' in result: + accounts_list.extend(result['accounts']) + 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= Account'+ str(datetime.datetime.now())+'.csv' + writer = csv.writer(response) + writer.writerow(["id","label","bank_id","account_type","scheme","address","id", "short_name", "description", "is_public"]) + for user in accounts_list: + writer.writerow([user['id'],user['label'], user['bank_id'], user["account_type"], user["scheme"], user["address"], user["views"]['id'], + user["views"]['short_name'], user["views"]['description'], user["views"]['is_public']]) + return response + + diff --git a/apimanager/apimanager/settings.py b/apimanager/apimanager/settings.py index 682674e..45e4a3b 100644 --- a/apimanager/apimanager/settings.py +++ b/apimanager/apimanager/settings.py @@ -52,6 +52,7 @@ INSTALLED_APPS = [ 'obp', 'consumers', 'accounts', + 'accountlist', 'systemviews', 'users', 'branches', diff --git a/apimanager/apimanager/urls.py b/apimanager/apimanager/urls.py index 891248e..5051e2a 100644 --- a/apimanager/apimanager/urls.py +++ b/apimanager/apimanager/urls.py @@ -36,6 +36,7 @@ urlpatterns += i18n_patterns( 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')), diff --git a/apimanager/base/templates/base.html b/apimanager/base/templates/base.html index 51e9e70..f69836b 100644 --- a/apimanager/base/templates/base.html +++ b/apimanager/base/templates/base.html @@ -59,13 +59,14 @@
  • {% trans "KPI Dashboard" %}
  • - {% url "system_view" as system_view_url %} {% url "accounts-create" as accounts_create_url %} {% url "branches_list" as branches_list_url %} {% url "customers-create" as customers_create_url %} {% url "customer-list" as customer_list_url %} {% url "atms_create" as atms_create_url %} {% url "atm-list" as atm_list_url %} {% url "product-list" as product_list_url %} {% url "products-create" as product_create_url %} + {% url "system_view" as system_view_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 %}