85 lines
2.6 KiB
Python
85 lines
2.6 KiB
Python
from fastapi import HTTPException, Request
|
|
from folkugat_web.model import temes as model
|
|
from folkugat_web.services.temes import query as temes_q
|
|
from folkugat_web.templates import templates
|
|
|
|
|
|
def title(request: Request, logged_in: bool, tema: model.Tema | None = None, tema_id: int | None = None):
|
|
if tema is None:
|
|
if tema_id is None:
|
|
raise ValueError("Either 'tema' or 'tema_id' must be given!")
|
|
tema = temes_q.get_tema_by_id(tema_id)
|
|
if not tema:
|
|
raise HTTPException(status_code=404, detail="Could not find tune")
|
|
return templates.TemplateResponse(
|
|
"fragments/tema/title.html",
|
|
{
|
|
"request": request,
|
|
"logged_in": logged_in,
|
|
"tema": tema,
|
|
}
|
|
)
|
|
|
|
|
|
def title_editor(request: Request, logged_in: bool, tema_id: int):
|
|
tema = temes_q.get_tema_by_id(tema_id)
|
|
if not tema:
|
|
raise HTTPException(status_code=404, detail="Could not find tune")
|
|
return templates.TemplateResponse(
|
|
"fragments/tema/editor/title.html",
|
|
{
|
|
"request": request,
|
|
"logged_in": logged_in,
|
|
"tema": tema,
|
|
}
|
|
)
|
|
|
|
|
|
def property_(request: Request, logged_in: bool, tema_id: int, property_id: int):
|
|
tema = temes_q.get_tema_by_id(tema_id)
|
|
if not tema:
|
|
raise HTTPException(status_code=404, detail="Could not find tune")
|
|
prop = tema.properties.get(property_id)
|
|
|
|
return templates.TemplateResponse(
|
|
"fragments/tema/property.html",
|
|
{
|
|
"request": request,
|
|
"logged_in": logged_in,
|
|
"tema": tema,
|
|
"property_id": property_id,
|
|
"property": prop,
|
|
"PropertyField": model.PropertyField,
|
|
}
|
|
)
|
|
|
|
|
|
def property_editor(request: Request, logged_in: bool, tema_id: int, property_id: int):
|
|
tema = temes_q.get_tema_by_id(tema_id)
|
|
if not tema:
|
|
raise HTTPException(status_code=404, detail="Could not find tune")
|
|
prop = tema.properties.get(property_id)
|
|
|
|
return templates.TemplateResponse(
|
|
"fragments/tema/editor/property.html",
|
|
{
|
|
"request": request,
|
|
"logged_in": logged_in,
|
|
"tema": tema,
|
|
"property_id": property_id,
|
|
"property": prop,
|
|
"PropertyField": model.PropertyField,
|
|
}
|
|
)
|
|
|
|
|
|
def visibility(request: Request, logged_in: bool, tema: model.Tema):
|
|
return templates.TemplateResponse(
|
|
"fragments/tema/visibility.html",
|
|
{
|
|
"request": request,
|
|
"logged_in": logged_in,
|
|
"tema": tema,
|
|
}
|
|
)
|