# -*- coding: utf-8 -*- """ Transfer (Перемещение товара между складами) views GROUP 2: MEDIUM PRIORITY """ from django.views.generic import ListView, CreateView, UpdateView, DeleteView from django.urls import reverse_lazy from django.contrib.auth.mixins import LoginRequiredMixin from django.contrib import messages from ..models import Transfer from ..forms import TransferForm class TransferListView(LoginRequiredMixin, ListView): model = Transfer template_name = 'inventory/transfer/transfer_list.html' context_object_name = 'transfers' paginate_by = 20 def get_queryset(self): return Transfer.objects.select_related( 'batch', 'batch__product', 'from_warehouse', 'to_warehouse' ).order_by('-date') class TransferCreateView(LoginRequiredMixin, CreateView): model = Transfer form_class = TransferForm template_name = 'inventory/transfer/transfer_form.html' success_url = reverse_lazy('inventory:transfer-list') def form_valid(self, form): messages.success( self.request, f'Перемещение товара "{form.instance.batch.product.name}" успешно зарегистрировано.' ) return super().form_valid(form) class TransferUpdateView(LoginRequiredMixin, UpdateView): model = Transfer form_class = TransferForm template_name = 'inventory/transfer/transfer_form.html' success_url = reverse_lazy('inventory:transfer-list') def form_valid(self, form): messages.success(self.request, f'Перемещение товара обновлено.') return super().form_valid(form) class TransferDeleteView(LoginRequiredMixin, DeleteView): model = Transfer template_name = 'inventory/transfer/transfer_confirm_delete.html' success_url = reverse_lazy('inventory:transfer-list') def form_valid(self, form): transfer = self.get_object() messages.success(self.request, f'Перемещение товара отменено.') return super().form_valid(form)