From 5d9cd47e721752da9d6b474b4302c53ff9558217 Mon Sep 17 00:00:00 2001 From: Egor fureunoir Gorbunov Date: Wed, 13 Aug 2025 19:31:06 +0300 Subject: [PATCH] Features: 1) Add automatic handling of digital products with `DigitalAssetDownload` creation for eligible orders; Fixes: 1) Add missing import for `DigitalAssetDownload`; Extra: 1) Enhance order processing logic to finalize digital product orders with associated stocks. --- core/signals.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/core/signals.py b/core/signals.py index 9f63ea63..5fbf7b49 100644 --- a/core/signals.py +++ b/core/signals.py @@ -10,7 +10,7 @@ from django.utils.timezone import now from django.utils.translation import gettext_lazy as _ from sentry_sdk import capture_exception -from core.models import Category, Order, Product, PromoCode, Wishlist +from core.models import Category, Order, Product, PromoCode, Wishlist, DigitalAssetDownload from core.serializers import OrderProductSimpleSerializer from core.utils import ( generate_human_readable_id, @@ -98,6 +98,12 @@ def process_order_changes(instance, created, **_kwargs): send_order_created_email.delay(instance.uuid) for order_product in instance.order_products.filter(status="DELIVERING", product__is_digital=True): + if order_product.product.stocks.filter(digital_asset__isnull=False).exists(): + order_product.status = "FINISHED" + download = DigitalAssetDownload.objects.create(order_product=order_product) + order_product.download = download + order_product.save() + continue try: logger.debug("Trying to buy: %s", str(order_product.uuid)) vendor_name = (