From cdfbb26875398df74b689590c581d262b9cecf6b Mon Sep 17 00:00:00 2001 From: Anton Date: Wed, 29 Apr 2026 12:11:16 +0300 Subject: [PATCH] fix: avoid Jinja dict method collisions in admin templates --- README.md | 2 +- app/services/admin_data.py | 4 ++-- app/templates/directory.html | 2 +- app/templates/employee_detail.html | 4 ++-- app/version.py | 6 +++--- tests/test_admin_data.py | 2 +- tests/test_api_mcp.py | 2 +- tests/test_employee_detail_template.py | 2 ++ 8 files changed, 13 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index b8b3bc5..895e1a3 100644 --- a/README.md +++ b/README.md @@ -110,4 +110,4 @@ docker compose exec postgres pg_dump -U miem miem_workers > backup.sql docker compose down ``` -Версия сервиса: `0.2.4`. Админка всегда показывает версии backend и frontend в footer. +Версия сервиса: `0.2.5`. Админка всегда показывает версии backend и frontend в footer. diff --git a/app/services/admin_data.py b/app/services/admin_data.py index 762533c..7f7b5ba 100644 --- a/app/services/admin_data.py +++ b/app/services/admin_data.py @@ -121,7 +121,7 @@ def list_employees_page( order = desc(sort_column) if direction == "desc" else sort_column employees = db.scalars(base_stmt.order_by(order).limit(limit).offset(offset)).all() return { - "items": [employee_display_payload(employee) for employee in employees], + "employees": [employee_display_payload(employee) for employee in employees], "total": total, "limit": limit, "offset": offset, @@ -243,7 +243,7 @@ def _normalize_section(section: Any) -> dict[str, Any]: "type": section_type, "raw_text": raw_text, "paragraphs": paragraphs, - "items": items, + "list_items": items, "links": _normalize_links(section.get("links")), "year_entries": _normalize_year_entries(section.get("year_entries")), "publications": _normalize_publications(section.get("publications")), diff --git a/app/templates/directory.html b/app/templates/directory.html index c0be7fc..43f2a64 100644 --- a/app/templates/directory.html +++ b/app/templates/directory.html @@ -56,7 +56,7 @@ - {% for employee in page.items %} + {% for employee in page.employees %} {{ employee.full_name or "No name" }} {{ employee.status }} diff --git a/app/templates/employee_detail.html b/app/templates/employee_detail.html index f00f289..4aa196b 100644 --- a/app/templates/employee_detail.html +++ b/app/templates/employee_detail.html @@ -162,9 +162,9 @@

{{ paragraph }}

{% endfor %} {% endif %} - {% if section.items %} + {% if section.list_items %} diff --git a/app/version.py b/app/version.py index 5aca819..0cb62dc 100644 --- a/app/version.py +++ b/app/version.py @@ -1,3 +1,3 @@ -APP_VERSION = "0.2.4" -FRONTEND_VERSION = "0.2.4" -BACKEND_VERSION = "0.2.4" +APP_VERSION = "0.2.5" +FRONTEND_VERSION = "0.2.5" +BACKEND_VERSION = "0.2.5" diff --git a/tests/test_admin_data.py b/tests/test_admin_data.py index 03d8823..ab41c95 100644 --- a/tests/test_admin_data.py +++ b/tests/test_admin_data.py @@ -143,7 +143,7 @@ def test_list_employees_page_filters_sorts_and_paginates(db_session): page = list_employees_page(db_session, status="active", sort="full_name", direction="asc", limit=10) assert page["total"] == 1 - assert page["items"][0]["full_name"] == "Alpha" + assert page["employees"][0]["full_name"] == "Alpha" def test_stats_payload_uses_latest_run_new_count(db_session): diff --git a/tests/test_api_mcp.py b/tests/test_api_mcp.py index 8a9c05a..c885787 100644 --- a/tests/test_api_mcp.py +++ b/tests/test_api_mcp.py @@ -18,7 +18,7 @@ def test_health_returns_versions(): response = client.get("/api/health") assert response.status_code == 200 - assert response.json()["backend_version"] == "0.2.4" + assert response.json()["backend_version"] == "0.2.5" def test_mcp_requires_token_and_lists_tools(): diff --git a/tests/test_employee_detail_template.py b/tests/test_employee_detail_template.py index 192ac4f..55ee65e 100644 --- a/tests/test_employee_detail_template.py +++ b/tests/test_employee_detail_template.py @@ -9,6 +9,8 @@ def test_employee_detail_template_is_human_readable(): assert ">Tabs<" not in template assert "contacts.items" not in template assert "contacts.contact_items" in template + assert "section.items" not in template + assert "section.list_items" in template assert "Основная информация" in template assert "Контакты" in template assert "Разделы профиля" in template