backend/app/marketplace/signals.py

30 lines
1009 B
Python
Raw Permalink Normal View History

from django.core.files import File
from django.db.models.signals import pre_save, post_save
from django.dispatch import receiver
from utils.file import crop_image
from utils.generators import generate_charset
from .models import Product
2022-10-09 06:27:35 +03:00
from .tasks import await_nft
@receiver(pre_save, sender=Product)
def create_product(sender, instance, **kwargs):
slug = generate_charset(5)
while Product.objects.filter(slug=slug).exists():
slug = generate_charset(5)
instance.slug = slug
@receiver(post_save, sender=Product)
def process_product(sender, instance, created, **kwargs):
2022-10-09 06:27:35 +03:00
if instance.image and kwargs["update_fields"] is None:
instance.image_cropped = File(
crop_image(instance.image.path, cut_to=(250, 250)),
name=instance.image.path.split(".")[0].split("/")[-1] + ".png",
)
instance.save(update_fields=["image_cropped"])
2022-10-09 06:27:35 +03:00
if created and kwargs["update_fields"] is None:
await_nft.apply_async(kwargs={"pk": instance.pk})