2023-08-26 01:17:47 +03:00
|
|
|
import os
|
|
|
|
|
|
|
|
from pitch_deck_generator.common.tasks import crop_model_image
|
|
|
|
|
|
|
|
|
|
|
|
def create_cropped_model_image(sender, instance, created, **kwargs):
|
|
|
|
model = sender
|
|
|
|
if created:
|
|
|
|
if instance.image:
|
2023-08-26 09:53:03 +03:00
|
|
|
|
2023-08-26 01:17:47 +03:00
|
|
|
crop_model_image.apply_async(
|
|
|
|
kwargs={
|
|
|
|
"pk": instance.pk,
|
|
|
|
"app_label": model._meta.app_label,
|
|
|
|
"model_name": model._meta.model_name,
|
|
|
|
},
|
|
|
|
countdown=2,
|
|
|
|
)
|
2023-08-26 09:53:03 +03:00
|
|
|
|
2023-08-26 01:17:47 +03:00
|
|
|
|
|
|
|
def update_cropped_model_image(sender, instance, **kwargs):
|
|
|
|
model = sender
|
|
|
|
if instance.id:
|
|
|
|
previous = model.objects.get(id=instance.id)
|
|
|
|
if previous.image != instance.image:
|
|
|
|
# delete previous cropped image
|
|
|
|
if instance.image_cropped:
|
|
|
|
if os.path.isfile(instance.image_cropped.path):
|
|
|
|
os.remove(instance.image_cropped.path)
|
|
|
|
# run task to create new cropped image
|
|
|
|
if kwargs["update_fields"] != frozenset({"image_cropped"}) and instance:
|
|
|
|
if instance.image:
|
2023-08-26 09:53:03 +03:00
|
|
|
|
2023-08-26 01:17:47 +03:00
|
|
|
crop_model_image.apply_async(
|
|
|
|
kwargs={
|
|
|
|
"pk": instance.pk,
|
|
|
|
"app_label": model._meta.app_label,
|
|
|
|
"model_name": model._meta.model_name,
|
|
|
|
},
|
|
|
|
countdown=2,
|
|
|
|
)
|
2023-08-26 09:53:03 +03:00
|
|
|
|
2023-08-26 01:17:47 +03:00
|
|
|
else:
|
|
|
|
instance.image_cropped = None
|
|
|
|
|
|
|
|
|
|
|
|
def delete_cropped_model_image(sender, instance, **kwargs):
|
|
|
|
if instance.image_cropped:
|
|
|
|
if os.path.isfile(instance.image_cropped.path):
|
|
|
|
os.remove(instance.image_cropped.path)
|