From 5fbf3cfc54f7bd262f71e42deebe43823742ca0f Mon Sep 17 00:00:00 2001 From: JKuijperM Date: Mon, 2 Feb 2026 20:06:15 +0100 Subject: [PATCH] WIP Income --- .../expenses/income_confirm_delete.html | 27 +++++++++++ .../templates/expenses/income_form.html | 36 ++++++++++++++ .../templates/expenses/income_list.html | 44 +++++++++++++++++ expenses_manager/expenses/urls.py | 4 ++ expenses_manager/expenses/views.py | 48 ++++++++++++++++++- 5 files changed, 157 insertions(+), 2 deletions(-) create mode 100644 expenses_manager/expenses/templates/expenses/income_confirm_delete.html create mode 100644 expenses_manager/expenses/templates/expenses/income_form.html create mode 100644 expenses_manager/expenses/templates/expenses/income_list.html diff --git a/expenses_manager/expenses/templates/expenses/income_confirm_delete.html b/expenses_manager/expenses/templates/expenses/income_confirm_delete.html new file mode 100644 index 0000000..b9050d1 --- /dev/null +++ b/expenses_manager/expenses/templates/expenses/income_confirm_delete.html @@ -0,0 +1,27 @@ + + + + Borrar ingreso + + + +

Borrar ingreso

+ +

+ ¿Seguro que quieres borrar este ingreso? +

+ + + +
+ {% csrf_token %} + +
+ + Cancelar + + \ No newline at end of file diff --git a/expenses_manager/expenses/templates/expenses/income_form.html b/expenses_manager/expenses/templates/expenses/income_form.html new file mode 100644 index 0000000..b19fe74 --- /dev/null +++ b/expenses_manager/expenses/templates/expenses/income_form.html @@ -0,0 +1,36 @@ + + + + + {% if form.instance.pk %} + Editar ingreso + {% else %} + Nuevo ingreso + {% endif %} + + + + +

+ {% if form.instance.pk %} + Editar ingreso + {% else %} + Nuevo ingreso + {% endif %} +

+ +
+ {% csrf_token %} + {{ form.as_p }} + +
+ + Volver + + \ No newline at end of file diff --git a/expenses_manager/expenses/templates/expenses/income_list.html b/expenses_manager/expenses/templates/expenses/income_list.html new file mode 100644 index 0000000..b1b121f --- /dev/null +++ b/expenses_manager/expenses/templates/expenses/income_list.html @@ -0,0 +1,44 @@ +{% load static %} + + + + Ingresos + + + +

Mis ingresos

+ + ➕ Nuevo ingreso + + + + + + + + + + + + + {% for income in incomes %} + + + + + + + + {% empty %} + + + + {% endfor %} + +
NombreCuentaCantidadFecha ingreso
{{ income.name }}{{ income.account }}{{ income.amount|floatformat:2 }}{{ income.date }} + Editar + Eliminar +
No hay ingresos
+ + + \ No newline at end of file diff --git a/expenses_manager/expenses/urls.py b/expenses_manager/expenses/urls.py index 26ded12..cc0a858 100644 --- a/expenses_manager/expenses/urls.py +++ b/expenses_manager/expenses/urls.py @@ -16,4 +16,8 @@ urlpatterns = [ path('accounts/new/', views.account_create, name='account_create'), path('accounts//edit/', views.account_edit, name='account_edit'), path('accounts//delete/', views.account_delete, name='account_delete'), + path('incomes/', views.income_list, name='income_list'), + path('incomes/new/', views.income_create, name='income_create'), + path('incomes//edit/', views.income_edit, name='income_edit'), + path('incomes//delete/', views.income_delete, name='income_delete'), ] \ No newline at end of file diff --git a/expenses_manager/expenses/views.py b/expenses_manager/expenses/views.py index fedb97d..fb04f49 100644 --- a/expenses_manager/expenses/views.py +++ b/expenses_manager/expenses/views.py @@ -1,6 +1,6 @@ from datetime import date from operator import truediv -from .models import Account, Category, Expense, Tag +from .models import Account, Category, Expense, Tag, Income from .forms import ExpenseForm, IncomeForm, TagForm, AccountForm # from dateutli.relativedelta import relativedelta @@ -654,7 +654,7 @@ def income_create(request): income = form.save(commit=False) income.owner = request.user income.save() - return redirect('home') + return redirect('income_list') else: form = IncomeForm(user=request.user) @@ -664,5 +664,49 @@ def income_create(request): {'form': form} ) +@login_required +def income_list(request): + incomes = Income.objects.filter(owner=request.user) + + return render( + request, + 'expenses/income_list.html', + {'incomes': incomes} + ) +@login_required +def income_edit(request, pk): + income = get_object_or_404( + Income, + pk=pk, + owner=request.user + ) + + if request.method == 'POST': + form = IncomeForm(request.POST, instance=income, user=request.user) + if form.is_valid(): + form.save() + return redirect('income_list') + else: + form = IncomeForm(instance=income, user=request.user) + + return render( + request, + 'expenses/income_form.html', + {'form': form} + ) + +@login_required +def income_delete(request, pk): + income = get_object_or_404(Income, pk=pk, owner=request.user) + + if request.method == 'POST': + income.delete() + return redirect('income_list') + + return render( + request, + 'expenses/income_confirm_delete.html', + {'income':income} + )