From 9e0e5fa01a18324376533a7f89ae144b8588d57d 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: Fri, 5 Dec 2025 14:25:55 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20=D0=B8=D1=81=D0=BF=D0=BE=D0=BB=D1=8C?= =?UTF-8?q?=D0=B7=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=B0=D0=B1=D1=81?= =?UTF-8?q?=D0=BE=D0=BB=D1=8E=D1=82=D0=BD=D1=8B=D1=85=20URL=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20=D0=B2=D0=BB=D0=BE=D0=B6=D0=B5=D0=BD=D0=B8=D0=B9=20?= =?UTF-8?q?=D0=B2=20=D0=B7=D0=B0=D1=8F=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F?= =?UTF-8?q?=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Добавлен templatetag absolute_url для преобразования относительных путей - Обновлены все шаблоны заявлений: request_list_full, request_detail, request_process - Теперь все ссылки на вложения используют {% absolute_url %} для полных URL - Добавлен use_url=True для attachment_url в сериализаторе API - Исправлена проблема с локальными URL вместо доменных --- backend/api/v1/requests_app/serializers.py | 2 +- backend/requests_app/templatetags/req_tags.py | 27 +++++++++++++++++++ .../requests_app/request_detail.html | 2 +- .../requests_app/request_list_full.html | 2 +- .../requests_app/request_process.html | 2 +- 5 files changed, 31 insertions(+), 4 deletions(-) diff --git a/backend/api/v1/requests_app/serializers.py b/backend/api/v1/requests_app/serializers.py index 7496ae4f..f1ca899a 100644 --- a/backend/api/v1/requests_app/serializers.py +++ b/backend/api/v1/requests_app/serializers.py @@ -74,7 +74,7 @@ class RequestReadSerializer(serializers.ModelSerializer): is_final = serializers.BooleanField(read_only=True) # URL для вложенного файла (аналогично file_url в DocumentReadSerializer) - attachment_url = serializers.FileField(source="attachment", read_only=True) + attachment_url = serializers.FileField(source="attachment", read_only=True, use_url=True) # Новые поля для получателей departments = serializers.PrimaryKeyRelatedField( diff --git a/backend/requests_app/templatetags/req_tags.py b/backend/requests_app/templatetags/req_tags.py index f03ba856..609075d5 100644 --- a/backend/requests_app/templatetags/req_tags.py +++ b/backend/requests_app/templatetags/req_tags.py @@ -4,6 +4,33 @@ from datetime import datetime register = template.Library() +@register.simple_tag(takes_context=True) +def absolute_url(context, relative_url): + """ + Преобразует относительный URL в абсолютный с доменом. + + Args: + context: контекст шаблона (автоматически передаётся) + relative_url: относительный путь (например, /media/file.pdf) + + Returns: + Полный URL с доменом (например, https://domain.com/media/file.pdf) + """ + if not relative_url: + return "" + + # Если уже абсолютный URL - возвращаем как есть + if relative_url.startswith(('http://', 'https://')): + return relative_url + + request = context.get('request') + if request: + return request.build_absolute_uri(relative_url) + + # Fallback - возвращаем относительный URL + return relative_url + + @register.filter def in_list(value, csv): items = [s.strip() for s in str(csv).split(",") if s.strip()] diff --git a/backend/templates/requests_app/request_detail.html b/backend/templates/requests_app/request_detail.html index 4b82cc93..325acfcb 100644 --- a/backend/templates/requests_app/request_detail.html +++ b/backend/templates/requests_app/request_detail.html @@ -80,7 +80,7 @@ {% if request_obj.attachment %} + href="{% absolute_url request_obj.attachment.url %}" target="_blank" rel="noopener"> Вложение {% endif %} diff --git a/backend/templates/requests_app/request_list_full.html b/backend/templates/requests_app/request_list_full.html index e02d4201..6f7c22e5 100644 --- a/backend/templates/requests_app/request_list_full.html +++ b/backend/templates/requests_app/request_list_full.html @@ -204,7 +204,7 @@ Скрыть {% if obj.attachment %} - + Вложение {% endif %} diff --git a/backend/templates/requests_app/request_process.html b/backend/templates/requests_app/request_process.html index 22d4e4ff..17c75f9d 100644 --- a/backend/templates/requests_app/request_process.html +++ b/backend/templates/requests_app/request_process.html @@ -86,7 +86,7 @@ {# Вложение сотрудника (если есть) #} {% if request_obj.attachment %} Вложение сотрудника