feat: мультивыбор колледжей в фильтре публичной ленты

Параметр category в /news принимает несколько slug'ов через запятую
(category_id IN ...), обратно совместим с одиночным slug. FilterBar:
чипы колледжей стали переключателями (можно отметить несколько),
filters.category теперь массив.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
jze9
2026-06-17 18:47:19 +05:00
parent 45368c64bf
commit 3161470a7d
3 changed files with 23 additions and 10 deletions

View File

@@ -62,9 +62,13 @@ async def list_news(
)
if category:
cat = (await db.execute(select(Category).where(Category.slug == category))).scalar_one_or_none()
if cat:
base = base.where(Article.category_id == cat.id)
# Поддержка нескольких колледжей: category="slug1,slug2,..."
slugs = [s for s in (part.strip() for part in category.split(",")) if s]
cat_ids = (
await db.execute(select(Category.id).where(Category.slug.in_(slugs)))
).scalars().all()
if cat_ids:
base = base.where(Article.category_id.in_(cat_ids))
else:
return {"total": 0, "offset": offset, "limit": limit, "has_more": False, "items": []}