diff --git a/myproject/pos/views.py b/myproject/pos/views.py index 0450634..1f4f622 100644 --- a/myproject/pos/views.py +++ b/myproject/pos/views.py @@ -1468,26 +1468,10 @@ def pos_checkout(request): # Продаём экземпляры через ShowcaseManager if showcase_item_ids: - # Логируем для отладки - logger.info(f'POS Checkout: попытка продать showcase_item_ids={showcase_item_ids}') - - # Проверяем что все экземпляры заблокированы на текущего пользователя + # ShowcaseManager.sell_showcase_items выполнит всю валидацию с блокировкой БД showcase_items = list(ShowcaseItem.objects.filter( - id__in=showcase_item_ids, - status='in_cart', - locked_by_user=request.user + id__in=showcase_item_ids )) - - logger.info(f'POS Checkout: найдено {len(showcase_items)} заблокированных экземпляров из {len(showcase_item_ids)} запрошенных') - - if len(showcase_items) != len(showcase_item_ids): - # Не все экземпляры доступны - missing_ids = set(showcase_item_ids) - set(item.id for item in showcase_items) - logger.warning(f'POS Checkout: недоступные showcase_item_ids={missing_ids}') - raise ValidationError( - f'Некоторые экземпляры букета уже не заблокированы на вас. ' - f'Обновите страницу и попробуйте снова.' - ) if showcase_items: result = ShowcaseManager.sell_showcase_items(showcase_items, order_item) @@ -1532,10 +1516,8 @@ def pos_checkout(request): }) except (Customer.DoesNotExist, Warehouse.DoesNotExist, Product.DoesNotExist, ProductKit.DoesNotExist) as e: - logger.error(f'POS Checkout: объект не найден: {str(e)}') return JsonResponse({'success': False, 'error': 'Объект не найден'}, status=404) except ValidationError as e: - logger.error(f'POS Checkout: ошибка валидации: {str(e)}', exc_info=True) return JsonResponse({'success': False, 'error': str(e)}, status=400) except json.JSONDecodeError: return JsonResponse({'success': False, 'error': 'Неверный формат JSON'}, status=400)