From ccc48bd50ddfd0bfd901e9feec82bff5ddeaf5c2 Mon Sep 17 00:00:00 2001 From: JKuijperM Date: Tue, 13 Jan 2026 15:24:46 +0100 Subject: [PATCH] Create a dashboard view test --- .../expenses/templates/expenses/dashboard.html | 11 +++++++++++ expenses_manager/expenses/urls.py | 1 + expenses_manager/expenses/views.py | 17 +++++++++++++++-- 3 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 expenses_manager/expenses/templates/expenses/dashboard.html diff --git a/expenses_manager/expenses/templates/expenses/dashboard.html b/expenses_manager/expenses/templates/expenses/dashboard.html new file mode 100644 index 0000000..731cac7 --- /dev/null +++ b/expenses_manager/expenses/templates/expenses/dashboard.html @@ -0,0 +1,11 @@ + +

Dashboard

+ +

Gastos por categoría

+ \ No newline at end of file diff --git a/expenses_manager/expenses/urls.py b/expenses_manager/expenses/urls.py index 14457e4..83c5986 100644 --- a/expenses_manager/expenses/urls.py +++ b/expenses_manager/expenses/urls.py @@ -6,4 +6,5 @@ urlpatterns = [ path('new/', views.expense_create, name='expense_create'), path('/edit/', views.expense_edit, name='expense_edit'), path('/delete/', views.expense_delete, name='expense_delete'), + path('dashboard/', views.dashboard, name='dashboard'), ] \ No newline at end of file diff --git a/expenses_manager/expenses/views.py b/expenses_manager/expenses/views.py index 04e6f7d..a7622ed 100644 --- a/expenses_manager/expenses/views.py +++ b/expenses_manager/expenses/views.py @@ -1,10 +1,11 @@ from .models import Expense from .forms import ExpenseForm +from django.db.models import Sum from django.contrib.auth import login from django.utils.ipv6 import is_valid_ipv6_address -from django.shortcuts import get_object_or_404, render, redirect from django.contrib.auth.decorators import login_required +from django.shortcuts import get_object_or_404, render, redirect @login_required def expense_list(request): @@ -75,4 +76,16 @@ def expense_delete(request, pk): request, 'expenses/expense_confirm_delete.html', {'expense': expense}, - ) \ No newline at end of file + ) + + +@login_required +def dashboard(request): + + expenses = Expense.objects.filter(owner=request.user) + + by_category = (expenses.values('category__name').annotate(total=Sum('amount'))) + + + + return render(request, 'expenses/dashboard.html', {'by_category': by_category}) \ No newline at end of file