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:
parent
ec1a63afd8
commit
bcaa209fa7
2 changed files with 5 additions and 6 deletions
|
|
@ -65,6 +65,9 @@ def create_promocode_on_user_referring(instance, created, **_kwargs):
|
||||||
|
|
||||||
@receiver(post_save, sender=Order)
|
@receiver(post_save, sender=Order)
|
||||||
def process_order_changes(instance, created, **_kwargs):
|
def process_order_changes(instance, created, **_kwargs):
|
||||||
|
if type(instance.attributes) is not dict:
|
||||||
|
instance.attributes = {}
|
||||||
|
|
||||||
if not created:
|
if not created:
|
||||||
if instance.status != "PENDING" and instance.user:
|
if instance.status != "PENDING" and instance.user:
|
||||||
pending_orders = Order.objects.filter(user=instance.user, status="PENDING")
|
pending_orders = Order.objects.filter(user=instance.user, status="PENDING")
|
||||||
|
|
@ -116,6 +119,8 @@ def process_order_changes(instance, created, **_kwargs):
|
||||||
instance.save()
|
instance.save()
|
||||||
|
|
||||||
if instance.status == "FINISHED" and not instance.attributes.get("system_email_sent", False):
|
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)
|
send_order_finished_email.delay(instance.uuid)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -163,10 +163,4 @@ def send_order_finished_email(order_pk: str) -> tuple[bool, str]:
|
||||||
|
|
||||||
send_thank_you_email(shipped_ops)
|
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)
|
return True, str(order.uuid)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue