From 348ac494e93ac33c8292e399990e3bf1404142e3 Mon Sep 17 00:00:00 2001
From: "Edgar P. Burkhart"
Date: Thu, 2 Jan 2025 15:19:12 +0100
Subject: [PATCH] Use templatetag for transaction_table
---
.../templates/category/category_detail.html | 5 +++--
nummi/category/views.py | 14 --------------
.../templates/statement/statement_detail.html | 12 +++++++-----
.../templates/transaction/transaction_list.html | 12 ++++++------
.../transaction/templatetags/transaction_extras.py | 12 ++++++++++++
5 files changed, 28 insertions(+), 27 deletions(-)
diff --git a/nummi/category/templates/category/category_detail.html b/nummi/category/templates/category/category_detail.html
index d2e4674..3c13cbb 100644
--- a/nummi/category/templates/category/category_detail.html
+++ b/nummi/category/templates/category/category_detail.html
@@ -1,5 +1,5 @@
{% extends "main/base.html" %}
-{% load i18n main_extras history_extras %}
+{% load i18n main_extras history_extras transaction_extras %}
{% block title %}
{{ category }} – {{ block.super }}
{% endblock title %}
@@ -15,7 +15,8 @@
{% translate "Transactions" %}
- {% include "transaction/transaction_table.html" %}
+ {% url "category_transactions" category.id as t_url %}
+ {% transaction_table category.transaction_set.all n_max=8 transactions_url=t_url %}
{% translate "History" %}
diff --git a/nummi/category/views.py b/nummi/category/views.py
index c34a422..da93085 100644
--- a/nummi/category/views.py
+++ b/nummi/category/views.py
@@ -1,5 +1,4 @@
from django.shortcuts import get_object_or_404
-from django.urls import reverse_lazy
from main.views import (
NummiCreateView,
NummiDeleteView,
@@ -28,19 +27,6 @@ class CategoryDetailView(NummiDetailView):
pk_url_kwarg = "category"
context_object_name = "category"
- def get_context_data(self, **kwargs):
- _max = 8
- data = super().get_context_data(**kwargs)
- category = data["object"]
-
- data["transactions"] = category.transaction_set.all()[:_max]
- if len(data["transactions"]) == _max:
- data["transactions_url"] = reverse_lazy(
- "category_transactions", args=(category.pk,)
- )
-
- return data
-
class CategoryDeleteView(NummiDeleteView):
model = Category
diff --git a/nummi/statement/templates/statement/statement_detail.html b/nummi/statement/templates/statement/statement_detail.html
index ea2c21e..e31ffcc 100644
--- a/nummi/statement/templates/statement/statement_detail.html
+++ b/nummi/statement/templates/statement/statement_detail.html
@@ -1,15 +1,15 @@
{% extends "main/base.html" %}
-{% load i18n main_extras statement_extras category %}
+{% load i18n main_extras statement_extras transaction_extras category %}
{% block title %}
{{ statement }}
– Nummi
-{% endblock %}
+{% endblock title %}
{% block link %}
{{ block.super }}
{% css "main/css/form.css" %}
{% css "main/css/table.css" %}
{% css "main/css/plot.css" %}
-{% endblock %}
+{% endblock link %}
{% block body %}
{{ statement }}
@@ -38,10 +38,12 @@
{% translate "Transactions" %}
- {% include "transaction/transaction_table.html" %}
+ {% url "statement_transactions" statement.id as t_url %}
+ {% url "new_transaction" statement=statement.id as nt_url %}
+ {% transaction_table statement.transaction_set.all n_max=8 transactions_url=t_url new_transaction_url=nt_url %}
{% translate "Categories" %}
{% category_plot transactions budget=False statement=object %}
-{% endblock %}
+{% endblock body %}
diff --git a/nummi/transaction/templates/transaction/transaction_list.html b/nummi/transaction/templates/transaction/transaction_list.html
index 890cec7..abd6ef5 100644
--- a/nummi/transaction/templates/transaction/transaction_list.html
+++ b/nummi/transaction/templates/transaction/transaction_list.html
@@ -1,12 +1,12 @@
{% extends "main/list.html" %}
-{% load i18n %}
+{% load i18n transaction_extras %}
{% block name %}
{% translate "Transactions" %}
-{% endblock %}
+{% endblock name %}
{% block h2 %}
{% translate "Transactions" %}
-{% endblock %}
+{% endblock h2 %}
{% block table %}
- {% url "new_transaction" as new_transaction_url %}
- {% include "transaction/transaction_table.html" %}
-{% endblock %}
+ {% url "new_transaction" as nt_url %}
+ {% transaction_table transactions new_transaction_url=nt_url %}
+{% endblock table %}
diff --git a/nummi/transaction/templatetags/transaction_extras.py b/nummi/transaction/templatetags/transaction_extras.py
index 00f17d4..b614674 100644
--- a/nummi/transaction/templatetags/transaction_extras.py
+++ b/nummi/transaction/templatetags/transaction_extras.py
@@ -10,6 +10,18 @@ from ..utils import ac_url
register = template.Library()
+@register.inclusion_tag("transaction/transaction_table.html")
+def transaction_table(transactions, **kwargs):
+ if (n_max := kwargs.get("n_max")) is not None:
+ if transactions.count() <= n_max:
+ del kwargs["transactions_url"]
+ transactions = transactions[:n_max]
+
+ return kwargs | {
+ "transactions": transactions,
+ }
+
+
@register.simple_tag(takes_context=True)
def month_url(context, month, cls="", fmt="Y-m"):
url_name, url_params = ac_url(