mirror of
https://gitverse.ru/kpa39l/vesti.git
synced 2026-09-29 18:05:03 +00:00
1.8 KiB
1.8 KiB
Why
Пользователь не может заапрувить новость: POST /posts/{id}/approve → 500 Internal Server Error. В логах веба (journalctl -u vesti-web):
File "/opt/vesti/web/app.py", line 180, in approve
dirs_selected = [r["direction"] for r in cls] if cls else [dirn]
UnboundLocalError: cannot access local variable 'dirn' where it is not associated with a value
Причина: на строке 180 используется переменная dirn (направление поста), но она
определяется позже (строка 185: dirn = post.get("direction") or "linux"). При approve
поста без явно выбранных направлений (пустая форма) всегда падает UnboundLocalError.
What Changes
- В
web/app.py(функцияapprove) перед строкой сdirs_selectedопределить:dirn = post.get("direction") or "linux"(иlang = post.get("lang") or "ru"— тоже используется ниже), чтобы порядок соответствовал использованию. - Либо заменить
[dirn]на[post.get("direction") or "linux"]— минимальная правка. - Зависимость от
lang— тоже проверяется до использования (строка 186).
Why Not
- Альтернатива — вынести
dirn/langв начало функции (доdirs_selected). Это чище: переменные определяются один раз и используются ниже без дублирования. - Проверяется на живом approve поста без направлений (пустая форма).