Migrated links, lyrics and properties

This commit is contained in:
marc
2025-03-23 21:46:04 +01:00
parent c097811e40
commit d596861a2e
47 changed files with 1403 additions and 844 deletions

View File

@@ -0,0 +1,84 @@
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,
}
)

View File

@@ -0,0 +1,88 @@
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.services.temes.links import guess_link_type
from folkugat_web.templates import templates
def link(request: Request, logged_in: bool, link: model.Link):
return templates.TemplateResponse(
"fragments/tema/link.html",
{
"request": request,
"logged_in": logged_in,
"link": link,
"LinkType": model.LinkType,
"ContentType": model.ContentType,
},
headers={
"HX-Trigger": f"reload-tema-{link.tema_id}-score"
}
)
def link_editor(request: Request, logged_in: bool, link: model.Link):
return templates.TemplateResponse(
"fragments/tema/editor/link.html",
{
"request": request,
"logged_in": logged_in,
"link": link,
"LinkType": model.LinkType,
"ContentType": model.ContentType,
}
)
def link_editor_url(request: Request, logged_in: bool, link: model.Link):
return templates.TemplateResponse(
"fragments/tema/editor/link_url.html",
{
"request": request,
"logged_in": logged_in,
"link": link,
"LinkType": model.LinkType,
"ContentType": model.ContentType,
}
)
def link_editor_file(request: Request, logged_in: bool, link: model.Link):
return templates.TemplateResponse(
"fragments/tema/editor/link_file.html",
{
"request": request,
"logged_in": logged_in,
"link": link,
"LinkType": model.LinkType,
"ContentType": model.ContentType,
}
)
def link_icon(request: Request, logged_in: bool, link: model.Link):
return templates.TemplateResponse(
"fragments/tema/link_icon.html",
{
"request": request,
"logged_in": logged_in,
"link": link,
"LinkType": model.LinkType,
"ContentType": model.ContentType,
}
)
def score(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/score.html",
{
"request": request,
"logged_in": logged_in,
"tema": tema,
"LinkType": model.LinkType,
}
)

View File

@@ -0,0 +1,25 @@
from fastapi import Request
from folkugat_web.model import temes as model
from folkugat_web.templates import templates
def lyric(request: Request, logged_in: bool, lyric: model.Lyrics):
return templates.TemplateResponse(
"fragments/tema/lyric.html",
{
"request": request,
"logged_in": logged_in,
"lyric": lyric,
}
)
def lyric_editor(request: Request, logged_in: bool, lyric: model.Lyrics):
return templates.TemplateResponse(
"fragments/tema/editor/lyric.html",
{
"request": request,
"logged_in": logged_in,
"lyric": lyric,
}
)

View File

@@ -0,0 +1,27 @@
from fastapi import Request
from folkugat_web.model import temes as model
from folkugat_web.templates import templates
def property_(request: Request, logged_in: bool, property: model.Property):
return templates.TemplateResponse(
"fragments/tema/property.html",
{
"request": request,
"logged_in": logged_in,
"property": property,
"PropertyField": model.PropertyField,
}
)
def property_editor(request: Request, logged_in: bool, property: model.Property):
return templates.TemplateResponse(
"fragments/tema/editor/property.html",
{
"request": request,
"logged_in": logged_in,
"property": property,
"PropertyField": model.PropertyField,
}
)