From 255c0357979d84dcfdcf897b02158ebcc8e84dfb Mon Sep 17 00:00:00 2001 From: JKuijperM Date: Fri, 31 Jul 2026 11:03:06 +0200 Subject: [PATCH] Unified the confirm/delete/back buttons --- .../templates/categories/confirm_delete.html | 23 +++++------- .../expenses/templates/categories/form.html | 6 ++-- .../templates/expenses/_confirm_delete.html | 20 +++++++++++ .../expenses/account_confirm_delete.html | 19 ++++------ .../templates/expenses/account_form.html | 6 ++-- .../expenses/expense_confirm_delete.html | 27 ++++++-------- .../templates/expenses/expense_form.html | 19 +++++----- .../expenses/income_confirm_delete.html | 26 ++++++-------- .../templates/expenses/income_form.html | 19 +++++----- .../expenses/tag_confirm_delete.html | 18 +++------- .../expenses/templates/expenses/tag_form.html | 7 ++-- .../templates/fuel/confirm_delete.html | 35 +++++++++---------- .../expenses/templates/fuel/create.html | 28 ++++++++------- .../templates/goals/confirm_delete.html | 19 +++------- .../expenses/templates/goals/form.html | 11 +++--- expenses_manager/expenses/views.py | 33 ++++++++--------- 16 files changed, 152 insertions(+), 164 deletions(-) create mode 100644 expenses_manager/expenses/templates/expenses/_confirm_delete.html diff --git a/expenses_manager/expenses/templates/categories/confirm_delete.html b/expenses_manager/expenses/templates/categories/confirm_delete.html index e871993..98c5bf3 100644 --- a/expenses_manager/expenses/templates/categories/confirm_delete.html +++ b/expenses_manager/expenses/templates/categories/confirm_delete.html @@ -1,14 +1,12 @@ -{% extends "expenses/base.html" %} +{% extends "expenses/_confirm_delete.html" %} -{% block title %} - Categorías -{% endblock %} +{% block title %}Categorías{% endblock %} -{% block content %} -

Eliminar categoría

+{% block delete_heading %}Eliminar categoría{% endblock %} -

¿Seguro que quieres eliminar la categoría {{ category.name }}?

+{% block delete_question %}¿Seguro que quieres eliminar la categoría {{ category.name }}?{% endblock %} +{% block delete_warnings %} {% if expense_count %}

Esta categoría tiene {{ expense_count }} gasto{{ expense_count|pluralize }} asociado{{ expense_count|pluralize }} @@ -18,7 +16,7 @@ {% if children %}

Atención: también se eliminarán sus subcategorías: - {% for child in children %}{{child.name}}{% if not forloop.last %}, {% endif %}{% endfor %}. + {% for child in children %}{{ child.name }}{% if not forloop.last %}, {% endif %}{% endfor %}.

{% endif %} @@ -28,11 +26,6 @@

{% endif %} {% endif %} +{% endblock %} -
- {% csrf_token %} - {{ form.as_p }} - - Cancelar -
-{% endblock %} \ No newline at end of file +{% block cancel_url %}{% url 'category_list' %}{% endblock %} diff --git a/expenses_manager/expenses/templates/categories/form.html b/expenses_manager/expenses/templates/categories/form.html index e6b67d8..61a27b6 100644 --- a/expenses_manager/expenses/templates/categories/form.html +++ b/expenses_manager/expenses/templates/categories/form.html @@ -10,7 +10,9 @@
{% csrf_token %} {{ form.as_p }} - - Cancelar +
+ + Cancelar +
{% endblock %} \ No newline at end of file diff --git a/expenses_manager/expenses/templates/expenses/_confirm_delete.html b/expenses_manager/expenses/templates/expenses/_confirm_delete.html new file mode 100644 index 0000000..8b212e2 --- /dev/null +++ b/expenses_manager/expenses/templates/expenses/_confirm_delete.html @@ -0,0 +1,20 @@ +{% extends "expenses/base.html" %} + +{% block title %}Eliminar{% endblock %} + +{% block content %} +

