Docs: начальная структура проекта
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
131
app/references/views.py
Normal file
131
app/references/views.py
Normal file
@@ -0,0 +1,131 @@
|
||||
"""
|
||||
CRUD для справочников (списки и формы).
|
||||
"""
|
||||
import logging
|
||||
from django.views.generic import ListView, CreateView, UpdateView, DeleteView
|
||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||
from django.urls import reverse_lazy
|
||||
from django.contrib import messages
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from .models import (
|
||||
Currency,
|
||||
OrderKind,
|
||||
Client,
|
||||
Organization,
|
||||
Supplier,
|
||||
Employee,
|
||||
CashAccount,
|
||||
Product,
|
||||
)
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def _ref_view(model_class, list_url_name, create_url_name, update_url_name, delete_url_name, list_title, form_title):
|
||||
"""Фабрика представлений для одного справочника."""
|
||||
class List(LoginRequiredMixin, ListView):
|
||||
model = model_class
|
||||
template_name = "references/reference_list.html"
|
||||
context_object_name = "items"
|
||||
extra_context = {
|
||||
"title": list_title,
|
||||
"create_url_name": create_url_name,
|
||||
"update_url_name": update_url_name,
|
||||
"delete_url_name": delete_url_name,
|
||||
}
|
||||
|
||||
class Create(LoginRequiredMixin, CreateView):
|
||||
model = model_class
|
||||
fields = "__all__"
|
||||
template_name = "references/reference_form.html"
|
||||
success_url = reverse_lazy(list_url_name)
|
||||
extra_context = {"title": form_title, "cancel_url": reverse_lazy(list_url_name)}
|
||||
|
||||
def form_valid(self, form):
|
||||
messages.success(self.request, _("Запись создана."))
|
||||
logger.info("Справочник %s: создана запись %s", model_class.__name__, form.instance)
|
||||
return super().form_valid(form)
|
||||
|
||||
class Update(LoginRequiredMixin, UpdateView):
|
||||
model = model_class
|
||||
fields = "__all__"
|
||||
template_name = "references/reference_form.html"
|
||||
success_url = reverse_lazy(list_url_name)
|
||||
context_object_name = "object"
|
||||
extra_context = {"title": form_title, "cancel_url": reverse_lazy(list_url_name)}
|
||||
|
||||
def form_valid(self, form):
|
||||
messages.success(self.request, _("Запись сохранена."))
|
||||
logger.info("Справочник %s: обновлена запись %s", model_class.__name__, form.instance)
|
||||
return super().form_valid(form)
|
||||
|
||||
class Delete(LoginRequiredMixin, DeleteView):
|
||||
model = model_class
|
||||
template_name = "references/reference_confirm_delete.html"
|
||||
success_url = reverse_lazy(list_url_name)
|
||||
context_object_name = "object"
|
||||
extra_context = {"cancel_url": reverse_lazy(list_url_name)}
|
||||
|
||||
def form_valid(self, form):
|
||||
messages.success(self.request, _("Запись удалена."))
|
||||
logger.info("Справочник %s: удалена запись %s", model_class.__name__, self.object)
|
||||
return super().form_valid(form)
|
||||
|
||||
return List, Create, Update, Delete
|
||||
|
||||
# Валюты
|
||||
CurrencyList, CurrencyCreate, CurrencyUpdate, CurrencyDelete = _ref_view(
|
||||
Currency, "references:currency_list", "references:currency_create",
|
||||
"references:currency_update", "references:currency_delete",
|
||||
"Валюты", "Валюта",
|
||||
)
|
||||
|
||||
# Виды заказов
|
||||
OrderKindList, OrderKindCreate, OrderKindUpdate, OrderKindDelete = _ref_view(
|
||||
OrderKind, "references:orderkind_list", "references:orderkind_create",
|
||||
"references:orderkind_update", "references:orderkind_delete",
|
||||
"Виды заказов", "Вид заказа",
|
||||
)
|
||||
|
||||
# Клиенты
|
||||
ClientList, ClientCreate, ClientUpdate, ClientDelete = _ref_view(
|
||||
Client, "references:client_list", "references:client_create",
|
||||
"references:client_update", "references:client_delete",
|
||||
"Клиенты", "Клиент",
|
||||
)
|
||||
|
||||
# Организации
|
||||
OrganizationList, OrganizationCreate, OrganizationUpdate, OrganizationDelete = _ref_view(
|
||||
Organization, "references:organization_list", "references:organization_create",
|
||||
"references:organization_update", "references:organization_delete",
|
||||
"Организации", "Организация",
|
||||
)
|
||||
|
||||
# Поставщики
|
||||
SupplierList, SupplierCreate, SupplierUpdate, SupplierDelete = _ref_view(
|
||||
Supplier, "references:supplier_list", "references:supplier_create",
|
||||
"references:supplier_update", "references:supplier_delete",
|
||||
"Поставщики", "Поставщик",
|
||||
)
|
||||
|
||||
# Сотрудники
|
||||
EmployeeList, EmployeeCreate, EmployeeUpdate, EmployeeDelete = _ref_view(
|
||||
Employee, "references:employee_list", "references:employee_create",
|
||||
"references:employee_update", "references:employee_delete",
|
||||
"Сотрудники", "Сотрудник",
|
||||
)
|
||||
|
||||
# Счета денежных средств
|
||||
CashAccountList, CashAccountCreate, CashAccountUpdate, CashAccountDelete = _ref_view(
|
||||
CashAccount, "references:cashaccount_list", "references:cashaccount_create",
|
||||
"references:cashaccount_update", "references:cashaccount_delete",
|
||||
"Счета денежных средств", "Счёт денежных средств",
|
||||
)
|
||||
|
||||
# Товары
|
||||
ProductList, ProductCreate, ProductUpdate, ProductDelete = _ref_view(
|
||||
Product, "references:product_list", "references:product_create",
|
||||
"references:product_update", "references:product_delete",
|
||||
"Товары", "Товар",
|
||||
)
|
||||
Reference in New Issue
Block a user