Реализовано преобразование временных комплектов в постоянные
Views (products/views/productkit_views.py): - ProductKitMakePermanentView: view для преобразования временного комплекта * Доступен только для временных комплектов (is_temporary=True) * Позволяет отредактировать название, описание, категории, теги, цену * Вызывает метод make_permanent() модели * Перенаправляет на детальную страницу комплекта после успеха URLs (products/urls.py): - /products/kits/<pk>/make-permanent/ - страница преобразования Templates: - productkit_make_permanent.html: форма преобразования с составом и ценой - order_detail.html: добавлена кнопка "Сделать постоянным" для временных комплектов Теперь флорист может: 1. Увидеть временный комплект в заказе с badge "Временный" 2. Нажать "Сделать постоянным" 3. Отредактировать название, добавить категории 4. Сохранить - комплект появится в каталоге 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -304,3 +304,40 @@ class ProductKitDeleteView(LoginRequiredMixin, PermissionRequiredMixin, DeleteVi
|
||||
def get_success_url(self):
|
||||
messages.success(self.request, f'Комплект "{self.object.name}" успешно удален!')
|
||||
return reverse_lazy('products:productkit-list')
|
||||
|
||||
|
||||
class ProductKitMakePermanentView(LoginRequiredMixin, PermissionRequiredMixin, UpdateView):
|
||||
"""
|
||||
View для преобразования временного комплекта в постоянный.
|
||||
Позволяет отредактировать название, добавить категории, теги перед сохранением.
|
||||
"""
|
||||
model = ProductKit
|
||||
template_name = 'products/productkit_make_permanent.html'
|
||||
context_object_name = 'kit'
|
||||
permission_required = 'products.change_productkit'
|
||||
fields = ['name', 'description', 'categories', 'tags', 'sale_price']
|
||||
|
||||
def get_queryset(self):
|
||||
# Только временные комплекты можно преобразовать
|
||||
return super().get_queryset().filter(is_temporary=True)
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
context['kit_items'] = self.object.kit_items.all().select_related('product', 'variant_group')
|
||||
context['productkit_photos'] = self.object.photos.all().order_by('order', 'created_at')
|
||||
return context
|
||||
|
||||
def form_valid(self, form):
|
||||
# Преобразуем в постоянный
|
||||
if self.object.make_permanent():
|
||||
messages.success(
|
||||
self.request,
|
||||
f'Комплект "{self.object.name}" преобразован в постоянный и теперь доступен в каталоге!'
|
||||
)
|
||||
else:
|
||||
messages.warning(self.request, f'Комплект "{self.object.name}" уже является постоянным.')
|
||||
|
||||
return super().form_valid(form)
|
||||
|
||||
def get_success_url(self):
|
||||
return reverse_lazy('products:productkit-detail', kwargs={'pk': self.object.pk})
|
||||
|
||||
Reference in New Issue
Block a user