Объединение списков товаров и комплектов в единый интерфейс

- Создан единый шаблон products_list.html для отображения товаров и комплектов
- Удалены дублирующиеся шаблоны (product_list, productkit_list, products_unified_list, all_products_list)
- Добавлены фильтры: тип (все/товары/комплекты), категория, статус, наличие, теги
- Обновлен CombinedProductListView с поддержкой фильтрации по типу и тегам
- Изменены URL маршруты: главная страница /products/ теперь показывает объединенный список
- Обновлены success_url во всех CRUD представлениях для редиректа на объединенный список
- Добавлена фильтрация по тегам с отображением количества выбранных элементов
- Улучшена UX: компактный select для тегов с счетчиком выбранных
- Все комментарии в коде переведены на русский язык
This commit is contained in:
2025-11-15 22:48:34 +03:00
parent 9363527e50
commit b8185f2f6c
8 changed files with 409 additions and 768 deletions

View File

@@ -214,7 +214,7 @@ class ProductKitCreateView(LoginRequiredMixin, PermissionRequiredMixin, CreateVi
f'Комплект "{self.object.name}" успешно создан!'
)
return redirect('products:productkit-list')
return redirect('products:products-list')
except IntegrityError as e:
# Обработка нарушения уникальности в БД
error_msg = str(e).lower()
@@ -416,7 +416,7 @@ class ProductKitUpdateView(LoginRequiredMixin, PermissionRequiredMixin, UpdateVi
if self.request.POST.get('action') == 'continue':
return redirect('products:productkit-update', pk=self.object.pk)
else:
return redirect('products:productkit-list')
return redirect('products:products-list')
except IntegrityError as e:
# Обработка нарушения уникальности в БД
error_msg = str(e).lower()
@@ -450,7 +450,7 @@ class ProductKitUpdateView(LoginRequiredMixin, PermissionRequiredMixin, UpdateVi
return self.render_to_response(context)
def get_success_url(self):
return reverse_lazy('products:productkit-list')
return reverse_lazy('products:products-list')
class ProductKitDetailView(LoginRequiredMixin, PermissionRequiredMixin, DetailView):