From b9e129e80a46ee165942f2c2b87c16b867a1513b Mon Sep 17 00:00:00 2001 From: "Edgar P. Burkhart" Date: Wed, 3 May 2023 12:01:25 +0200 Subject: [PATCH] Move category plot to templatetag, hide non-budget categories --- .../templates/category/category_plot.html | 16 +++++++++------- nummi/category/templatetags/__init__.py | 0 .../{utils.py => templatetags/category.py} | 11 ++++++++--- .../templates/statement/statement_form.html | 9 +++------ nummi/statement/views.py | 3 --- .../transaction/transaction_archive_month.html | 7 +++---- nummi/transaction/views.py | 3 --- 7 files changed, 23 insertions(+), 26 deletions(-) create mode 100644 nummi/category/templatetags/__init__.py rename nummi/category/{utils.py => templatetags/category.py} (62%) diff --git a/nummi/category/templates/category/category_plot.html b/nummi/category/templates/category/category_plot.html index 1a0fc4a..1313da6 100644 --- a/nummi/category/templates/category/category_plot.html +++ b/nummi/category/templates/category/category_plot.html @@ -18,7 +18,7 @@ {% spaceless %} - {% for cat in categories.data %} + {% for cat in categories %} {% if cat.category %} @@ -34,25 +34,27 @@ {{ cat.sum_m|pmrvalue }} -
+
{% if cat.sum < 0 %} -
+
{{ cat.sum|pmrvalue }}
{% endif %} -
+
{% if cat.sum > 0 %} -
+
{{ cat.sum|pmrvalue }}
{% endif %} {{ cat.sum_p|pmrvalue }} + {% empty %} + + {% translate "No transaction" %} + {% endfor %} {% endspaceless %} diff --git a/nummi/category/templatetags/__init__.py b/nummi/category/templatetags/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/nummi/category/utils.py b/nummi/category/templatetags/category.py similarity index 62% rename from nummi/category/utils.py rename to nummi/category/templatetags/category.py index b3b0ea8..c43256b 100644 --- a/nummi/category/utils.py +++ b/nummi/category/templatetags/category.py @@ -1,9 +1,14 @@ +from django import template from django.db import models +register = template.Library() -def get_categories(transactions): + +@register.inclusion_tag("category/category_plot.html") +def category_plot(transactions): categories = ( - transactions.values("category", "category__name", "category__icon") + transactions.filter(category__budget=True) + .values("category", "category__name", "category__icon") .annotate( sum=models.Sum("value"), sum_m=models.Sum("value", filter=models.Q(value__lt=0)), @@ -12,7 +17,7 @@ def get_categories(transactions): .order_by("-sum") ) return { - "data": categories, + "categories": categories, "max": max( categories.aggregate( max=models.Max("sum_p", default=0), diff --git a/nummi/statement/templates/statement/statement_form.html b/nummi/statement/templates/statement/statement_form.html index bb40e07..ef28ce5 100644 --- a/nummi/statement/templates/statement/statement_form.html +++ b/nummi/statement/templates/statement/statement_form.html @@ -1,6 +1,5 @@ {% extends "main/form/base.html" %} -{% load main_extras %} -{% load i18n %} +{% load i18n main_extras category %} {% block title_new %} {% translate "Create statement" %} {% endblock %} @@ -19,11 +18,9 @@ {% endif %} {% endblock %} {% block tables %} - {% if categories %} -

{% translate "Categories" %}

- {% include "category/category_plot.html" %} - {% endif %} {% if not form.instance|adding %} +

{% translate "Categories" %}

+ {% category_plot transactions %}

{% translate "Transactions" %} ({{ form.instance.sum|pmvalue }} / {{ form.instance.diff|pmvalue }})

{% include "transaction/transaction_table.html" %} {% endif %} diff --git a/nummi/statement/views.py b/nummi/statement/views.py index 9121ba3..435cb85 100644 --- a/nummi/statement/views.py +++ b/nummi/statement/views.py @@ -1,5 +1,4 @@ from account.models import Account -from category.utils import get_categories from django.shortcuts import get_object_or_404 from django.urls import reverse_lazy from main.views import NummiCreateView, NummiDeleteView, NummiListView, NummiUpdateView @@ -42,8 +41,6 @@ class StatementUpdateView(NummiUpdateView): statement = data["form"].instance _transactions = statement.transaction_set.all() - if _transactions: - data["categories"] = get_categories(_transactions) return data | { "account": statement.account, diff --git a/nummi/transaction/templates/transaction/transaction_archive_month.html b/nummi/transaction/templates/transaction/transaction_archive_month.html index 431e4db..9c5ea87 100644 --- a/nummi/transaction/templates/transaction/transaction_archive_month.html +++ b/nummi/transaction/templates/transaction/transaction_archive_month.html @@ -1,6 +1,5 @@ {% extends "transaction/transaction_list.html" %} -{% load i18n %} -{% load static %} +{% load i18n static category %} {% block link %} {{ block.super }} {% translate "Transactions" %} {{ block.super }} - {% if categories %} + {% if not category %}

{% translate "Categories" %}

- {% include "category/category_plot.html" %} + {% category_plot transactions %} {% endif %} {% endblock %} diff --git a/nummi/transaction/views.py b/nummi/transaction/views.py index 238d19a..f7464cd 100644 --- a/nummi/transaction/views.py +++ b/nummi/transaction/views.py @@ -1,6 +1,5 @@ from account.models import Account from category.models import Category -from category.utils import get_categories from django.shortcuts import get_object_or_404 from django.urls import reverse_lazy from django.views.generic.dates import MonthArchiveView @@ -136,8 +135,6 @@ class TransactionMonthView(UserMixin, MonthArchiveView): context_data = super().get_context_data(**kwargs) if "category" in self.kwargs: return context_data | {"category": self.category} - - context_data["categories"] = get_categories(context_data["transactions"]) if "account" in self.kwargs: return context_data | {"account": self.account} return context_data