From dd219d4752c07df53f3811b283ade4430bca81bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=B3=D0=BE=D1=80=D1=8C=20=D0=9D=D0=B0=D0=B4=D0=B5?= =?UTF-8?q?=D0=B8=D0=BD?= Date: Mon, 29 Dec 2025 12:31:37 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20view=20request=5Fdetail?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Добавлены comments в контекст - Добавлен prefetch recipients и cc_users в DETAIL_REQUEST_QS - Теперь все данные передаются правильно --- backend/requests_app/views.py | 7 +- .../requests_app/request_detail.html | 60 ++- .../requests_app/request_detail.html.backup | 450 ++++++++++++++++++ 3 files changed, 498 insertions(+), 19 deletions(-) create mode 100644 backend/templates/requests_app/request_detail.html.backup diff --git a/backend/requests_app/views.py b/backend/requests_app/views.py index 837481e3..3a0a7c00 100644 --- a/backend/requests_app/views.py +++ b/backend/requests_app/views.py @@ -128,7 +128,11 @@ COMMENTS_PREFETCH = Prefetch( ) BASE_REQUEST_QS = Request.objects.select_related("employee", "approver", "department") -DETAIL_REQUEST_QS = BASE_REQUEST_QS.prefetch_related(COMMENTS_PREFETCH) +DETAIL_REQUEST_QS = BASE_REQUEST_QS.prefetch_related( + COMMENTS_PREFETCH, + "recipients", + "cc_users" +) # ---------- Права ---------- @@ -288,6 +292,7 @@ def request_detail(request, pk): return render(request, "requests_app/request_detail.html", { "request_obj": req, + "comments": req.comments.all(), "can_process": user_can_process }) diff --git a/backend/templates/requests_app/request_detail.html b/backend/templates/requests_app/request_detail.html index 120a8724..6ea679bf 100644 --- a/backend/templates/requests_app/request_detail.html +++ b/backend/templates/requests_app/request_detail.html @@ -31,8 +31,8 @@
- {% if request.employee.avatar %} - Аватар + {% if request_obj.employee.avatar %} + Аватар {% else %} {% endif %} @@ -40,9 +40,15 @@
- - {{ request_obj.employee.full_name|default:request_obj.employee.display_name }} - + {% if request_obj.employee and request_obj.employee.id %} + + {{ request_obj.employee.full_name|default:request_obj.employee.display_name }} + + {% else %} + + {{ request_obj.employee.full_name|default:request_obj.employee.display_name }} + + {% endif %} {# статус — бейдж #} {% if request_obj.status == 'pending' %} @@ -116,10 +122,16 @@
{% for recipient in request_obj.recipients.all %} - - {{ recipient.full_name|default:recipient.display_name }} - + {% if recipient.id %} + + {{ recipient.full_name|default:recipient.display_name }} + + {% else %} + + {{ recipient.full_name|default:recipient.display_name }} + + {% endif %} {% endfor %}
@@ -133,10 +145,16 @@
{% for cc_user in request_obj.cc_users.all %} - - {{ cc_user.full_name|default:cc_user.display_name }} - + {% if cc_user.id %} + + {{ cc_user.full_name|default:cc_user.display_name }} + + {% else %} + + {{ cc_user.full_name|default:cc_user.display_name }} + + {% endif %} {% endfor %}
@@ -148,10 +166,16 @@ Согласовал: - - {{ request_obj.approver.full_name|default:request_obj.approver.display_name }} - + {% if request_obj.approver.id %} + + {{ request_obj.approver.full_name|default:request_obj.approver.display_name }} + + {% else %} + + {{ request_obj.approver.full_name|default:request_obj.approver.display_name }} + + {% endif %} {% if request_obj.decided_at %} {{ request_obj.decided_at|date:"d.m.Y H:i" }} @@ -216,7 +240,7 @@ {% endif %} {# Форма добавления комментария #} -
+ {% csrf_token %}
diff --git a/backend/templates/requests_app/request_detail.html.backup b/backend/templates/requests_app/request_detail.html.backup new file mode 100644 index 00000000..6ea679bf --- /dev/null +++ b/backend/templates/requests_app/request_detail.html.backup @@ -0,0 +1,450 @@ +{% extends "base.html" %} +{% load static %} + +{% block title %}Заявление #{{ request.id }}{% endblock %} + +{% block extra_css %} + + +{% endblock %} + +{% block content %} + +
+
+
+ + {% if error %} +
+
+ +
{{ error }}
+

Код ошибки: {{ error_code }}

+ + Вернуться к списку + +
+
+ {% else %} + + {# ===== Основная информация о заявлении ===== #} +
+
+
+ {% if request_obj.employee.avatar %} + Аватар + {% else %} + + {% endif %} +
+ +
+
+ {% if request_obj.employee and request_obj.employee.id %} + + {{ request_obj.employee.full_name|default:request_obj.employee.display_name }} + + {% else %} + + {{ request_obj.employee.full_name|default:request_obj.employee.display_name }} + + {% endif %} + + {# статус — бейдж #} + {% if request_obj.status == 'pending' %} + На рассмотрении + {% elif request_obj.status == 'approved' %} + Одобрено + {% elif request_obj.status == 'rejected' %} + Отклонено + {% elif request_obj.status == 'cancelled' %} + Отменено + {% elif request_obj.status == 'draft' %} + Черновик + {% else %} + Неизвестно + {% endif %} + + {# тип заявления #} + + {{ request_obj.get_type_display }} + +
+ +
+ + {% if request_obj.date_from or request_obj.date_to %} + · Период: {{ request_obj.date_from|date:'d.m.Y' }}{% if request_obj.date_to %} — {{ request_obj.date_to|date:'d.m.Y' }}{% endif %} + {% endif %} +
+
+ + {# Кнопки действий #} + {% if can_process and request_obj.status == 'pending' %} +
+ + +
+ {% endif %} + +
+ +
+ {# Тема заявления #} + {% if request_obj.title %} +
+ Тема: +
{{ request_obj.title }}
+
+ {% endif %} + + {# Комментарий сотрудника #} +
+ Комментарий: +
{{ request_obj.comment|default:"—"|linebreaksbr }}
+
+ + {# Получатели #} + {% if request_obj.recipients.exists %} +
+ + Получатели: + +
+ {% for recipient in request_obj.recipients.all %} + {% if recipient.id %} + + {{ recipient.full_name|default:recipient.display_name }} + + {% else %} + + {{ recipient.full_name|default:recipient.display_name }} + + {% endif %} + {% endfor %} +
+
+ {% endif %} + + {# Копия #} + {% if request_obj.cc_users.exists %} +
+ + В копии: + +
+ {% for cc_user in request_obj.cc_users.all %} + {% if cc_user.id %} + + {{ cc_user.full_name|default:cc_user.display_name }} + + {% else %} + + {{ cc_user.full_name|default:cc_user.display_name }} + + {% endif %} + {% endfor %} +
+
+ {% endif %} + + {# Согласующий #} + {% if request_obj.approver %} +
+ + Согласовал: + + {% if request_obj.approver.id %} + + {{ request_obj.approver.full_name|default:request_obj.approver.display_name }} + + {% else %} + + {{ request_obj.approver.full_name|default:request_obj.approver.display_name }} + + {% endif %} + {% if request_obj.decided_at %} + + {{ request_obj.decided_at|date:"d.m.Y H:i" }} + + {% endif %} +
+ {% endif %} + + {# Вложение #} + {% if request_obj.attachment_url %} + + {% endif %} +
+
+ + {# ===== Комментарии ===== #} +
+
+
+ +
+
+
Комментарии
+
Всего: {{ comments|length }}
+
+
+ +
+ {% if comments %} +
+ {% for c in comments %} +
+
+
+ {{ c.author.full_name|default:c.author.display_name }} + · + +
+ + {# удалить — только автору комментария #} + {% if c.author.id == request.user.id %} + + {% csrf_token %} + + + {% endif %} +
+
{{ c.text|linebreaksbr }}
+
+ {% endfor %} +
+ {% else %} +
Комментариев пока нет.
+ {% endif %} + + {# Форма добавления комментария #} +
+ {% csrf_token %} +
+ + + + + + +
+
+
+
+ + {% endif %} +
+
+
+ +{% endblock %} + +{% block extra_js %} + +{% endblock %} + +{# Модальные окна для действий #} + + + + +