Compare commits
No commits in common. "956841bb02ab17b8861b723a39871ed38a0dfff9" and "8d42cc13f3fbf2782ab285cecee2f4773494db59" have entirely different histories.
956841bb02
...
8d42cc13f3
@ -62,16 +62,17 @@ class IncomeForm(forms.ModelForm):
|
||||
)
|
||||
|
||||
|
||||
class FuelEntryForm(forms.ModelForm):
|
||||
odometer = forms.DecimalField(label="Kilómetros actuales")
|
||||
liters = forms.DecimalField(max_digits=8, decimal_places=2, label="Litros")
|
||||
|
||||
class Meta:
|
||||
model = Expense
|
||||
fields = ["date", "amount", "account"]
|
||||
widgets = {
|
||||
"date": forms.DateInput(format="%Y-%m-%d", attrs={"type":"date"}),
|
||||
}
|
||||
class FuelEntryForm(forms.Form):
|
||||
# Expense fields
|
||||
date = forms.DateField(
|
||||
widget=forms.DateInput(format="%Y-%m-%d", attrs={"type": "date"})
|
||||
)
|
||||
amount = forms.DecimalField(max_digits=10, decimal_places=2)
|
||||
account = forms.ModelChoiceField(queryset=None)
|
||||
|
||||
# Specifics fuel fields
|
||||
odometer = forms.DecimalField(label="Current kilometers")
|
||||
liters = forms.DecimalField(max_digits=8, decimal_places=2)
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
user = kwargs.pop("user")
|
||||
@ -79,11 +80,6 @@ class FuelEntryForm(forms.ModelForm):
|
||||
|
||||
if user:
|
||||
self.fields["account"].queryset = user.accounts.filter(active=True)
|
||||
|
||||
if self.instance.pk and hasattr(self.instance, "fuel_data"):
|
||||
fuel = self.instance.fuel_data
|
||||
self.fields["odometer"].initial = fuel.odometer
|
||||
self.fields["liters"].initial = fuel.liters
|
||||
|
||||
|
||||
class CategoryForm(forms.ModelForm):
|
||||
|
||||
@ -531,9 +531,4 @@ tbody tr:hover {
|
||||
}
|
||||
.progress-fill.danger {
|
||||
background-color: #b71c1c;
|
||||
}
|
||||
|
||||
.auth-help {
|
||||
margin-top: 16px;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
@ -10,8 +10,4 @@
|
||||
<button type="submit">Entrar</button>
|
||||
</form>
|
||||
|
||||
<p class="auth-help">
|
||||
¿Olvidaste la contraseña? <a href="{% url 'password_help' %}">Más información</a>
|
||||
</p>
|
||||
|
||||
{% endblock %}
|
||||
@ -1,17 +0,0 @@
|
||||
{% extends "expenses/base_auth.html" %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<h2>Recuperar contraseña</h2>
|
||||
|
||||
<p>
|
||||
Esta aplicación actualmente no envía correos de recuperación automáticos.
|
||||
Si has olvidado tu contraseña, ponte en contacto con el administrados
|
||||
para que te asigne una nueva.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<a href="{% url 'login' %}">Volver al inicio de sesión.</a>
|
||||
</p>
|
||||
|
||||
{% endblock %}
|
||||
@ -1,6 +1,5 @@
|
||||
from . import views
|
||||
from django.urls import path
|
||||
from django.views.generic import TemplateView
|
||||
|
||||
urlpatterns = [
|
||||
path('', views.home, name='home'),
|
||||
@ -33,5 +32,4 @@ urlpatterns = [
|
||||
path('goals/new/', views.goal_create, name='goal_create'),
|
||||
path('goals/<int:pk>/edit/', views.goal_edit, name='goal_edit'),
|
||||
path('goals/<int:pk>/delete/', views.goal_delete, name='goal_delete'),
|
||||
path('password_help', TemplateView.as_view(template_name="registration/password_help.html"), name="password_help"),
|
||||
]
|
||||
@ -623,15 +623,6 @@ def account_edit(request, pk):
|
||||
|
||||
@login_required
|
||||
def account_delete(request, pk):
|
||||
"""Delete an account via *soft-delete* (sets active=False).
|
||||
|
||||
Unlike expense_delete, tag_delete or income_delete, which delete the
|
||||
record for real, accounts are never physically removed: they are
|
||||
deactivated. Historical expenses and incomes keep their ForeignKey to
|
||||
the account, so balances and charts for past periods remain correct.
|
||||
An inactive account disappears from forms (querysets filtered by
|
||||
active=True) but stays visible and dimmed in the account list.
|
||||
"""
|
||||
account = get_object_or_404(Account, pk=pk, owner=request.user)
|
||||
|
||||
if request.method == "POST":
|
||||
@ -721,12 +712,14 @@ def fuel_create(request):
|
||||
owner=request.user,
|
||||
defaults={"name": "Gasolina"},
|
||||
)
|
||||
|
||||
expense = form.save(commit=False)
|
||||
expense.owner = request.user
|
||||
expense.category = category
|
||||
expense.description = "Repostaje"
|
||||
expense.save()
|
||||
expense = Expense.objects.create(
|
||||
owner=request.user,
|
||||
date=form.cleaned_data["date"],
|
||||
amount=form.cleaned_data["amount"],
|
||||
account=form.cleaned_data["account"],
|
||||
category=category,
|
||||
description="Repostaje",
|
||||
)
|
||||
|
||||
FuelEntry.objects.create(
|
||||
expense=expense,
|
||||
@ -818,7 +811,9 @@ def fuel_edit(request, pk):
|
||||
|
||||
if form.is_valid():
|
||||
# Update expense
|
||||
expense.date = form.save(commit=False)
|
||||
expense.date = form.cleaned_data["date"]
|
||||
expense.amount = form.cleaned_data["amount"]
|
||||
expense.account = form.cleaned_data["account"]
|
||||
expense.description = "Repostaje"
|
||||
expense.save()
|
||||
|
||||
@ -829,7 +824,18 @@ def fuel_edit(request, pk):
|
||||
|
||||
return _redirect_back(request, "expense_list")
|
||||
else:
|
||||
form = FuelEntryForm(instance=expense, user=request.user)
|
||||
fuel = expense.fuel_data
|
||||
# Initialize manually
|
||||
form = FuelEntryForm(
|
||||
initial={
|
||||
"date": expense.date,
|
||||
"amount": expense.amount,
|
||||
"account": expense.account,
|
||||
"odometer": fuel.odometer,
|
||||
"liters": fuel.liters,
|
||||
},
|
||||
user=request.user,
|
||||
)
|
||||
|
||||
next_url = request.POST.get("next") or request.GET.get("next", "")
|
||||
|
||||
|
||||
Binary file not shown.
Loading…
Reference in New Issue
Block a user