feat(products): обеспечить уникальность единицы продажи по умолчанию и улучшить UI формы

Добавлено ограничение на уровне базы данных и валидация форм для обеспечения,
что у товара может быть только одна единица продажи с флагом "по умолчанию".
Переработан интерфейс маркетинговых флагов и единиц продажи для улучшения UX.

Основные изменения:
- Добавлен UniqueConstraint в модель ProductSalesUnit для валидации на уровне БД
- Создан BaseProductSalesUnitFormSet с кастомной валидацией формы
- Обновлен метод save() для корректной обработки новых и существующих записей
- Добавлена транзакционная обертка в представлениях ProductCreateView и ProductUpdateView
- Переработан блок маркетинговых флагов с карточным дизайном и интерактивными переключателями
- Переработан блок единиц продажи в табличный вид с улучшенным UX
- Добавлена клиентская логика для взаимного исключения чекбоксов "По умолчанию
This commit is contained in:
2026-01-27 22:37:00 +03:00
parent 0ee6391810
commit eb7569f983
6 changed files with 831 additions and 163 deletions

View File

@@ -0,0 +1,17 @@
# Generated by Django 5.0.10 on 2026-01-27 18:59
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('products', '0003_productkit_showcase_created_at'),
]
operations = [
migrations.AddConstraint(
model_name='productsalesunit',
constraint=models.UniqueConstraint(condition=models.Q(('is_default', True)), fields=('product',), name='unique_default_sales_unit_per_product', violation_error_message='У товара может быть только одна единица продажи по умолчанию'),
),
]