mirror of
https://github.com/eitchtee/WYGIWYH.git
synced 2026-04-26 10:38:36 +02:00
changes
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
from copy import deepcopy
|
||||
|
||||
from crispy_bootstrap5.bootstrap5 import Switch, BS5Accordion
|
||||
from crispy_forms.bootstrap import FormActions, AccordionGroup, AppendedText
|
||||
from crispy_forms.helper import FormHelper
|
||||
@@ -239,11 +241,16 @@ class TransactionForm(forms.ModelForm):
|
||||
def save(self, **kwargs):
|
||||
is_new = not self.instance.id
|
||||
|
||||
if not is_new:
|
||||
old_data = deepcopy(Transaction.objects.get(pk=self.instance.id))
|
||||
else:
|
||||
old_data = None
|
||||
|
||||
instance = super().save(**kwargs)
|
||||
if is_new:
|
||||
transaction_created.send(sender=instance)
|
||||
else:
|
||||
transaction_updated.send(sender=instance)
|
||||
transaction_updated.send(sender=instance, old_data=old_data)
|
||||
|
||||
return instance
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import logging
|
||||
from copy import deepcopy
|
||||
|
||||
from dateutil.relativedelta import relativedelta
|
||||
from django.conf import settings
|
||||
@@ -33,13 +34,13 @@ transaction_deleted = Signal()
|
||||
|
||||
class SoftDeleteQuerySet(models.QuerySet):
|
||||
@staticmethod
|
||||
def _emit_signals(instances, created=False):
|
||||
def _emit_signals(instances, created=False, old_data=None):
|
||||
"""Helper to emit signals for multiple instances"""
|
||||
for instance in instances:
|
||||
for i, instance in enumerate(instances):
|
||||
if created:
|
||||
transaction_created.send(sender=instance)
|
||||
else:
|
||||
transaction_updated.send(sender=instance)
|
||||
transaction_updated.send(sender=instance, old_data=old_data[i])
|
||||
|
||||
def bulk_create(self, objs, emit_signal=True, **kwargs):
|
||||
instances = super().bulk_create(objs, **kwargs)
|
||||
@@ -50,22 +51,25 @@ class SoftDeleteQuerySet(models.QuerySet):
|
||||
return instances
|
||||
|
||||
def bulk_update(self, objs, fields, emit_signal=True, **kwargs):
|
||||
old_data = deepcopy(objs)
|
||||
result = super().bulk_update(objs, fields, **kwargs)
|
||||
|
||||
if emit_signal:
|
||||
self._emit_signals(objs, created=False)
|
||||
self._emit_signals(objs, created=False, old_data=old_data)
|
||||
|
||||
return result
|
||||
|
||||
def update(self, emit_signal=True, **kwargs):
|
||||
# Get instances before update
|
||||
instances = list(self)
|
||||
old_data = deepcopy(instances)
|
||||
|
||||
result = super().update(**kwargs)
|
||||
|
||||
if emit_signal:
|
||||
# Refresh instances to get new values
|
||||
refreshed = self.model.objects.filter(pk__in=[obj.pk for obj in instances])
|
||||
self._emit_signals(refreshed, created=False)
|
||||
self._emit_signals(refreshed, created=False, old_data=old_data)
|
||||
|
||||
return result
|
||||
|
||||
|
||||
@@ -177,6 +177,7 @@ def transaction_edit(request, transaction_id, **kwargs):
|
||||
transaction = get_object_or_404(Transaction, id=transaction_id)
|
||||
|
||||
if request.method == "POST":
|
||||
print(request.POST, request.POST.items())
|
||||
form = TransactionForm(request.POST, instance=transaction)
|
||||
if form.is_valid():
|
||||
form.save()
|
||||
@@ -213,6 +214,7 @@ def transactions_bulk_edit(request):
|
||||
if form.is_valid():
|
||||
# Apply changes from the form to all selected transactions
|
||||
for transaction in transactions:
|
||||
old_data = deepcopy(transaction)
|
||||
for field_name, value in form.cleaned_data.items():
|
||||
if value or isinstance(
|
||||
value, bool
|
||||
@@ -225,7 +227,7 @@ def transactions_bulk_edit(request):
|
||||
setattr(transaction, field_name, value)
|
||||
|
||||
transaction.save()
|
||||
transaction_updated.send(sender=transaction)
|
||||
transaction_updated.send(sender=transaction, old_data=old_data)
|
||||
|
||||
messages.success(
|
||||
request,
|
||||
@@ -373,10 +375,13 @@ def transactions_transfer(request):
|
||||
@require_http_methods(["GET"])
|
||||
def transaction_pay(request, transaction_id):
|
||||
transaction = get_object_or_404(Transaction, pk=transaction_id)
|
||||
old_data = deepcopy(transaction)
|
||||
|
||||
new_is_paid = False if transaction.is_paid else True
|
||||
transaction.is_paid = new_is_paid
|
||||
transaction.save()
|
||||
transaction_updated.send(sender=transaction)
|
||||
|
||||
transaction_updated.send(sender=transaction, old_data=old_data)
|
||||
|
||||
response = render(
|
||||
request,
|
||||
@@ -394,11 +399,12 @@ def transaction_pay(request, transaction_id):
|
||||
@require_http_methods(["GET"])
|
||||
def transaction_mute(request, transaction_id):
|
||||
transaction = get_object_or_404(Transaction, pk=transaction_id)
|
||||
old_data = deepcopy(transaction)
|
||||
|
||||
new_mute = False if transaction.mute else True
|
||||
transaction.mute = new_mute
|
||||
transaction.save()
|
||||
transaction_updated.send(sender=transaction)
|
||||
transaction_updated.send(sender=transaction, old_data=old_data)
|
||||
|
||||
response = render(
|
||||
request,
|
||||
@@ -414,19 +420,20 @@ def transaction_mute(request, transaction_id):
|
||||
@require_http_methods(["GET"])
|
||||
def transaction_change_month(request, transaction_id, change_type):
|
||||
transaction: Transaction = get_object_or_404(Transaction, pk=transaction_id)
|
||||
old_data = deepcopy(transaction)
|
||||
|
||||
if change_type == "next":
|
||||
transaction.reference_date = transaction.reference_date + relativedelta(
|
||||
months=1
|
||||
)
|
||||
transaction.save()
|
||||
transaction_updated.send(sender=transaction)
|
||||
transaction_updated.send(sender=transaction, old_data=old_data)
|
||||
elif change_type == "previous":
|
||||
transaction.reference_date = transaction.reference_date - relativedelta(
|
||||
months=1
|
||||
)
|
||||
transaction.save()
|
||||
transaction_updated.send(sender=transaction)
|
||||
transaction_updated.send(sender=transaction, old_data=old_data)
|
||||
|
||||
return HttpResponse(
|
||||
status=204,
|
||||
@@ -440,9 +447,11 @@ def transaction_change_month(request, transaction_id, change_type):
|
||||
def transaction_move_to_today(request, transaction_id):
|
||||
transaction: Transaction = get_object_or_404(Transaction, pk=transaction_id)
|
||||
|
||||
old_data = deepcopy(transaction)
|
||||
|
||||
transaction.date = timezone.localdate(timezone.now())
|
||||
transaction.save()
|
||||
transaction_updated.send(sender=transaction)
|
||||
transaction_updated.send(sender=transaction, old_data=old_data)
|
||||
|
||||
return HttpResponse(
|
||||
status=204,
|
||||
|
||||
Reference in New Issue
Block a user