Refactor fuel form

This commit is contained in:
JKuijperM 2026-07-27 15:57:44 +02:00
parent 35afb08960
commit 88802360db
2 changed files with 23 additions and 34 deletions

View File

@ -62,17 +62,16 @@ class IncomeForm(forms.ModelForm):
) )
class FuelEntryForm(forms.Form): class FuelEntryForm(forms.ModelForm):
# Expense fields odometer = forms.DecimalField(label="Kilómetros actuales")
date = forms.DateField( liters = forms.DecimalField(max_digits=8, decimal_places=2, label="Litros")
widget=forms.DateInput(format="%Y-%m-%d", attrs={"type": "date"})
) class Meta:
amount = forms.DecimalField(max_digits=10, decimal_places=2) model = Expense
account = forms.ModelChoiceField(queryset=None) fields = ["date", "amount", "account"]
widgets = {
# Specifics fuel fields "date": forms.DateInput(format="%Y-%m-%d", attrs={"type":"date"}),
odometer = forms.DecimalField(label="Current kilometers") }
liters = forms.DecimalField(max_digits=8, decimal_places=2)
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
user = kwargs.pop("user") user = kwargs.pop("user")
@ -80,6 +79,11 @@ class FuelEntryForm(forms.Form):
if user: if user:
self.fields["account"].queryset = user.accounts.filter(active=True) 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): class CategoryForm(forms.ModelForm):

View File

@ -712,14 +712,12 @@ def fuel_create(request):
owner=request.user, owner=request.user,
defaults={"name": "Gasolina"}, defaults={"name": "Gasolina"},
) )
expense = Expense.objects.create(
owner=request.user, expense = form.save(commit=False)
date=form.cleaned_data["date"], expense.owner = request.user
amount=form.cleaned_data["amount"], expense.category = category
account=form.cleaned_data["account"], expense.description = "Repostaje"
category=category, expense.save()
description="Repostaje",
)
FuelEntry.objects.create( FuelEntry.objects.create(
expense=expense, expense=expense,
@ -811,9 +809,7 @@ def fuel_edit(request, pk):
if form.is_valid(): if form.is_valid():
# Update expense # Update expense
expense.date = form.cleaned_data["date"] expense.date = form.save(commit=False)
expense.amount = form.cleaned_data["amount"]
expense.account = form.cleaned_data["account"]
expense.description = "Repostaje" expense.description = "Repostaje"
expense.save() expense.save()
@ -824,18 +820,7 @@ def fuel_edit(request, pk):
return _redirect_back(request, "expense_list") return _redirect_back(request, "expense_list")
else: else:
fuel = expense.fuel_data form = FuelEntryForm(instance=expense, user=request.user)
# 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", "") next_url = request.POST.get("next") or request.GET.get("next", "")