0bdb42401a353a7c1d19f96c3b1e2508cf872eca
Реализована трёхуровневая защита от IntegrityError при создании товаров с одинаковым названием: 1. SlugService улучшен: - Добавлен метод _get_base_queryset() для работы с мягким удалением - Проверка всех объектов включая удалённые (all_objects) - Новый метод get_next_available_slug() для retry обработки - Максимум 100 попыток поиска уникального slug 2. BaseProductEntity.save() защищена: - transaction.atomic() для атомарности операции - Retry логика с 5 попытками при IntegrityError - При конфликте добавляется суффикс (-1, -2, -3...) - Fallback на timestamp если суффиксы исчерпаны 3. Views обрабатывают IntegrityError: - ProductCreateView.form_valid() перехватывает ошибку - ProductUpdateView.form_valid() перехватывает ошибку - Пользователю показывается дружелюбное сообщение об ошибке - Нет 500 ошибок - вместо этого form_invalid() с сообщением Эффект: - До: User создаёт товар "Роза красная" 2 раза → IntegrityError → 500 ошибка - После: User создаёт товар "Роза красная" 2 раза → slug автоматически становится "roza-krasnaya-1" Протестировано на Django shell и синтаксис проверен. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Description
No description provided
Languages
Python
57%
HTML
32%
JavaScript
9.5%
CSS
1.1%
Shell
0.4%