diff --git a/core/admin.py b/core/admin.py index 8f5f69ea..8a1c0326 100644 --- a/core/admin.py +++ b/core/admin.py @@ -410,6 +410,7 @@ class ProductAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: "sku", ) readonly_fields = ( + "sku", "slug", "uuid", "modified", diff --git a/core/serializers/detail.py b/core/serializers/detail.py index 51a15e17..f9c9ef90 100644 --- a/core/serializers/detail.py +++ b/core/serializers/detail.py @@ -3,7 +3,6 @@ from collections import defaultdict from contextlib import suppress from typing import Collection, Any -from django.contrib.auth.models import AnonymousUser from django.core.cache import cache from django.db.models.functions import Length from rest_framework.fields import JSONField, SerializerMethodField diff --git a/core/vendors/__init__.py b/core/vendors/__init__.py index b4eeafbd..8bc2183c 100644 --- a/core/vendors/__init__.py +++ b/core/vendors/__init__.py @@ -1,5 +1,6 @@ import gzip import json +import traceback from contextlib import suppress from datetime import datetime from decimal import Decimal @@ -7,6 +8,7 @@ from io import BytesIO from math import ceil, log10 from typing import Any +from celery.utils.log import get_task_logger from constance import config from django.conf import settings from django.core.files.base import ContentFile @@ -28,6 +30,8 @@ from core.models import ( from payments.errors import RatesError from payments.utils import get_rates +async_logger = get_task_logger(__name__) + class NotEnoughBalanceError(Exception): """ @@ -416,9 +420,11 @@ class AbstractVendor: def process_attribute(self, key: str, value: Any, product: Product, attr_group: AttributeGroup) -> None: if not value: + async_logger.warning(f"No value for attribute {key!r} at {product.name!r}...") return if not attr_group: + async_logger.warning(f"No group for attribute {key!r} at {product.name!r}...") return if key in self.blocked_attributes: @@ -444,6 +450,8 @@ class AbstractVendor: attribute.value_type = attr_value_type attribute.save() except IntegrityError: + async_logger.warning(f"IntegrityError while processing attribute {key!r}...") + async_logger.warning(traceback.format_exc()) return attribute.save()