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:
@@ -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": []}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user