mirror of
https://github.com/spbleadersofdigtal/backend.git
synced 2024-12-01 14:53:44 +03:00
43 lines
1.3 KiB
Python
43 lines
1.3 KiB
Python
from django.core.cache import cache
|
|
from django.db.models.signals import post_delete, post_save, pre_save
|
|
from django.dispatch import receiver
|
|
|
|
from pitch_deck_generator.tickets.models import Ticket
|
|
|
|
|
|
@receiver(post_save, sender=Ticket)
|
|
def ticket_to_cache(sender, instance: Ticket, created, **kwargs):
|
|
if created:
|
|
cache.set_many(
|
|
{
|
|
f"{instance.id}": True,
|
|
f"{instance.id}-current": 0,
|
|
f"{instance.id}-name": instance.name,
|
|
f"{instance.id}-max": instance.max,
|
|
f"{instance.id}-next": instance.next,
|
|
},
|
|
3600,
|
|
)
|
|
|
|
|
|
@receiver(pre_save, sender=Ticket)
|
|
def update_ticket(sender, instance: Ticket, **kwargs):
|
|
if instance.id is not None:
|
|
cache.set_many(
|
|
{
|
|
f"{instance.id}": True,
|
|
f"{instance.id}-name": instance.name,
|
|
f"{instance.id}-max": instance.max,
|
|
f"{instance.id}-next": instance.next,
|
|
},
|
|
3600,
|
|
)
|
|
|
|
|
|
@receiver(post_delete, sender=Ticket)
|
|
def delete_ticket(sender, instance: Ticket, **kwargs):
|
|
uuid = instance.id
|
|
cache.delete_many(
|
|
[f"{uuid}", f"{uuid}-max", f"{uuid}-current", f"{uuid}-name", f"{uuid}-next"]
|
|
)
|