{% block delete_heading %}Eliminar{% endblock %}

+ +

{% block delete_question %}¿Seguro que quieres eliminar este elemento?{% endblock %}

+ + {% block delete_warnings %}{% endblock %} + +
+ {% csrf_token %} + {% block delete_extra_fields %}{% endblock %} +
+ + Cancelar +
+
+{% endblock %} diff --git a/expenses_manager/expenses/templates/expenses/account_confirm_delete.html b/expenses_manager/expenses/templates/expenses/account_confirm_delete.html index 771a60e..e2ac093 100644 --- a/expenses_manager/expenses/templates/expenses/account_confirm_delete.html +++ b/expenses_manager/expenses/templates/expenses/account_confirm_delete.html @@ -1,18 +1,11 @@ -{% extends "expenses/base.html" %} +{% extends "expenses/_confirm_delete.html" %} + {% block title %}Eliminar{% endblock %} -{% block content %} -

Eliminar cuenta

+{% block delete_heading %}Eliminar cuenta{% endblock %} -

- ¿Seguro que quieres eliminar la cuenta - {{ account.name }} -

+{% block delete_question %}¿Seguro que quieres eliminar la cuenta {{ account.name }}?{% endblock %} -
- {% csrf_token %} - - Cancelar -
+{% block delete_button %}Sí, eliminar{% endblock %} -{% endblock %} \ No newline at end of file +{% block cancel_url %}{% url 'account_list' %}{% endblock %} diff --git a/expenses_manager/expenses/templates/expenses/account_form.html b/expenses_manager/expenses/templates/expenses/account_form.html index d003498..e017818 100644 --- a/expenses_manager/expenses/templates/expenses/account_form.html +++ b/expenses_manager/expenses/templates/expenses/account_form.html @@ -14,8 +14,10 @@ {% csrf_token %} {{ form.as_p }} - - Cancelar +
+ + Cancelar +
{% endblock %} \ No newline at end of file diff --git a/expenses_manager/expenses/templates/expenses/expense_confirm_delete.html b/expenses_manager/expenses/templates/expenses/expense_confirm_delete.html index b498c8a..1d127e6 100644 --- a/expenses_manager/expenses/templates/expenses/expense_confirm_delete.html +++ b/expenses_manager/expenses/templates/expenses/expense_confirm_delete.html @@ -1,21 +1,16 @@ -{% extends "expenses/base.html" %} +{% extends "expenses/_confirm_delete.html" %} {% block title %}Eliminar gasto{% endblock %} -{% block content %} -

Eliminar gasto

- -

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

- -
- {% csrf_token %} - - Cancelar -
+{% block delete_heading %}Eliminar gasto{% endblock %} +{% block delete_question %} + ¿Seguro que quieres eliminar el gasto de + {{ expense.amount }}€ + del {{ expense.date }} perteneciente a + {{ expense.account }}? {% endblock %} + +{% block delete_button %}Sí, eliminar{% endblock %} + +{% block cancel_url %}{% url 'expense_list' %}{% endblock %} diff --git a/expenses_manager/expenses/templates/expenses/expense_form.html b/expenses_manager/expenses/templates/expenses/expense_form.html index b941fd7..a925943 100644 --- a/expenses_manager/expenses/templates/expenses/expense_form.html +++ b/expenses_manager/expenses/templates/expenses/expense_form.html @@ -46,14 +46,15 @@ {% endif %} {% endfor %} - +
+ + Volver +
- - Volver {% endblock %} diff --git a/expenses_manager/expenses/templates/expenses/income_confirm_delete.html b/expenses_manager/expenses/templates/expenses/income_confirm_delete.html index bacb482..895e997 100644 --- a/expenses_manager/expenses/templates/expenses/income_confirm_delete.html +++ b/expenses_manager/expenses/templates/expenses/income_confirm_delete.html @@ -1,20 +1,16 @@ -{% extends "expenses/base.html" %} +{% extends "expenses/_confirm_delete.html" %} + {% block title %}Eliminar ingreso{% endblock %} -{% block content %} -

Eliminar ingreso

+{% block delete_heading %}Eliminar ingreso{% endblock %} -

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

+{% block delete_question %} + ¿Seguro que quieres eliminar el ingreso de + {{ income.amount }}€ + del {{ income.date }} perteneciente a + {{ income.account }}? +{% endblock %} -
- {% csrf_token %} - - Cancelar -
+{% block delete_button %}Sí, eliminar{% endblock %} -{% endblock %} \ No newline at end of file +{% block cancel_url %}{% url 'income_list' %}{% endblock %} diff --git a/expenses_manager/expenses/templates/expenses/income_form.html b/expenses_manager/expenses/templates/expenses/income_form.html index 0149d93..88495fa 100644 --- a/expenses_manager/expenses/templates/expenses/income_form.html +++ b/expenses_manager/expenses/templates/expenses/income_form.html @@ -19,14 +19,15 @@
{% csrf_token %} {{ form.as_p }} - +
+ + Volver +
- - Volver {% endblock %} \ No newline at end of file diff --git a/expenses_manager/expenses/templates/expenses/tag_confirm_delete.html b/expenses_manager/expenses/templates/expenses/tag_confirm_delete.html index 9950372..1bb9b32 100644 --- a/expenses_manager/expenses/templates/expenses/tag_confirm_delete.html +++ b/expenses_manager/expenses/templates/expenses/tag_confirm_delete.html @@ -1,17 +1,9 @@ -{% extends "expenses/base.html" %} +{% extends "expenses/_confirm_delete.html" %} + {% block title %}Etiquetas{% endblock %} -{% block content %} -

Eliminar etiqueta

-

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

+{% block delete_heading %}Eliminar etiqueta{% endblock %} -
- {% csrf_token %} - - Cancelar -
+{% block delete_question %}¿Seguro que quieres eliminar la etiqueta {{ tag.name }}?{% endblock %} -{% endblock %} \ No newline at end of file +{% block cancel_url %}{% url 'tag_list' %}{% endblock %} diff --git a/expenses_manager/expenses/templates/expenses/tag_form.html b/expenses_manager/expenses/templates/expenses/tag_form.html index 5818e6f..212c0a1 100644 --- a/expenses_manager/expenses/templates/expenses/tag_form.html +++ b/expenses_manager/expenses/templates/expenses/tag_form.html @@ -6,8 +6,9 @@
{% csrf_token %} {{ form.as_p }} - +
+ + Volver +
- - Volver {% endblock %} \ No newline at end of file diff --git a/expenses_manager/expenses/templates/fuel/confirm_delete.html b/expenses_manager/expenses/templates/fuel/confirm_delete.html index 779cbad..ede0165 100644 --- a/expenses_manager/expenses/templates/fuel/confirm_delete.html +++ b/expenses_manager/expenses/templates/fuel/confirm_delete.html @@ -1,26 +1,23 @@ -{% extends "expenses/base.html" %} +{% extends "expenses/_confirm_delete.html" %} -{% block title %} - Repostajes +{% block title %}Repostajes{% endblock %} + +{% block delete_heading %}Eliminar repostaje.{% endblock %} + +{% block delete_question %} + ¿Seguro que quieres eliminar el repostaje del + {{ fuel.expense.date }} + ({{ fuel.liters }}L por {{ fuel.expense.amount }}€)? {% endblock %} -{% block content %} -

Eliminar repostaje.

- -

- ¿Seguro que quieres eliminar el repostaje del - {{ fuel.expense.date}} - ({{ fuel.liters }}L por {{fuel.expense.amount}}€)? -

- +{% block delete_warnings %}

Se eliminará también el gasto asociado en el listado de gastos.

