mirror of
https://gitverse.ru/kpa39l/vesti.git
synced 2026-09-29 09:55:03 +00:00
candidates: фикс смены группировки (422 при сабмите bulk-формы)
- Группировка вынесена из onchange-сабмита bulk-формы в GET-ссылки (/candidates?group_by=...&filters...&selected=...) - Чекбоксы bulk привязаны к форме атрибутом form='bulk-form' (без JS, HTML5) — устранены вложенные формы (невалидный HTML) - Выбор поста — ссылкой GET (selected=id) вместо POST /candidates/select - app.py: добавлен filters_qs (query-string фильтров для ссылок), импорт urllib.parse.quote; /candidates/select оставлен для обратной совместимости (сабмит старых форм) - Тест: смена группировки, bulk reject, выбор поста, фильтры — зелёные
This commit is contained in:
+10
-1
@@ -8,6 +8,7 @@ import secrets
|
||||
import sqlite3
|
||||
from datetime import datetime
|
||||
from pathlib import Path
|
||||
from urllib.parse import quote
|
||||
|
||||
import markdown as md_lib
|
||||
from fastapi import FastAPI, Form, HTTPException, Request, Response
|
||||
@@ -250,9 +251,17 @@ def candidates(request: Request, direction: str = "", status: str = "", own: str
|
||||
continue
|
||||
break
|
||||
conn.close()
|
||||
# строка параметров фильтров для ссылок (выбор поста, смена группировки)
|
||||
qs = []
|
||||
for k, v in (("direction", direction), ("status", status), ("own", own), ("q", q)):
|
||||
if v:
|
||||
qs.append(f"{k}={quote(v)}")
|
||||
if not selected:
|
||||
selected = sel["id"] if sel else 0
|
||||
filters_qs = "&".join(qs)
|
||||
html = tpl.get_template("candidates.html").render(
|
||||
posts=grouped, counts=counts, status=status, direction=direction, own=own,
|
||||
q=q, group_by=group_by, selected=sel, error=error,
|
||||
q=q, group_by=group_by, selected=sel, error=error, filters_qs=filters_qs,
|
||||
directions=DIRECTIONS, STATUS_LABELS=STATUS_LABELS, STATUS_COLORS=STATUS_COLORS,
|
||||
)
|
||||
return HTMLResponse(html)
|
||||
|
||||
Reference in New Issue
Block a user