Fixed bugs 2 #15
@ -128,12 +128,13 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
</td>
|
</td>
|
||||||
<td class="table-actions">
|
<td class="table-actions">
|
||||||
{% if expense.category.slug == 'gasolina' %}
|
{% if expense.fuel_data %}
|
||||||
<a href="{% url 'fuel_edit' expense.id %}">Editar</a>
|
<a href="{% url 'fuel_edit' expense.id %}?next={{ request.get_full_path|urlencode }}">Editar</a>
|
||||||
|
<a href="{% url 'fuel_delete' expense.id %}?next={{ request.get_full_path|urlencode }}" class="danger">Eliminar</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a href="{% url 'expense_edit' expense.id %}">Editar</a>
|
<a href="{% url 'expense_edit' expense.id %}">Editar</a>
|
||||||
|
<a href="{% url 'expense_delete' expense.id %}" class="danger">Eliminar</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<a href="{% url 'expense_delete' expense.id %}" class="danger">Eliminar</a>
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% empty %}
|
{% empty %}
|
||||||
|
|||||||
26
expenses_manager/expenses/templates/fuel/confirm_delete.html
Normal file
26
expenses_manager/expenses/templates/fuel/confirm_delete.html
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
{% extends "expenses/base.html" %}
|
||||||
|
|
||||||
|
{% block title %}
|
||||||
|
Repostajes
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<h2>Eliminar repostaje.</h2>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
¿Seguro que quieres eliminar el repostaje del
|
||||||
|
<strong>{{ fuel.expense.date}}</strong>
|
||||||
|
({{ fuel.liters }}L por {{fuel.expense.amount}}€)?
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class="form-errors">
|
||||||
|
Se eliminará también el gasto asociado en el listado de gastos.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<form method="post">
|
||||||
|
{% csrf_token %}
|
||||||
|
{% if next %}<input type="hidden" name="next" value="{{ next }}">{% endif %}
|
||||||
|
<button class="btn danger">Eliminar</button>
|
||||||
|
<a class="btn" href="{% url 'fuel_list' %}">Cancelar</a>
|
||||||
|
</form>
|
||||||
|
{% endblock %}
|
||||||
@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
<form method="post">
|
<form method="post">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
|
{% if next %}<input type="hidden" name="next" value="{{ next }}">{% endif %}
|
||||||
{{ form.as_p }}
|
{{ form.as_p }}
|
||||||
<button type="submit">
|
<button type="submit">
|
||||||
{% if editing %}
|
{% if editing %}
|
||||||
@ -29,9 +30,11 @@
|
|||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
{% if editing %}
|
{% if next %}
|
||||||
<a href="{% url 'expense_list' %}">Volver</a>
|
<a class="btn" href="{{ next }}">Volver</a>
|
||||||
|
{% elif editing %}
|
||||||
|
<a class="btn" href="{% url 'expense_list' %}">Volver</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a href="{% url 'fuel_list' %}">Volver</a>
|
<a class="btn" href="{% url 'fuel_list' %}">Volver</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
@ -21,6 +21,7 @@
|
|||||||
<th>Gasto</th>
|
<th>Gasto</th>
|
||||||
<th>€/L</th>
|
<th>€/L</th>
|
||||||
<th>Km desde anterior</th>
|
<th>Km desde anterior</th>
|
||||||
|
<th></th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
@ -32,6 +33,10 @@
|
|||||||
<td>{{ fuel.expense.amount }}</td>
|
<td>{{ fuel.expense.amount }}</td>
|
||||||
<td>{{ fuel.price_per_liter|floatformat:2 }}</td>
|
<td>{{ fuel.price_per_liter|floatformat:2 }}</td>
|
||||||
<td>{{ fuel.km_since_previous }}</td>
|
<td>{{ fuel.km_since_previous }}</td>
|
||||||
|
<td class="table-actions">
|
||||||
|
<a href="{% url 'fuel_edit' fuel.expense.id %}?next={{ request.get_full_path|urlencode }}">Editar</a>
|
||||||
|
<a href="{% url 'fuel_delete' fuel.expense.id %}?next={{ request.get_full_path|urlencode }}" class="danger">Eliminar</a>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|||||||
@ -23,6 +23,7 @@ urlpatterns = [
|
|||||||
path('fuel/', views.fuel_list, name='fuel_list'),
|
path('fuel/', views.fuel_list, name='fuel_list'),
|
||||||
path('fuel/create/', views.fuel_create, name='fuel_create'),
|
path('fuel/create/', views.fuel_create, name='fuel_create'),
|
||||||
path('fuel/<int:pk>/edit/', views.fuel_edit, name='fuel_edit'),
|
path('fuel/<int:pk>/edit/', views.fuel_edit, name='fuel_edit'),
|
||||||
|
path('fuel/<int:pk>/delete/', views.fuel_delete, name='fuel_delete'),
|
||||||
path('categories/', views.category_list, name='category_list'),
|
path('categories/', views.category_list, name='category_list'),
|
||||||
path('categories/<int:pk>/edit/', views.category_edit, name='category_edit'),
|
path('categories/<int:pk>/edit/', views.category_edit, name='category_edit'),
|
||||||
path('categories/<int:pk>/delete/', views.category_delete, name='category_delete'),
|
path('categories/<int:pk>/delete/', views.category_delete, name='category_delete'),
|
||||||
|
|||||||
@ -18,6 +18,7 @@ from django.db.models import Sum, ProtectedError
|
|||||||
from django.db.models.functions import ExtractMonth, ExtractYear, ExtractDay
|
from django.db.models.functions import ExtractMonth, ExtractYear, ExtractDay
|
||||||
|
|
||||||
from django.contrib.auth.decorators import login_required
|
from django.contrib.auth.decorators import login_required
|
||||||
|
from django.utils.http import url_has_allowed_host_and_scheme
|
||||||
from django.shortcuts import get_object_or_404, render, redirect
|
from django.shortcuts import get_object_or_404, render, redirect
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
@ -29,6 +30,19 @@ def _get_int(value):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def _redirect_back(request, fallback):
|
||||||
|
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)
|
||||||
|
|
||||||
|
|
||||||
def sub_months(year, month, n):
|
def sub_months(year, month, n):
|
||||||
month -= n
|
month -= n
|
||||||
while month <= 0:
|
while month <= 0:
|
||||||
@ -808,7 +822,7 @@ def fuel_edit(request, pk):
|
|||||||
fuel.liters = form.cleaned_data["liters"]
|
fuel.liters = form.cleaned_data["liters"]
|
||||||
fuel.save()
|
fuel.save()
|
||||||
|
|
||||||
return redirect("expense_list")
|
return _redirect_back(request, "expense_list")
|
||||||
else:
|
else:
|
||||||
fuel = expense.fuel_data
|
fuel = expense.fuel_data
|
||||||
# Initialize manually
|
# Initialize manually
|
||||||
@ -823,13 +837,39 @@ def fuel_edit(request, pk):
|
|||||||
user=request.user,
|
user=request.user,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
next_url = request.POST.get("next") or request.GET.get("next", "")
|
||||||
|
|
||||||
return render(
|
return render(
|
||||||
request,
|
request,
|
||||||
"fuel/create.html",
|
"fuel/create.html",
|
||||||
{
|
{
|
||||||
"active_menu": "expenses",
|
"active_menu": "fuel" if next_url.startswith("/fuel") else "expenses",
|
||||||
"form": form,
|
"form": form,
|
||||||
"editing": True,
|
"editing": True,
|
||||||
|
"next": next_url
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@login_required
|
||||||
|
def fuel_delete(request, pk):
|
||||||
|
expense = get_object_or_404(Expense, pk=pk, owner=request.user)
|
||||||
|
fuel = get_object_or_404(FuelEntry, expense=expense)
|
||||||
|
|
||||||
|
if request.method == "POST":
|
||||||
|
expense.delete()
|
||||||
|
messages.success(request, "Repostaje eliminado.")
|
||||||
|
return _redirect_back(request, "fuel_list")
|
||||||
|
|
||||||
|
next_url = request.POST.get("next") or request.GET.get("next", "")
|
||||||
|
|
||||||
|
return render(
|
||||||
|
request,
|
||||||
|
"fuel/confirm_delete.html",
|
||||||
|
{
|
||||||
|
"active_menu":"fuel" if next_url.startswith("/fuel") else "expenses",
|
||||||
|
"fuel": fuel,
|
||||||
|
"next": next_url
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user