Features: 1) Ensure attributes field is initialized as a dictionary if not already set; 2) Add logic to mark system_email_sent in attributes when order is finished;

Fixes: 1) Remove redundant logic for `attributes` handling in `emailing.py`;

Extra: 1) Minor refactor in `process_order_changes` for better attribute management.
This commit is contained in:
Egor Pavlovich Gorbunov 2025-07-16 19:02:33 +03:00
parent ec1a63afd8
commit bcaa209fa7
2 changed files with 5 additions and 6 deletions

View file

@ -65,6 +65,9 @@ def create_promocode_on_user_referring(instance, created, **_kwargs):
@receiver(post_save, sender=Order)
def process_order_changes(instance, created, **_kwargs):
if type(instance.attributes) is not dict:
instance.attributes = {}
if not created:
if instance.status != "PENDING" and instance.user:
pending_orders = Order.objects.filter(user=instance.user, status="PENDING")
@ -116,6 +119,8 @@ def process_order_changes(instance, created, **_kwargs):
instance.save()
if instance.status == "FINISHED" and not instance.attributes.get("system_email_sent", False):
instance.attributes["system_email_sent"] = True
instance.save()
send_order_finished_email.delay(instance.uuid)

View file

@ -163,10 +163,4 @@ def send_order_finished_email(order_pk: str) -> tuple[bool, str]:
send_thank_you_email(shipped_ops)
if type(order.attributes) is not dict:
order.attributes = {}
order.attributes["system_email_sent"] = True
order.save()
return True, str(order.uuid)