Create a dashboard view test
This commit is contained in:
parent
acbd8fa65e
commit
ccc48bd50d
11
expenses_manager/expenses/templates/expenses/dashboard.html
Normal file
11
expenses_manager/expenses/templates/expenses/dashboard.html
Normal 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>
|
||||||
@ -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'),
|
||||||
]
|
]
|
||||||
@ -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):
|
||||||
@ -76,3 +77,15 @@ def expense_delete(request, pk):
|
|||||||
'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})
|
||||||
Loading…
Reference in New Issue
Block a user