Files

1.8 KiB
Raw Permalink Blame History

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 поста без направлений (пустая форма).