Исправление ошибки POS: разрешено добавление в корзину для PlatformAdmin (использование session_id вместо пользователя). Включены изменения по AI названиям букетов.

This commit is contained in:
2026-01-22 20:29:05 +03:00
parent 01873be15d
commit 22e300394b
13 changed files with 739 additions and 20 deletions

View File

@@ -115,7 +115,14 @@ from .attribute_views import (
)
# API представления
from .api_views import search_products_and_variants, validate_kit_cost, create_temporary_kit_api, create_tag_api
from .api_views import (
search_products_and_variants,
validate_kit_cost,
create_temporary_kit_api,
create_tag_api,
RandomBouquetNamesView,
GenerateBouquetNamesView,
)
# Каталог
from .catalog_views import CatalogView
@@ -227,6 +234,8 @@ __all__ = [
'validate_kit_cost',
'create_temporary_kit_api',
'create_tag_api',
'RandomBouquetNamesView',
'GenerateBouquetNamesView',
# Каталог
'CatalogView',

View File

@@ -1800,3 +1800,46 @@ def bulk_update_categories(request):
'success': False,
'message': f'Произошла ошибка: {str(e)}'
}, status=500)
# ========== Генератор названий букетов ==========
from django.views import View
from ..models import BouquetName
from ..services import BouquetNameGenerator
class RandomBouquetNamesView(View):
"""Возвращает случайные названия из базы"""
def get(self, request):
count = int(request.GET.get('count', 3))
# Ограничиваем максимум до 100
count = min(count, 100)
names = list(BouquetName.objects.order_by('?')[:count].values_list('name', flat=True))
return JsonResponse({'names': names})
class GenerateBouquetNamesView(View):
"""Генерирует новые названия через LLM и сохраняет в базу"""
def post(self, request):
count = int(request.POST.get('count', 10))
# Ограничиваем максимум до 500
count = min(count, 500)
generator = BouquetNameGenerator()
success, msg, data = generator.generate_and_store(
count=count,
language='russian'
)
if success:
return JsonResponse({
'success': True,
'message': msg,
'count': len(data.get('names', []))
})
else:
return JsonResponse({'success': False, 'error': msg}, status=400)

View File

@@ -9,7 +9,7 @@ from django.shortcuts import redirect
from django.db import transaction, IntegrityError
from user_roles.mixins import ManagerOwnerRequiredMixin
from ..models import ProductKit, ProductCategory, ProductTag, ProductKitPhoto, Product, ProductVariantGroup
from ..models import ProductKit, ProductCategory, ProductTag, ProductKitPhoto, Product, ProductVariantGroup, BouquetName
from ..forms import ProductKitForm, KitItemFormSetCreate, KitItemFormSetUpdate
from .utils import handle_photos
@@ -197,6 +197,9 @@ class ProductKitCreateView(LoginRequiredMixin, ManagerOwnerRequiredMixin, Create
else:
context['kititem_formset'] = KitItemFormSetCreate(prefix='kititem')
# Количество названий букетов в базе
context['bouquet_names_count'] = BouquetName.objects.count()
return context
def form_valid(self, form):