Migrated links, lyrics and properties
This commit is contained in:
@@ -1,239 +0,0 @@
|
||||
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 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 lyric(request: Request, logged_in: bool, tema_id: int, lyric_id: int):
|
||||
tema = temes_q.get_tema_by_id(tema_id)
|
||||
if not tema:
|
||||
raise HTTPException(status_code=404, detail="Could not find tune")
|
||||
lyric = tema.lyrics.get(lyric_id)
|
||||
|
||||
return templates.TemplateResponse(
|
||||
"fragments/tema/lyric.html",
|
||||
{
|
||||
"request": request,
|
||||
"logged_in": logged_in,
|
||||
"tema": tema,
|
||||
"lyric_id": lyric_id,
|
||||
"lyric": lyric,
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
def lyric_editor(request: Request, logged_in: bool, tema_id: int, lyric_id: int):
|
||||
tema = temes_q.get_tema_by_id(tema_id)
|
||||
if not tema:
|
||||
raise HTTPException(status_code=404, detail="Could not find tune")
|
||||
lyric = tema.lyrics.get(lyric_id)
|
||||
|
||||
return templates.TemplateResponse(
|
||||
"fragments/tema/editor/lyric.html",
|
||||
{
|
||||
"request": request,
|
||||
"logged_in": logged_in,
|
||||
"tema": tema,
|
||||
"lyric_id": lyric_id,
|
||||
"lyric": lyric,
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
def link(request: Request, logged_in: bool, tema_id: int, link_id: int):
|
||||
tema = temes_q.get_tema_by_id(tema_id)
|
||||
if not tema:
|
||||
raise HTTPException(status_code=404, detail="Could not find tune")
|
||||
link = tema.links.get(link_id)
|
||||
|
||||
return templates.TemplateResponse(
|
||||
"fragments/tema/link.html",
|
||||
{
|
||||
"request": request,
|
||||
"logged_in": logged_in,
|
||||
"tema": tema,
|
||||
"link_id": link_id,
|
||||
"link": link,
|
||||
"LinkType": model.LinkType,
|
||||
"ContentType": model.ContentType,
|
||||
},
|
||||
headers={
|
||||
"HX-Trigger": f"reload-tema-{tema_id}-score"
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
def link_editor(request: Request, logged_in: bool, tema_id: int, link_id: int):
|
||||
tema = temes_q.get_tema_by_id(tema_id)
|
||||
if not tema:
|
||||
raise HTTPException(status_code=404, detail="Could not find tune")
|
||||
link = tema.links.get(link_id)
|
||||
|
||||
return templates.TemplateResponse(
|
||||
"fragments/tema/editor/link.html",
|
||||
{
|
||||
"request": request,
|
||||
"logged_in": logged_in,
|
||||
"tema": tema,
|
||||
"link_id": link_id,
|
||||
"link": link,
|
||||
"LinkType": model.LinkType,
|
||||
"ContentType": model.ContentType,
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
def link_editor_url(request: Request, logged_in: bool, tema_id: int, link_id: int):
|
||||
tema = temes_q.get_tema_by_id(tema_id)
|
||||
if not tema:
|
||||
raise HTTPException(status_code=404, detail="Could not find tune")
|
||||
link = tema.links.get(link_id)
|
||||
return templates.TemplateResponse(
|
||||
"fragments/tema/editor/link_url.html",
|
||||
{
|
||||
"request": request,
|
||||
"logged_in": logged_in,
|
||||
"tema": tema,
|
||||
"link_id": link_id,
|
||||
"link": link,
|
||||
"LinkType": model.LinkType,
|
||||
"ContentType": model.ContentType,
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
def link_editor_file(request: Request, logged_in: bool, tema_id: int, link_id: int):
|
||||
tema = temes_q.get_tema_by_id(tema_id)
|
||||
if not tema:
|
||||
raise HTTPException(status_code=404, detail="Could not find tune")
|
||||
link = tema.links.get(link_id)
|
||||
return templates.TemplateResponse(
|
||||
"fragments/tema/editor/link_file.html",
|
||||
{
|
||||
"request": request,
|
||||
"logged_in": logged_in,
|
||||
"tema": tema,
|
||||
"link_id": link_id,
|
||||
"link": link,
|
||||
"LinkType": model.LinkType,
|
||||
"ContentType": model.ContentType,
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
def link_icon(request: Request, logged_in: bool, tema_id: int, link_id: int, url: str,
|
||||
content_type: model.ContentType):
|
||||
link = model.Link(
|
||||
id=link_id,
|
||||
content_type=content_type,
|
||||
link_type=guess_link_type(url),
|
||||
url=url,
|
||||
)
|
||||
return templates.TemplateResponse(
|
||||
"fragments/tema/link_icon.html",
|
||||
{
|
||||
"request": request,
|
||||
"logged_in": logged_in,
|
||||
"tema_id": tema_id,
|
||||
"link_id": link_id,
|
||||
"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,
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
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,
|
||||
}
|
||||
)
|
||||
84
folkugat_web/fragments/tema/__init__.py
Normal file
84
folkugat_web/fragments/tema/__init__.py
Normal 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,
|
||||
}
|
||||
)
|
||||
88
folkugat_web/fragments/tema/links.py
Normal file
88
folkugat_web/fragments/tema/links.py
Normal 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,
|
||||
}
|
||||
)
|
||||
25
folkugat_web/fragments/tema/lyrics.py
Normal file
25
folkugat_web/fragments/tema/lyrics.py
Normal 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,
|
||||
}
|
||||
)
|
||||
27
folkugat_web/fragments/tema/properties.py
Normal file
27
folkugat_web/fragments/tema/properties.py
Normal 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,
|
||||
}
|
||||
)
|
||||
@@ -1,10 +1,12 @@
|
||||
from fastapi import HTTPException, Request
|
||||
from fastapi import Request
|
||||
from folkugat_web.model import temes as model
|
||||
from folkugat_web.model.pagines import Pages
|
||||
from folkugat_web.services import sessions as sessions_service
|
||||
from folkugat_web.services.temes import links as links_service
|
||||
from folkugat_web.services.temes import query as temes_q
|
||||
from folkugat_web.services.temes import search as temes_s
|
||||
from folkugat_web.templates import templates
|
||||
from folkugat_web.utils import FnChain
|
||||
|
||||
|
||||
def temes_pagina(request: Request, logged_in: bool, query: str):
|
||||
@@ -35,7 +37,12 @@ def temes_busca(request: Request, logged_in: bool, query: str, offset: int = 0,
|
||||
if offset > 0:
|
||||
prev_offset = max(offset - limit, 0)
|
||||
|
||||
temes = temes_q.temes_compute_stats(temes)
|
||||
temes = (
|
||||
FnChain.transform(temes) |
|
||||
temes_q.temes_compute_stats |
|
||||
links_service.add_links_to_temes |
|
||||
list
|
||||
).result()
|
||||
|
||||
return templates.TemplateResponse(
|
||||
"fragments/temes/results.html",
|
||||
@@ -52,11 +59,7 @@ def temes_busca(request: Request, logged_in: bool, query: str, offset: int = 0,
|
||||
)
|
||||
|
||||
|
||||
def tema(request: Request, tema_id: int, logged_in: bool):
|
||||
tema = temes_q.get_tema_by_id(tema_id)
|
||||
if not tema:
|
||||
raise HTTPException(status_code=404, detail="Could not find tune")
|
||||
tema = temes_q.tema_compute_stats(tema)
|
||||
def tema(request: Request, logged_in: bool, tema: model.Tema):
|
||||
return templates.TemplateResponse(
|
||||
"fragments/tema/pagina.html",
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user