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.
This commit is contained in:
Egor Pavlovich Gorbunov 2025-08-13 19:31:06 +03:00
parent 59870b3bc5
commit 5d9cd47e72

View file

@ -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 = (