Files
vesti/openspec/changes/reject-stay-candidates/design.md
T
kpa39l 562d787f1b fix(candidates): после Отклонить остаёмся на кандидатах, кнопки действий над комментарием
- reject/reject-old (single + bulk): редирект на /candidates с текущей
  группировкой вместо /candidates?status=rejected — не прерываем отбор.
  Отклонённые доступны через фильтр статуса.
- candidates.html: Обработать/Переписать/Отклонить — один ряд над полем
  комментария (после переноса Опубликовать в approve-форму кнопки съехали).

changes: candidates-buttons-order, reject-stay-candidates (skip_specs, валидны).
2026-09-15 16:30:19 +00:00

1.8 KiB
Raw Blame History

Design

Файл: /opt/vesti/web/app.py.

1. reject() — строка 582

Сейчас:

return RedirectResponse(url=_cand_back(group_by, direction, own, q, status="rejected"), status_code=302)

Стало:

return RedirectResponse(url=_cand_back(group_by, direction, own, q), status_code=302)

_cand_back без status строит /candidates с сохранением group_by/direction/own/q — очереди кандидатов (status=new по умолчанию).

2. candidates_bulk() — строки 345, 358

Сейчас:

if action == "reject":
    ...
    return RedirectResponse(url=back + "&status=rejected", status_code=302)
...
if action == "reject-old":
    ...
    return RedirectResponse(url=back + "&status=rejected", status_code=302)

Стало: редирект на back (уже содержит group_by + фильтры), без &status=rejected.

if action == "reject":
    ...
    return RedirectResponse(url=back, status_code=302)
...
if action == "reject-old":
    ...
    return RedirectResponse(url=back, status_code=302)

Верификация

  • openspec validate reject-stay-candidates — чисто.
  • Юнит (TestClient): login → POST /posts/{id}/reject с group_by=date → ожидаем Location: /candidates?group_by=date (БЕЗ status=rejected).
  • Перезапуск: sudo systemctl restart vesti-web.
  • Ручная проверка: отклонить пост из правой панели → остаёмся на «Кандидатах» в той же группировке, пост пропал из списка; список отклонённых доступен через фильтр «🗑 Отклонённые».