# -*- coding: utf-8 -*- from django.shortcuts import render 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 Warehouse from ..forms import WarehouseForm class WarehouseListView(LoginRequiredMixin, ListView): """ Список всех складов тенанта """ model = Warehouse template_name = 'inventory/warehouse/warehouse_list.html' context_object_name = 'warehouses' paginate_by = 20 def get_queryset(self): return Warehouse.objects.filter(is_active=True).order_by('name') class WarehouseCreateView(LoginRequiredMixin, CreateView): """ Создание нового склада """ model = Warehouse form_class = WarehouseForm template_name = 'inventory/warehouse/warehouse_form.html' success_url = reverse_lazy('inventory:warehouse-list') def form_valid(self, form): messages.success(self.request, f'Склад "{form.instance.name}" успешно создан.') return super().form_valid(form) class WarehouseUpdateView(LoginRequiredMixin, UpdateView): """ Редактирование склада """ model = Warehouse form_class = WarehouseForm template_name = 'inventory/warehouse/warehouse_form.html' success_url = reverse_lazy('inventory:warehouse-list') def form_valid(self, form): messages.success(self.request, f'Склад "{form.instance.name}" успешно обновлён.') return super().form_valid(form) class WarehouseDeleteView(LoginRequiredMixin, DeleteView): """ Удаление склада (мягкое удаление - деактивация) """ model = Warehouse template_name = 'inventory/warehouse/warehouse_confirm_delete.html' success_url = reverse_lazy('inventory:warehouse-list') def form_valid(self, form): # Мягкое удаление - просто деактивируем warehouse = self.get_object() warehouse.is_active = False warehouse.save() messages.success(self.request, f'Склад "{warehouse.name}" деактивирован.') return super().form_valid(form)