# -*- coding: utf-8 -*- """ WriteOff (Списание товара) 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 WriteOff from ..forms import WriteOffForm from products.models import ProductCategory, ProductTag class WriteOffListView(LoginRequiredMixin, ListView): model = WriteOff template_name = 'inventory/writeoff/writeoff_list.html' context_object_name = 'writeoffs' paginate_by = 20 def get_queryset(self): return WriteOff.objects.select_related('batch', 'batch__product').order_by('-date') class WriteOffCreateView(LoginRequiredMixin, CreateView): model = WriteOff form_class = WriteOffForm template_name = 'inventory/writeoff/writeoff_form.html' success_url = reverse_lazy('inventory:writeoff-list') def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['categories'] = ProductCategory.objects.filter(is_active=True).order_by('name') context['tags'] = ProductTag.objects.filter(is_active=True).order_by('name') return context def form_valid(self, form): messages.success(self.request, f'Списание товара успешно создано.') return super().form_valid(form) class WriteOffUpdateView(LoginRequiredMixin, UpdateView): model = WriteOff form_class = WriteOffForm template_name = 'inventory/writeoff/writeoff_form.html' success_url = reverse_lazy('inventory:writeoff-list') def form_valid(self, form): messages.success(self.request, f'Списание товара обновлено.') return super().form_valid(form) class WriteOffDeleteView(LoginRequiredMixin, DeleteView): model = WriteOff template_name = 'inventory/writeoff/writeoff_confirm_delete.html' success_url = reverse_lazy('inventory:writeoff-list') def form_valid(self, form): writeoff = self.get_object() messages.success(self.request, f'Списание товара отменено.') return super().form_valid(form)