Create a dashboard view test

This commit is contained in:
JKuijperM 2026-01-13 15:24:46 +01:00
parent acbd8fa65e
commit ccc48bd50d
3 changed files with 27 additions and 2 deletions

View File

@ -0,0 +1,11 @@
<!DOCTYPE html>
<h1>Dashboard</h1>
<h2>Gastos por categoría</h2>
<ul>
{% for row in by_category %}
<li>{{ row.category__name}} → {{row.total}}</li>
{% empty %}
<li>No hay datos</li>
{% endfor %}
</ul>

View File

@ -6,4 +6,5 @@ urlpatterns = [
path('new/', views.expense_create, name='expense_create'), path('new/', views.expense_create, name='expense_create'),
path('<int:pk>/edit/', views.expense_edit, name='expense_edit'), path('<int:pk>/edit/', views.expense_edit, name='expense_edit'),
path('<int:pk>/delete/', views.expense_delete, name='expense_delete'), path('<int:pk>/delete/', views.expense_delete, name='expense_delete'),
path('dashboard/', views.dashboard, name='dashboard'),
] ]

View File

@ -1,10 +1,11 @@
from .models import Expense from .models import Expense
from .forms import ExpenseForm from .forms import ExpenseForm
from django.db.models import Sum
from django.contrib.auth import login from django.contrib.auth import login
from django.utils.ipv6 import is_valid_ipv6_address 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.contrib.auth.decorators import login_required
from django.shortcuts import get_object_or_404, render, redirect
@login_required @login_required
def expense_list(request): def expense_list(request):
@ -75,4 +76,16 @@ def expense_delete(request, pk):
request, request,
'expenses/expense_confirm_delete.html', 'expenses/expense_confirm_delete.html',
{'expense': expense}, {'expense': expense},
) )
@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})