diff --git a/expenses_manager/expenses/static/expenses/css/base.css b/expenses_manager/expenses/static/expenses/css/base.css index dd5d0e3..533ca0a 100644 --- a/expenses_manager/expenses/static/expenses/css/base.css +++ b/expenses_manager/expenses/static/expenses/css/base.css @@ -4,6 +4,10 @@ body { background: #f7f7f7; } +a.danger { + color: #b91c1c; +} + .topbar { background: #1f2937; padding: 12px 20px; @@ -175,4 +179,30 @@ tbody tr:hover { .btn.secondary { background: #6b7280; +} + +.messages { + margin: 1rem 0; +} + +.message { + padding: 0.6rem 0.8rem; + border-radius: 6px; + margin-bottom: 0.5rem; + font-size: 0.9rem; +} + +.message.success { + background: #e6f4ea; + color: #166534; +} + +.message.error { + background: #fee2e2; + color: #991b1b; +} + +.message.warning { + background: #fef3c7; + color: #92400e; } \ No newline at end of file diff --git a/expenses_manager/expenses/templates/expenses/account_confirm_delete.html b/expenses_manager/expenses/templates/expenses/account_confirm_delete.html index 6ccaca9..0d91fcb 100644 --- a/expenses_manager/expenses/templates/expenses/account_confirm_delete.html +++ b/expenses_manager/expenses/templates/expenses/account_confirm_delete.html @@ -11,8 +11,8 @@
{% csrf_token %} - - Cancelar + + Cancelar
{% endblock %} \ No newline at end of file diff --git a/expenses_manager/expenses/templates/expenses/account_list.html b/expenses_manager/expenses/templates/expenses/account_list.html index a7b0e31..6867499 100644 --- a/expenses_manager/expenses/templates/expenses/account_list.html +++ b/expenses_manager/expenses/templates/expenses/account_list.html @@ -25,7 +25,7 @@ {{ account.active }} Editar - Eliminar + Eliminar {% empty %} diff --git a/expenses_manager/expenses/templates/expenses/base.html b/expenses_manager/expenses/templates/expenses/base.html index 054c3ee..d59d43a 100644 --- a/expenses_manager/expenses/templates/expenses/base.html +++ b/expenses_manager/expenses/templates/expenses/base.html @@ -33,6 +33,15 @@ + {% if messages %} +
+ {% for message in messages %} +
+ {{ message }} +
+ {% endfor %} +
+ {% endif %} {% endif %}
diff --git a/expenses_manager/expenses/templates/expenses/expense_confirm_delete.html b/expenses_manager/expenses/templates/expenses/expense_confirm_delete.html index d5faf94..52366ae 100644 --- a/expenses_manager/expenses/templates/expenses/expense_confirm_delete.html +++ b/expenses_manager/expenses/templates/expenses/expense_confirm_delete.html @@ -1,24 +1,21 @@ {% extends "expenses/base.html" %} -{% block title %}Borrar gasto{% endblock %} +{% block title %}Eliminar gasto{% endblock %} {% block content %} -

Borrar gasto

+

Eliminar gasto

- ¿Seguro que quieres borrar este gasto? + ¿Seguro que quieres eliminar el gasto de + {{ expense.amount }}€ + del {{ expense.date }} perteneciente a + {{ expense.account }}?

- -
{% csrf_token %} - + + Cancelar
- Cancelar {% endblock %} diff --git a/expenses_manager/expenses/templates/expenses/expense_list.html b/expenses_manager/expenses/templates/expenses/expense_list.html index 33d680f..9ff88b1 100644 --- a/expenses_manager/expenses/templates/expenses/expense_list.html +++ b/expenses_manager/expenses/templates/expenses/expense_list.html @@ -111,7 +111,7 @@ Editar - Eliminar + Eliminar {% empty %} diff --git a/expenses_manager/expenses/templates/expenses/income_confirm_delete.html b/expenses_manager/expenses/templates/expenses/income_confirm_delete.html index bda0fbe..2305fd1 100644 --- a/expenses_manager/expenses/templates/expenses/income_confirm_delete.html +++ b/expenses_manager/expenses/templates/expenses/income_confirm_delete.html @@ -1,23 +1,20 @@ {% extends "expenses/base.html" %} -{% block title %}Borrar ingreso{% endblock %} +{% block title %}Eliminar ingreso{% endblock %} {% block content %} -

Borrar ingreso

+

Eliminar ingreso

- ¿Seguro que quieres borrar este ingreso? + ¿Seguro que quieres eliminar el ingreso de + {{ income.amount }}€ + del {{ expense.date }} perteneciente a + {{ income.account }}?

- -
{% csrf_token %} - + + Cancelar
- Cancelar {% endblock %} \ 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 index 6e68463..911e5fa 100644 --- a/expenses_manager/expenses/templates/expenses/income_list.html +++ b/expenses_manager/expenses/templates/expenses/income_list.html @@ -24,7 +24,7 @@ {{ income.date }} Editar - Eliminar + Eliminar {% empty %} diff --git a/expenses_manager/expenses/templates/expenses/tag_confirm_delete.html b/expenses_manager/expenses/templates/expenses/tag_confirm_delete.html index afc767d..ea1bd01 100644 --- a/expenses_manager/expenses/templates/expenses/tag_confirm_delete.html +++ b/expenses_manager/expenses/templates/expenses/tag_confirm_delete.html @@ -3,10 +3,15 @@ {% block content %}

Eliminar etiqueta

+

+ ¿Seguro que quieres eliminar la etiqueta + {{ tag.name }}€? +

+
{% csrf_token %} - + + Cancelar
- Cancelar {% endblock %} \ No newline at end of file diff --git a/expenses_manager/expenses/templates/expenses/tag_list.html b/expenses_manager/expenses/templates/expenses/tag_list.html index 911132b..1291ade 100644 --- a/expenses_manager/expenses/templates/expenses/tag_list.html +++ b/expenses_manager/expenses/templates/expenses/tag_list.html @@ -10,7 +10,7 @@
  • {{ tag.name }} Editar - Eliminar + Eliminar
  • {% empty %}
  • No hay etiquetas
  • diff --git a/expenses_manager/expenses/views.py b/expenses_manager/expenses/views.py index daa338e..2bdb1c0 100644 --- a/expenses_manager/expenses/views.py +++ b/expenses_manager/expenses/views.py @@ -1,5 +1,6 @@ from datetime import date from operator import truediv +from django.contrib import messages from .models import Account, Category, Expense, Tag, Income from .forms import ExpenseForm, IncomeForm, TagForm, AccountForm # from dateutli.relativedelta import relativedelta @@ -211,6 +212,8 @@ def expense_create(request): expense.owner = request.user expense.save() form.save_m2m() + + messages.success(request, 'Gasto creado correctamente.') return redirect('expense_list') else: form = ExpenseForm(user=request.user) @@ -233,6 +236,7 @@ def expense_edit(request, pk): form = ExpenseForm(request.POST or None, instance=expense, user=request.user) if form.is_valid(): expense = form.save() + messages.success(request, 'Gasto actualizado') return redirect('expense_list') else: form = ExpenseForm(instance=expense, user=request.user) @@ -254,6 +258,7 @@ def expense_delete(request, pk): if request.method == 'POST': expense.delete() + messages.success(request, 'Gasto eliminado correctamente.') return redirect('expense_list') return render( @@ -547,6 +552,7 @@ def tag_create(request): tag = form.save(commit=False) tag.owner = request.user tag.save() + messages.success(request, 'Etiqueta creada correctamente.') return redirect('tag_list') else: form = TagForm() @@ -570,6 +576,7 @@ def tag_edit(request, pk): form = TagForm(request.POST, instance=tag) if form.is_valid(): form.save() + messages.success(request, 'Etiqueta actualizada.') return redirect('tag_list') else: form = TagForm(instance=tag) @@ -591,6 +598,7 @@ def tag_delete(request, pk): if request.method == 'POST': tag.delete() + messages.success(request, 'Etiqueta eliminada.') return redirect('tag_list') return render( @@ -618,6 +626,7 @@ def account_create(request): account = form.save(commit=False) account.owner = request.user account.save() + messages.success(request, 'Cuenta creada correctamente.') return redirect('account_list') else: form = AccountForm() @@ -640,6 +649,7 @@ def account_edit(request, pk): form = AccountForm(request.POST, instance=account) if form.is_valid(): form.save() + messages.success(request, 'Cuenta actualizada.') return redirect('account_list') else: form = AccountForm(instance=account) @@ -657,6 +667,7 @@ def account_delete(request, pk): if request.method == 'POST': account.active = False account.save() + messages.success(request, 'Cuenta eliminada.') return redirect('account_list') return render( @@ -673,6 +684,7 @@ def income_create(request): income = form.save(commit=False) income.owner = request.user income.save() + messages.success(request, 'Ingreso creado correctamente.') return redirect('income_list') else: form = IncomeForm(user=request.user) @@ -705,6 +717,7 @@ def income_edit(request, pk): form = IncomeForm(request.POST, instance=income, user=request.user) if form.is_valid(): form.save() + messages.success(request, 'Ingreso actualizado.') return redirect('income_list') else: form = IncomeForm(instance=income, user=request.user) @@ -721,6 +734,7 @@ def income_delete(request, pk): if request.method == 'POST': income.delete() + messages.success(request, 'Ingreso eliminado.') return redirect('income_list') return render( diff --git a/expenses_manager/expenses_manager/settings.py b/expenses_manager/expenses_manager/settings.py index dec671f..1d7817b 100644 --- a/expenses_manager/expenses_manager/settings.py +++ b/expenses_manager/expenses_manager/settings.py @@ -13,6 +13,7 @@ https://docs.djangoproject.com/en/5.2/ref/settings/ import os from pathlib import Path from dotenv import load_dotenv +from django.contrib.messages import constants as messages load_dotenv()