feat(transactions): add another transaction (or a similar one) right after adding one

This commit is contained in:
Herculino Trotta
2025-04-20 15:55:50 -03:00
parent b2f04ae1f9
commit 4b7ca61c29
2 changed files with 40 additions and 7 deletions

View File

@@ -6,6 +6,7 @@ from crispy_forms.layout import (
Row,
Column,
Field,
Div,
)
from django import forms
from django.db.models import Q
@@ -206,10 +207,21 @@ class TransactionForm(forms.ModelForm):
else:
self.fields["amount"].widget = ArbitraryDecimalDisplayNumberInput()
self.helper.layout.append(
FormActions(
Div(
NoClassSubmit(
"submit", _("Add"), css_class="btn btn-outline-primary w-100"
"submit", _("Add"), css_class="btn btn-outline-primary"
),
NoClassSubmit(
"submit_and_similar",
_("Save and add similar"),
css_class="btn btn-outline-primary",
),
NoClassSubmit(
"submit_and_another",
_("Save and add another"),
css_class="btn btn-outline-primary",
),
css_class="d-grid gap-2",
),
)

View File

@@ -43,16 +43,33 @@ def transaction_add(request):
year=year,
).date()
update = False
if request.method == "POST":
form = TransactionForm(request.POST)
if form.is_valid():
form.save()
messages.success(request, _("Transaction added successfully"))
return HttpResponse(
status=204,
headers={"HX-Trigger": "updated, hide_offcanvas"},
)
if "submit" in request.POST:
return HttpResponse(
status=204,
headers={"HX-Trigger": "updated, hide_offcanvas"},
)
elif "submit_and_another" in request.POST:
form = TransactionForm(
initial={
"date": expected_date,
"type": transaction_type,
},
)
update = True
elif "submit_and_similar" in request.POST:
form = TransactionForm(
initial=request.POST.dict(),
)
update = True
else:
form = TransactionForm(
initial={
@@ -61,11 +78,15 @@ def transaction_add(request):
},
)
return render(
response = render(
request,
"transactions/fragments/add.html",
{"form": form},
)
if update:
response["HX-Trigger"] = "updated"
return response
@login_required