diff --git a/core/management/commands/deepl_translate.py b/core/management/commands/deepl_translate.py index 84691008..70f4c9f1 100644 --- a/core/management/commands/deepl_translate.py +++ b/core/management/commands/deepl_translate.py @@ -130,7 +130,7 @@ class Command(BaseCommand): try: import readline except ImportError: - readline = None # type: ignore [assignment] + readline = None # type: ignore [assignment] for target_lang in target_langs: api_code = DEEPL_TARGET_LANGUAGES_MAPPING.get(target_lang) diff --git a/core/models.py b/core/models.py index 9aadd4d8..3b4edebe 100644 --- a/core/models.py +++ b/core/models.py @@ -1543,7 +1543,6 @@ class Order(ExportModelOperationsMixin("order"), NiceModel): # type: ignore [mi def apply_addresses(self, billing_address_uuid: str | None = None, shipping_address_uuid: str | None = None): try: - if not any([shipping_address_uuid, billing_address_uuid]) and not self.is_whole_digital: raise ValueError(_("you can only buy physical products with shipping address specified")) diff --git a/core/signals.py b/core/signals.py index 8e60b6a5..c2f8d3f1 100644 --- a/core/signals.py +++ b/core/signals.py @@ -115,7 +115,7 @@ def process_order_changes(instance, created, **_kwargs): instance.status = "FAILED" instance.save() - if instance.status == "FINISHED": + if instance.status == "FINISHED" and not instance.attributes.get("system_email_sent", False): send_order_finished_email.delay(instance.uuid) diff --git a/core/utils/emailing.py b/core/utils/emailing.py index c262bf50..0f8d9388 100644 --- a/core/utils/emailing.py +++ b/core/utils/emailing.py @@ -132,6 +132,9 @@ def send_order_finished_email(order_pk: str) -> tuple[bool, str]: if not order.user: return False, f"Order's user not found with the given pk: {order_pk}" + if order.attributes.get("system_email_sent"): + return True, str(order.uuid) + digital_ops = [] for digital_op in order.order_products.filter( @@ -160,4 +163,10 @@ 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) diff --git a/evibes/settings/drf.py b/evibes/settings/drf.py index 1c4bca08..4603afc5 100644 --- a/evibes/settings/drf.py +++ b/evibes/settings/drf.py @@ -1,8 +1,6 @@ from datetime import timedelta from os import getenv -from django.utils.translation import gettext_lazy as _ - from evibes.settings.base import DEBUG, EVIBES_VERSION, SECRET_KEY from evibes.settings.constance import CONSTANCE_CONFIG @@ -74,7 +72,7 @@ Current API version: {EVIBES_VERSION} """ ) # noqa: E501, F405 -SPECTACULAR_PLATFORM_DESCRIPTION = (f""" +SPECTACULAR_PLATFORM_DESCRIPTION = f""" Welcome to the { CONSTANCE_CONFIG.get("PROJECT_NAME")[0] # type: ignore [index] } Platform API documentation. @@ -106,7 +104,7 @@ The { ## Version Current API version: {EVIBES_VERSION} -""") # noqa: E501, F405 +""" # noqa: E501, F405 SPECTACULAR_PLATFORM_SETTINGS = { "TITLE": f"{CONSTANCE_CONFIG.get('PROJECT_NAME')[0]} API", # type: ignore [index]