Добавлена автогенерация и валидация уникальности артикулов для всех типов товаров

- Добавлен миксин SKUUniqueMixin для единообразной валидации артикулов
- Валидация проверяет уникальность SKU среди Product, ProductKit, ProductCategory, ConfigurableProduct
- Реализована автогенерация артикулов для ConfigurableProduct (формат VAR-XXXXXX)
- Добавлен новый тип счетчика 'configurable' в SKUCounter
- Обновлены формы Product, ProductKit, ProductCategory, ConfigurableProduct
- Рефакторинг методов clean() в формах: валидация имени вынесена в clean_name()
- Добавлена функция generate_configurable_sku() в sku_generator.py
- Обновлена функция ensure_sku_unique() для проверки ConfigurableProduct
- Добавлен метод save() в модель ConfigurableProduct для автогенерации SKU
- Обновлен шаблон configurableproduct_form.html с отображением help_text для SKU

Код стал чистым, без дублирования логики валидации.
This commit is contained in:
2025-12-30 10:47:03 +03:00
parent a95bd56b2b
commit 577401447b
6 changed files with 135 additions and 30 deletions

View File

@@ -452,6 +452,16 @@ class ConfigurableProduct(BaseProductEntity):
def __str__(self):
return self.name
def save(self, *args, **kwargs):
"""При сохранении - генерируем артикул если не задан"""
# Генерация артикула для новых вариативных товаров
if not self.sku:
from ..utils.sku_generator import generate_configurable_sku
self.sku = generate_configurable_sku()
# Вызов родительского save (генерация slug и т.д.)
super().save(*args, **kwargs)
def delete(self, *args, **kwargs):
"""
Физическое удаление вариативного товара из БД.