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 %}
Вложение сотрудника