# -*- coding: utf-8 -*- """ Reservation (Резервирование товара) views - READ ONLY Резервы управляются только через POS и Orders """ from django.views.generic import ListView from django.contrib.auth.mixins import LoginRequiredMixin from ..models import Reservation from products.models import Product class ReservationListView(LoginRequiredMixin, ListView): """ Список резервирований (только для просмотра). Управление резервами происходит через POS (витринные комплекты) и Orders. """ model = Reservation template_name = 'inventory/reservation/reservation_list.html' context_object_name = 'reservations' paginate_by = 20 def get_queryset(self): """Показываем все резервы со статусом 'reserved', с опциональной фильтрацией по товару""" queryset = Reservation.objects.filter( status='reserved' ).select_related('product', 'warehouse', 'order_item', 'showcase', 'product_kit').order_by('-reserved_at') # Фильтрация по товару product_id = self.request.GET.get('product') if product_id: queryset = queryset.filter(product_id=product_id) return queryset def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) # Если фильтруем по товару, добавляем его в контекст product_id = self.request.GET.get('product') if product_id: try: context['filtered_product'] = Product.objects.get(pk=product_id) except Product.DoesNotExist: pass return context