Исправление ошибки 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

@@ -263,13 +263,25 @@ def pos_terminal(request):
if showcase_item_ids:
# Проверяем, что все указанные ShowcaseItem заблокированы на текущего пользователя
locked_items = ShowcaseItem.objects.filter(
id__in=showcase_item_ids,
product_kit=kit,
status='in_cart',
locked_by_user=request.user,
cart_lock_expires_at__gt=timezone.now()
)
from accounts.models import CustomUser
if isinstance(request.user, CustomUser):
locked_items = ShowcaseItem.objects.filter(
id__in=showcase_item_ids,
product_kit=kit,
status='in_cart',
locked_by_user=request.user,
cart_lock_expires_at__gt=timezone.now()
)
else:
# Для PlatformAdmin используем проверку по сессии
session_id = request.session.session_key or ''
locked_items = ShowcaseItem.objects.filter(
id__in=showcase_item_ids,
product_kit=kit,
status='in_cart',
cart_session_id=session_id,
cart_lock_expires_at__gt=timezone.now()
)
locked_count = locked_items.count()
@@ -655,11 +667,22 @@ def remove_showcase_kit_from_cart(request, kit_id):
showcase_item_ids = []
# Базовый фильтр - экземпляры этого комплекта, заблокированные текущим пользователем
qs = ShowcaseItem.objects.filter(
product_kit=kit,
status='in_cart',
locked_by_user=request.user
)
from accounts.models import CustomUser
if isinstance(request.user, CustomUser):
qs = ShowcaseItem.objects.filter(
product_kit=kit,
status='in_cart',
locked_by_user=request.user
)
else:
# Для PlatformAdmin используем проверку по сессии
session_id = request.session.session_key or ''
qs = ShowcaseItem.objects.filter(
product_kit=kit,
status='in_cart',
cart_session_id=session_id
)
# Если указаны конкретные ID - фильтруем только их
if showcase_item_ids:
@@ -710,10 +733,22 @@ def release_all_my_showcase_locks(request):
try:
# Снимаем ВСЕ блокировки текущего пользователя
updated_count = ShowcaseItem.objects.filter(
status='in_cart',
locked_by_user=request.user
).update(
from accounts.models import CustomUser
if isinstance(request.user, CustomUser):
qs_to_release = ShowcaseItem.objects.filter(
status='in_cart',
locked_by_user=request.user
)
else:
# Для PlatformAdmin фильтруем по сессии
session_id = request.session.session_key or ''
qs_to_release = ShowcaseItem.objects.filter(
status='in_cart',
cart_session_id=session_id
)
updated_count = qs_to_release.update(
status='available',
locked_by_user=None,
cart_lock_expires_at=None,