diff --git a/backend/requests_app/templatetags/req_tags.py b/backend/requests_app/templatetags/req_tags.py index a59562a4..f03ba856 100644 --- a/backend/requests_app/templatetags/req_tags.py +++ b/backend/requests_app/templatetags/req_tags.py @@ -1,8 +1,49 @@ from django import template +from datetime import datetime register = template.Library() + @register.filter def in_list(value, csv): items = [s.strip() for s in str(csv).split(",") if s.strip()] return value in items + + +@register.filter +def format_iso_date(value, format_string="d.m.Y"): + """ + Форматирует ISO дату из API в читаемый формат. + + Args: + value: строка ISO даты + (например, "2025-12-03" или "2025-12-03T10:30:00Z") + format_string: формат вывода ("d.m.Y", "H:i" и т.д.) + + Returns: + Отформатированная дата или исходная строка при ошибке + """ + if not value: + return "" + + try: + # Пробуем распарсить как полную ISO дату + if 'T' in str(value): + dt = datetime.fromisoformat(str(value).replace('Z', '+00:00')) + else: + # Только дата без времени + dt = datetime.strptime(str(value)[:10], '%Y-%m-%d') + + # Форматируем по шаблону Django + format_map = { + 'd.m.Y': dt.strftime('%d.%m.%Y'), + 'H:i': dt.strftime('%H:%M'), + 'd.m.Y H:i': dt.strftime('%d.%m.%Y %H:%M'), + 'Y-m-d': dt.strftime('%Y-%m-%d'), + } + + return format_map.get(format_string, dt.strftime('%d.%m.%Y')) + except (ValueError, AttributeError): + # Если не удалось распарсить, возвращаем первые 10 символов + return str(value)[:10] if value else "" + diff --git a/backend/templates/requests_app/request_list_full.html b/backend/templates/requests_app/request_list_full.html index f860592d..d5b6b53d 100644 --- a/backend/templates/requests_app/request_list_full.html +++ b/backend/templates/requests_app/request_list_full.html @@ -1,5 +1,6 @@ {% extends "base.html" %} {% load static %} +{% load req_tags %} {% block title %}Заявления{% endblock %} @@ -106,12 +107,12 @@
{% if obj.date_from or obj.date_to %} {% if obj.date_from %} - {{ obj.date_from|slice:":10" }}
+ {{ obj.date_from|format_iso_date:"d.m.Y" }}
{% else %} —
{% endif %} {% if obj.date_to %} - {{ obj.date_to|slice:":10" }} + {{ obj.date_to|format_iso_date:"d.m.Y" }} {% else %} — {% endif %} @@ -147,8 +148,8 @@
{% if obj.created_at %} - {{ obj.created_at|slice:":10" }}
- {{ obj.created_at|slice:"11:16" }} + {{ obj.created_at|format_iso_date:"d.m.Y" }}
+ {{ obj.created_at|format_iso_date:"H:i" }} {% else %} — {% endif %}