From 83fd40085ff7ef71cd983ef3f62ade9479eeedaa Mon Sep 17 00:00:00 2001 From: JKuijperM Date: Sun, 1 Feb 2026 19:18:53 +0100 Subject: [PATCH] Adding account to dashboard --- expenses_manager/expenses/models.py | 9 +++++++ .../templates/expenses/dashboard.html | 25 ++++++++++++++++++- expenses_manager/expenses/views.py | 24 ++++++++++++++++++ 3 files changed, 57 insertions(+), 1 deletion(-) diff --git a/expenses_manager/expenses/models.py b/expenses_manager/expenses/models.py index e9a74f2..d36b273 100644 --- a/expenses_manager/expenses/models.py +++ b/expenses_manager/expenses/models.py @@ -1,5 +1,7 @@ +from decimal import Decimal from django.db import models from django.conf import settings +from django.db.models import Sum from django.db.models.fields import related class Category(models.Model): @@ -45,6 +47,13 @@ class Account(models.Model): class Meta: ordering = ['name'] + def current_balance(self): + expenses_total = ( + self.expenses.aggregate(total=Sum('amount'))['total'] + or Decimal('0') + ) + return self.initial_balance - expenses_total + def __str__(self): return self.name diff --git a/expenses_manager/expenses/templates/expenses/dashboard.html b/expenses_manager/expenses/templates/expenses/dashboard.html index 6cab4a3..18d4ffb 100644 --- a/expenses_manager/expenses/templates/expenses/dashboard.html +++ b/expenses_manager/expenses/templates/expenses/dashboard.html @@ -9,7 +9,12 @@ -

Dashboard

+

+ Dashboard + {% if selected_account_obj %} + — {{ selected_account_obj.name }} + {% endif %} +

@@ -57,6 +62,18 @@ Comparar con periodo anterior + + + @@ -76,6 +93,11 @@
+
+

Saldo actual

+ {{ kpi_balance|floatformat:2 }}€ +
+

Total

{{ kpi_total }}€

@@ -90,6 +112,7 @@

Categorías

{{ kpi_categories }}

+
{% if compare_enabled %} diff --git a/expenses_manager/expenses/views.py b/expenses_manager/expenses/views.py index 464b355..13730f5 100644 --- a/expenses_manager/expenses/views.py +++ b/expenses_manager/expenses/views.py @@ -272,6 +272,12 @@ def dashboard(request): current_year = date.today().year + account_id = _get_int(request.GET.get('account')) + accounts = Account.objects.filter( + owner=request.user, + active=True, + ) + selected_year = year or current_year selected_month = month @@ -282,6 +288,20 @@ def dashboard(request): # ----------------- expenses = Expense.objects.filter(owner=request.user) + selected_account_obj = None + kpi_balance = None + if account_id: + expenses = expenses.filter(account_id=account_id) + selected_account_obj = accounts.filter(id=account_id).first() + kpi_balance = selected_account_obj.current_balance() + else: + kpi_balance = ( + Accounts.objects.filter(owner.request.user, active=True) + .aggregate(total=Sum('initial_balance'))['total'] or 0 + ) - ( + expenses.aggregate(total=Sum('amount'))['total'] or 0 + ) + today = date.today() if period == 'this_month': @@ -482,6 +502,10 @@ def dashboard(request): 'kpi_percentage': percentage, 'category_comparison': category_comparison, 'kpi_trend': kpi_trend, + 'accounts':accounts, + 'selected_account': account_id, + 'selected_account_obj': selected_account_obj, + 'kpi_balance': kpi_balance, })