From 57d5330d75619b664236dfaffbe72f095dbeed9b Mon Sep 17 00:00:00 2001 From: "Edgar P. Burkhart" Date: Thu, 2 Jan 2025 10:07:01 +0100 Subject: [PATCH] Create account list view --- .../templates/account/account_list.html | 17 ++++++++ .../templates/account/account_table.html | 41 ++++++++++++++++++ nummi/account/templatetags/__init__.py | 0 nummi/account/templatetags/account_extras.py | 10 +++++ nummi/account/urls.py | 1 + nummi/account/views.py | 6 +++ nummi/main/static/main/css/main.css | 42 +++++++++---------- nummi/main/static/main/js/index.js | 7 ++-- nummi/main/templates/main/index.html | 36 +++------------- nummi/main/views.py | 2 +- nummi/statement/views.py | 1 + nummi/transaction/views.py | 1 + 12 files changed, 105 insertions(+), 59 deletions(-) create mode 100644 nummi/account/templates/account/account_list.html create mode 100644 nummi/account/templates/account/account_table.html create mode 100644 nummi/account/templatetags/__init__.py create mode 100644 nummi/account/templatetags/account_extras.py diff --git a/nummi/account/templates/account/account_list.html b/nummi/account/templates/account/account_list.html new file mode 100644 index 0000000..9193e05 --- /dev/null +++ b/nummi/account/templates/account/account_list.html @@ -0,0 +1,17 @@ +{% extends "main/list.html" %} +{% load i18n main_extras account_extras %} +{% block link %} + {{ block.super }} + {% css "main/css/table.css" %} + {% css "main/css/plot.css" %} + {% js "main/js/index.js" %} +{% endblock link %} +{% block name %} + {% translate "Account" %} +{% endblock name %} +{% block h2 %} + {% translate "Accounts" %} +{% endblock h2 %} +{% block table %} +
{% account_table accounts %}
+{% endblock table %} diff --git a/nummi/account/templates/account/account_table.html b/nummi/account/templates/account/account_table.html new file mode 100644 index 0000000..25655b7 --- /dev/null +++ b/nummi/account/templates/account/account_table.html @@ -0,0 +1,41 @@ +{% load i18n main_extras %} +
+ {% for acc in accounts %} + + {% endfor %} + {% if index %} + + {% else %} + + + {% endif %} +
diff --git a/nummi/account/templatetags/__init__.py b/nummi/account/templatetags/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/nummi/account/templatetags/account_extras.py b/nummi/account/templatetags/account_extras.py new file mode 100644 index 0000000..5e6c478 --- /dev/null +++ b/nummi/account/templatetags/account_extras.py @@ -0,0 +1,10 @@ +from django import template + +register = template.Library() + + +@register.inclusion_tag("account/account_table.html") +def account_table(accounts, **kwargs): + return kwargs | { + "accounts": accounts, + } diff --git a/nummi/account/urls.py b/nummi/account/urls.py index f6b4f2b..93713af 100644 --- a/nummi/account/urls.py +++ b/nummi/account/urls.py @@ -5,6 +5,7 @@ from transaction.views import TransactionMonthView, TransactionYearView from . import views urlpatterns = [ + path("list", views.AccountListView.as_view(), name="accounts"), path("new", views.AccountCreateView.as_view(), name="new_account"), path("", views.AccountDetailView.as_view(), name="account"), path("/edit", views.AccountUpdateView.as_view(), name="edit_account"), diff --git a/nummi/account/views.py b/nummi/account/views.py index 103832b..c3cbc36 100644 --- a/nummi/account/views.py +++ b/nummi/account/views.py @@ -5,6 +5,7 @@ from main.views import ( NummiCreateView, NummiDeleteView, NummiDetailView, + NummiListView, NummiUpdateView, ) from statement.views import StatementListView @@ -66,6 +67,11 @@ class AccountMixin: return super().get_context_data(**kwargs) | {"account": self.account} +class AccountListView(NummiListView): + model = Account + context_object_name = "accounts" + + class AccountTListView(AccountMixin, TransactionListView): pass diff --git a/nummi/main/static/main/css/main.css b/nummi/main/static/main/css/main.css index 85fad38..b1b383d 100644 --- a/nummi/main/static/main/css/main.css +++ b/nummi/main/static/main/css/main.css @@ -336,35 +336,31 @@ ul.messages { } } -.accounts { - display: grid; - grid-auto-rows: min-content; +dl.accounts { + margin: 0; - dl { + dt, + dd { margin: 0; - dt, - dd { - margin: 0; - } - .account { - padding: 0.5rem; - margin-bottom: 0.5rem; - border: 1px solid var(--gray); + } + .account { + padding: 0.5rem; + margin-bottom: 0.5rem; + border: 1px solid var(--gray); - display: grid; - grid-template-columns: 1fr min-content; - &.new, - &.more { - border-style: dashed; - } - &.more label { - display: block; - } + display: grid; + grid-template-columns: 1fr min-content; + &.new, + &.more { + border-style: dashed; } - &:not(.show-archive) .account.archived { - display: none; + &.more label { + display: block; } } + &:not(.show-archive) .account.archived { + display: none; + } } ul.statements, diff --git a/nummi/main/static/main/js/index.js b/nummi/main/static/main/js/index.js index 88438b2..550651b 100644 --- a/nummi/main/static/main/js/index.js +++ b/nummi/main/static/main/js/index.js @@ -1,10 +1,9 @@ -let accounts = document.querySelector(".accounts"); +let accounts = document.querySelector("dl.accounts"); let toggle = accounts.querySelector("input#show-archived-accounts"); -let dl = accounts.querySelector("dl"); -dl.classList.toggle("show-archive", toggle.checked); +accounts.classList.toggle("show-archive", toggle.checked); if (toggle) { toggle.addEventListener("change", (event) => { - dl.classList.toggle("show-archive", toggle.checked); + accounts.classList.toggle("show-archive", toggle.checked); }); } diff --git a/nummi/main/templates/main/index.html b/nummi/main/templates/main/index.html index 0a11f61..3b82d2f 100644 --- a/nummi/main/templates/main/index.html +++ b/nummi/main/templates/main/index.html @@ -1,6 +1,6 @@ {% extends "main/base.html" %} {% load static %} -{% load main_extras %} +{% load main_extras account_extras %} {% load i18n %} {% block link %} {{ block.super }} @@ -10,42 +10,16 @@ {% endblock link %} {% block body %}
-
+

{% translate "Accounts" %}

-
- {% for acc in accounts %} - - {% endfor %} - - -
+ {% account_table accounts index=True total=accounts|balance %}
-
+

{% translate "Statements" %}

{% include "statement/statement_table.html" %}
-
+

{% translate "Categories" %}

{% spaceless %}

diff --git a/nummi/main/views.py b/nummi/main/views.py index 2786ed9..0dc8b3f 100644 --- a/nummi/main/views.py +++ b/nummi/main/views.py @@ -105,4 +105,4 @@ class LogoutView(auth_views.LogoutView): class NummiListView(UserMixin, ListView): - paginate_by = 96 + pass diff --git a/nummi/statement/views.py b/nummi/statement/views.py index 426436a..238d296 100644 --- a/nummi/statement/views.py +++ b/nummi/statement/views.py @@ -84,6 +84,7 @@ class StatementDetailView(NummiDetailView): class StatementListView(NummiListView): model = Statement context_object_name = "statements" + paginate_by = 32 class StatementMixin: diff --git a/nummi/transaction/views.py b/nummi/transaction/views.py index 433177e..90e681d 100644 --- a/nummi/transaction/views.py +++ b/nummi/transaction/views.py @@ -124,6 +124,7 @@ class InvoiceDeleteView(NummiDeleteView): class TransactionListView(NummiListView): model = Transaction context_object_name = "transactions" + paginate_by = 50 class TransactionACMixin: