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 %}
-
-{% 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 @@
{% 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 %}
+
+
+{% 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 %}
-
+{% 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 }}
- Guardar
- 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 }} ?
-
-
-
+{% 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 %}
-
- {% if form.instance.pk %}
- Guardar gasto
- {% else %}
- Crear gasto
- {% endif %}
-
+
-
- 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 %}
-
+{% 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 @@
-
- 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 %}
-
+{% 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 @@
-
- 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 %}
-
-{% 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 editing %}
- Guardar repostaje
+
-
- {% 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 %}
-
-
-{% 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 @@
-
- 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",