Fix: общая сумма над таблицей; автор подставляется всегда (профиль или ФИО/логин)
Made-with: Cursor
This commit is contained in:
@@ -8,6 +8,7 @@ from django.contrib import messages
|
||||
from django.http import HttpResponseRedirect
|
||||
|
||||
from users.utils import get_author_employee
|
||||
from references.models import Employee
|
||||
from .models import (
|
||||
CustomerOrder,
|
||||
SupplierOrder,
|
||||
@@ -32,14 +33,28 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def set_author(form, request):
|
||||
"""Подставить автора из профиля пользователя при создании документа."""
|
||||
"""Подставить автора при создании документа: из профиля пользователя (UserProfile.employee) или сотрудник по имени пользователя."""
|
||||
if form.instance.pk:
|
||||
return # при редактировании автора не меняем
|
||||
author = get_author_employee(request.user)
|
||||
author = _get_author_for_request(request)
|
||||
if author:
|
||||
form.instance.author = author
|
||||
|
||||
|
||||
def _get_author_for_request(request):
|
||||
"""Сотрудник-автор: из профиля пользователя или по ФИО/логину."""
|
||||
if not request.user.is_authenticated:
|
||||
return None
|
||||
author = get_author_employee(request.user)
|
||||
if author:
|
||||
return author
|
||||
name = (request.user.get_full_name() or "").strip() or request.user.username
|
||||
author = Employee.objects.filter(name=name).first()
|
||||
if not author:
|
||||
author = Employee.objects.create(name=name)
|
||||
return author
|
||||
|
||||
|
||||
# --- Заказы клиентов ---
|
||||
class CustomerOrderList(LoginRequiredMixin, ListView):
|
||||
model = CustomerOrder
|
||||
@@ -56,7 +71,7 @@ class CustomerOrderCreate(LoginRequiredMixin, CreateView):
|
||||
ctx = super().get_context_data(**kwargs)
|
||||
ctx["formset"] = CustomerOrderItemFormSet(instance=self.object) if self.object and self.object.pk else CustomerOrderItemFormSet()
|
||||
ctx["title"] = "Заказ клиента"
|
||||
ctx["author_display"] = get_author_employee(self.request.user) if not self.object or not self.object.pk else self.object.author
|
||||
ctx["author_display"] = _get_author_for_request(self.request) if not self.object or not self.object.pk else self.object.author
|
||||
return ctx
|
||||
|
||||
def form_valid(self, form):
|
||||
@@ -138,7 +153,7 @@ class SupplierOrderCreate(LoginRequiredMixin, CreateView):
|
||||
ctx = super().get_context_data(**kwargs)
|
||||
ctx["formset"] = SupplierOrderItemFormSet(instance=self.object) if self.object and self.object.pk else SupplierOrderItemFormSet()
|
||||
ctx["title"] = "Заказ поставщику"
|
||||
ctx["author_display"] = get_author_employee(self.request.user) if not self.object or not self.object.pk else self.object.author
|
||||
ctx["author_display"] = _get_author_for_request(self.request) if not self.object or not self.object.pk else self.object.author
|
||||
return ctx
|
||||
|
||||
def form_valid(self, form):
|
||||
|
||||
Reference in New Issue
Block a user