diff --git a/core/elasticsearch/documents.py b/core/elasticsearch/documents.py index a9592aa4..b2bdca46 100644 --- a/core/elasticsearch/documents.py +++ b/core/elasticsearch/documents.py @@ -80,11 +80,15 @@ class ProductDocument(ActiveOnlyMixin, BaseDocument): ) def get_queryset(self): - return super().get_queryset().filter( + return ( + super() + .get_queryset() + .filter( brand__is_active=True, category__is_active=True, stocks__vendor__is_active=True, ) + ) class Index(BaseDocument.Index): name = "products" diff --git a/core/signals.py b/core/signals.py index c58c20d6..4e040c96 100644 --- a/core/signals.py +++ b/core/signals.py @@ -11,7 +11,6 @@ from django.utils.translation import gettext_lazy as _ from sentry_sdk import capture_exception from core.models import Category, Order, Product, PromoCode, Wishlist, DigitalAssetDownload -from core.serializers import OrderProductSimpleSerializer from core.utils import ( generate_human_readable_id, resolve_translations_for_elasticsearch, @@ -89,16 +88,20 @@ def process_order_changes(instance, created, **_kwargs): break if instance.status in ["CREATED", "PAYMENT"]: - logger.debug( - "Processing order changes: %s\nWith orderproducts: %s", - str(instance.__dict__), - str(OrderProductSimpleSerializer(instance.order_products.all(), many=True).data), - ) if not instance.is_whole_digital: 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(): + stocks_qs = order_product.product.stocks.filter(digital_asset__isnull=False).exclude(digital_asset="") + + stock = stocks_qs.first() + + has_file = False + if stock: + f = stock.digital_asset + has_file = bool(getattr(f, "name", "")) and f.storage.exists(f.name) + + if has_file: order_product.status = "FINISHED" download = DigitalAssetDownload.objects.create(order_product=order_product) order_product.download = download @@ -107,7 +110,6 @@ def process_order_changes(instance, created, **_kwargs): order_product.order.user.payments_balance.save() continue try: - logger.debug("Trying to buy: %s", str(order_product.uuid)) vendor_name = ( order_product.product.stocks.filter(price=order_product.buy_price).first().vendor.name.lower() )