+{% endblock %} -
- {% csrf_token %} - {% if next %}{% endif %} - - Cancelar -
-{% endblock %} \ No newline at end of file +{% block delete_extra_fields %} + {% if next %}{% endif %} +{% endblock %} + +{% block cancel_url %}{% if next %}{{ next }}{% else %}{% url 'fuel_list' %}{% endif %}{% endblock %} diff --git a/expenses_manager/expenses/templates/fuel/create.html b/expenses_manager/expenses/templates/fuel/create.html index 5656555..58a36cf 100644 --- a/expenses_manager/expenses/templates/fuel/create.html +++ b/expenses_manager/expenses/templates/fuel/create.html @@ -21,20 +21,22 @@ {% csrf_token %} {% if next %}{% endif %} {{ form.as_p }} - + + {% if next %} + Volver + {% elif editing %} + Volver {% else %} - Crear repostaje + Volver {% endif %} - + - - {% if next %} - Volver - {% elif editing %} - Volver - {% else %} - Volver - {% endif %} {% endblock %} \ No newline at end of file diff --git a/expenses_manager/expenses/templates/goals/confirm_delete.html b/expenses_manager/expenses/templates/goals/confirm_delete.html index 20b7296..6c9e642 100644 --- a/expenses_manager/expenses/templates/goals/confirm_delete.html +++ b/expenses_manager/expenses/templates/goals/confirm_delete.html @@ -1,18 +1,9 @@ -{% extends "expenses/base.html" %} +{% extends "expenses/_confirm_delete.html" %} + {% block title %}Objetivos{% endblock %} -{% block content %} -

Eliminar objetivo

+{% block delete_heading %}Eliminar objetivo{% endblock %} -

- ¿Seguro que quieres eliminar el objetivo - {{ goal.name }}? -

+{% block delete_question %}¿Seguro que quieres eliminar el objetivo {{ goal.name }}?{% endblock %} -
- {% csrf_token %} - - Cancelar -
- -{% endblock %} \ No newline at end of file +{% block cancel_url %}{% url 'goal_list' %}{% endblock %} diff --git a/expenses_manager/expenses/templates/goals/form.html b/expenses_manager/expenses/templates/goals/form.html index befc807..550752a 100644 --- a/expenses_manager/expenses/templates/goals/form.html +++ b/expenses_manager/expenses/templates/goals/form.html @@ -11,10 +11,11 @@
{% csrf_token %} {{ form.as_p }} - +
+ + Volver +
- - Volver {% endblock %} \ No newline at end of file diff --git a/expenses_manager/expenses/views.py b/expenses_manager/expenses/views.py index cc29921..65cd142 100644 --- a/expenses_manager/expenses/views.py +++ b/expenses_manager/expenses/views.py @@ -30,17 +30,22 @@ def _get_int(value): return None -def _redirect_back(request, fallback): +def _safe_next(request): next_url = request.POST.get("next") or request.GET.get("next") - + if next_url and url_has_allowed_host_and_scheme( next_url, allowed_hosts={request.get_host()}, require_https=request.is_secure(), ): - return redirect(next_url) - - return redirect(fallback) + return next_url + + return "" + + +def _redirect_back(request, fallback): + next_url = _safe_next(request) + return redirect(next_url or fallback) def sub_months(year, month, n): @@ -804,20 +809,16 @@ def fuel_list(request): @login_required def fuel_edit(request, pk): - expense = get_object_or_404( - Expense, - pk=pk, - owner=request.user, - ) + expense = get_object_or_404(Expense, pk=pk, owner=request.user) fuel = get_object_or_404(FuelEntry, expense=expense) if request.method == "POST": - form = FuelEntryForm(request.POST, user=request.user) + form = FuelEntryForm(request.POST, instance=expense, user=request.user) if form.is_valid(): # Update expense - expense.date = form.save(commit=False) + expense = form.save(commit=False) expense.description = "Repostaje" expense.save() @@ -830,8 +831,8 @@ def fuel_edit(request, pk): else: form = FuelEntryForm(instance=expense, user=request.user) - next_url = request.POST.get("next") or request.GET.get("next", "") - + next_url = _safe_next(request) + return render( request, "fuel/create.html", @@ -854,8 +855,8 @@ def fuel_delete(request, pk): messages.success(request, "Repostaje eliminado.") return _redirect_back(request, "fuel_list") - next_url = request.POST.get("next") or request.GET.get("next", "") - + next_url = _safe_next(request) + return render( request, "fuel/confirm_delete.html",