From 5ba38f39f56c11cee45ae7c29b062ab9734cd6a4 Mon Sep 17 00:00:00 2001 From: Andrey Smakotin Date: Fri, 2 Jan 2026 23:18:44 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A3=D0=BF=D1=80=D0=BE=D1=89=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20base.py:=20=D1=83=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=BD=D0=B5=D0=B8=D1=81=D0=BF=D0=BE=D0=BB=D1=8C?= =?UTF-8?q?=D0=B7=D1=83=D0=B5=D0=BC=D0=BE=D0=B3=D0=BE=20=D0=BA=D0=BE=D0=B4?= =?UTF-8?q?=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Удалён импорт неиспользуемых менеджеров (ActiveManager, SoftDeleteManager, SoftDeleteQuerySet) - Удалён неиспользуемый active_objects manager - Заменены хаки __import__ на нормальные импорты (slugify, unidecode) - Перенесён IntegrityError в импорты модуля - Добавлен TODO для унификации системы soft delete 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- myproject/products/models/base.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/myproject/products/models/base.py b/myproject/products/models/base.py index 611a6d1..b4037bb 100644 --- a/myproject/products/models/base.py +++ b/myproject/products/models/base.py @@ -1,13 +1,18 @@ """ Базовые модели для products приложения. Содержит SKUCounter и BaseProductEntity (абстрактный базовый класс). + +TODO: Унификация системы soft delete + - Перевести ProductCategory с is_deleted на status (как в BaseProductEntity) + - Упростить managers.py, убрав поддержку старой системы is_deleted + - Унифицировать ProductTag (добавить status или оставить is_active) """ -from django.db import models, transaction +from django.db import models, transaction, IntegrityError from django.db.models import Q from django.utils import timezone from django.contrib.auth import get_user_model - -from .managers import ActiveManager, SoftDeleteManager, SoftDeleteQuerySet +from django.utils.text import slugify +from unidecode import unidecode # Получаем User модель один раз для использования в ForeignKey User = get_user_model() @@ -140,9 +145,8 @@ class BaseProductEntity(models.Model): verbose_name="Архивировано пользователем" ) - # Managers - objects = models.Manager() # Все товары - active_objects = models.Manager() # Будет переопределен ниже + # Manager + objects = models.Manager() class Meta: abstract = True @@ -204,13 +208,11 @@ class BaseProductEntity(models.Model): Автогенерация slug из name если не задан. Использует transaction.atomic() и retry логику для обработки race condition. """ - from django.db import transaction, IntegrityError from ..services.slug_service import SlugService # Генерируем базовый slug if not self.slug or self.slug.strip() == '': - transliterated_name = __import__('unidecode', fromlist=['unidecode']).unidecode(self.name) - base_slug = __import__('django.utils.text', fromlist=['slugify']).slugify(transliterated_name) + base_slug = slugify(unidecode(self.name)) else: base_slug = self.slug