feat(transactions): add menu itens for quickly changing transaction date

This commit is contained in:
Herculino Trotta
2025-08-07 15:30:42 -03:00
parent 31cf62e277
commit 2f33b5989f
3 changed files with 56 additions and 0 deletions

View File

@@ -71,6 +71,16 @@ urlpatterns = [
views.transaction_mute,
name="transaction_mute",
),
path(
"transaction/<int:transaction_id>/change-month/<str:change_type>/",
views.transaction_change_month,
name="transaction_change_month",
),
path(
"transaction/<int:transaction_id>/move-to-today/",
views.transaction_move_to_today,
name="transaction_move_to_today",
),
path(
"transaction/<int:transaction_id>/delete/",
views.transaction_delete,

View File

@@ -1,6 +1,7 @@
import datetime
from copy import deepcopy
from dateutil.relativedelta import relativedelta
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from django.core.paginator import Paginator
@@ -408,6 +409,47 @@ def transaction_mute(request, transaction_id):
return response
@only_htmx
@login_required
@require_http_methods(["GET"])
def transaction_change_month(request, transaction_id, change_type):
transaction: Transaction = get_object_or_404(Transaction, pk=transaction_id)
if change_type == "next":
transaction.reference_date = transaction.reference_date + relativedelta(
months=1
)
transaction.save()
transaction_updated.send(sender=transaction)
elif change_type == "previous":
transaction.reference_date = transaction.reference_date - relativedelta(
months=1
)
transaction.save()
transaction_updated.send(sender=transaction)
return HttpResponse(
status=204,
headers={"HX-Trigger": "updated"},
)
@only_htmx
@login_required
@require_http_methods(["GET"])
def transaction_move_to_today(request, transaction_id):
transaction: Transaction = get_object_or_404(Transaction, pk=transaction_id)
transaction.date = timezone.localdate(timezone.now())
transaction.save()
transaction_updated.send(sender=transaction)
return HttpResponse(
status=204,
headers={"HX-Trigger": "updated"},
)
@login_required
@require_http_methods(["GET"])
def transaction_all_index(request):