Filtres i ordres als resultats de cerca

This commit is contained in:
marc
2025-10-10 00:14:36 +02:00
parent aec310c39c
commit 31aeb09dd9
13 changed files with 339 additions and 64 deletions

View File

@@ -5,6 +5,7 @@ from fastapi import Request
from fastapi.params import Param
from folkugat_web.api.router import get_router
from folkugat_web.fragments import temes
from folkugat_web.model.search import Order, OrderBy, OrderParams
from folkugat_web.services import auth
from folkugat_web.templates import templates
@@ -13,13 +14,21 @@ router = get_router()
@router.get("/temes")
def page(
request: Request,
logged_in: auth.LoggedIn,
query: Annotated[str, Param()] = "",
properties: Annotated[list[str] | None, Param()] = None,
request: Request,
logged_in: auth.LoggedIn,
query: Annotated[str, Param()] = "",
properties: Annotated[list[str] | None, Param()] = None,
order_by: OrderBy | None = None,
order: Order = Order.DESC,
):
properties = properties or []
content_url = f"/api/content/temes?{temes.build_temes_params(query=query, properties=properties)}"
order_params = OrderParams(order_by=order_by, order=order) if order_by else None
temes_params = temes.build_temes_params(
query=query,
properties=properties,
order_params=order_params,
)
content_url = f"/api/content/temes?{temes_params}"
return templates.TemplateResponse(
"index.html",
{
@@ -38,13 +47,19 @@ def content(
logged_in: auth.LoggedIn,
query: Annotated[str, Param()] = "",
properties: Annotated[list[str] | None, Param()] = None,
order_by: OrderBy | None = None,
order: Order = Order.DESC,
):
properties = properties or []
if not query and not order_by:
order_by = OrderBy.TIMES_PLAYED
order_params = OrderParams(order_by=order_by, order=order) if order_by else None
return temes.temes_pagina(
request=request,
logged_in=logged_in,
query=query,
properties=properties,
order_params=order_params,
)
@@ -54,13 +69,17 @@ def busca(
logged_in: auth.LoggedIn,
query: Annotated[str, Param()],
properties: Annotated[list[str] | None, Param()] = None,
order_by: OrderBy | None = None,
order: Order = Order.DESC,
limit: int = 10,
offset: int = 0,
):
order_params = OrderParams(order_by=order_by, order=order) if order_by else None
return temes.temes_busca(
request=request,
query=query,
properties=properties or [],
order_params=order_params,
limit=limit,
offset=offset,
logged_in=logged_in,