Files
mkspc-mgmt/app/base/signals/booking.py
2023-05-29 17:41:48 +02:00

30 lines
957 B
Python
Executable File

from django.db.models.signals import post_save
from django.dispatch import receiver
from app.base.models import Transaction, Booking
@receiver(post_save, sender=Booking)
def booking_post_save(sender, instance: Booking, created: bool, **kwargs):
amount = instance.calculated_price
with_transaction = instance.end_time and amount
description = f'{instance.type.label} ({instance.duration or 0} Min)'
# Create or update existing Transaction
transaction = Transaction.objects.filter(booking=instance).first()
if transaction:
if with_transaction:
transaction.amount = amount
transaction.description = description
transaction.save()
else:
transaction.delete()
elif with_transaction:
Transaction.objects.create(
account=instance.user.account,
amount=amount,
description=description,
booking=instance,
)