# -*- coding: utf-8 -*- """ Reservation (Резервирование товара) views GROUP 2: MEDIUM PRIORITY """ from django.views.generic import ListView, CreateView, UpdateView from django.urls import reverse_lazy from django.contrib.auth.mixins import LoginRequiredMixin from django.contrib import messages from ..models import Reservation from ..forms import ReservationForm class ReservationListView(LoginRequiredMixin, ListView): model = Reservation template_name = 'inventory/reservation/reservation_list.html' context_object_name = 'reservations' paginate_by = 20 def get_queryset(self): return Reservation.objects.filter( status='reserved' ).select_related('product', 'warehouse', 'order_item').order_by('-reserved_at') class ReservationCreateView(LoginRequiredMixin, CreateView): model = Reservation form_class = ReservationForm template_name = 'inventory/reservation/reservation_form.html' success_url = reverse_lazy('inventory:reservation-list') def form_valid(self, form): form.instance.status = 'reserved' messages.success(self.request, f'Товар успешно зарезервирован.') return super().form_valid(form) class ReservationUpdateView(LoginRequiredMixin, UpdateView): model = Reservation fields = ['status'] template_name = 'inventory/reservation/reservation_update.html' success_url = reverse_lazy('inventory:reservation-list') def form_valid(self, form): messages.success(self.request, f'Статус резервирования обновлен.') return super().form_valid(form)