Rendering code refactor

This commit is contained in:
marc
2025-04-26 19:09:59 +02:00
parent 7a823a98ab
commit d132e6fd60
33 changed files with 638 additions and 188 deletions

View File

@@ -1,9 +1,15 @@
from typing import Annotated
from fastapi import Form, Request
from fastapi import Form, HTTPException, Request
from fastapi.responses import HTMLResponse
from folkugat_web.api import router
from folkugat_web.fragments import live, sessio
from folkugat_web.services import auth
from folkugat_web.services import auth, files
from folkugat_web.services import playlists as playlists_service
from folkugat_web.services.lilypond import build as lilypond_build
from folkugat_web.services.lilypond import render as lilypond_render
from folkugat_web.services.lilypond import source as lilypond_source
from folkugat_web.services.temes import scores as scores_service
from folkugat_web.services.temes import write as temes_service
from folkugat_web.templates import templates
@@ -197,3 +203,27 @@ def set_tema_new(
entry_id=entry_id,
tema_id=new_tema.id,
)
@router.get("/api/sessio/{session_id}/set/{set_id}/score")
async def render(
request: Request,
_: auth.RequireLogin,
session_id: int,
set_id: int,
):
set_entry = playlists_service.get_set(session_id=session_id, set_id=set_id)
if not set_entry:
raise HTTPException(status_code=404, detail="Could not find set!")
tune_set = lilypond_build.set_from_set(set_entry=set_entry)
set_source = lilypond_source.set_source(tune_set=tune_set)
pdf_result = await lilypond_render.render(
source=set_source,
output=lilypond_render.RenderOutput.PDF,
)
if output_filename := pdf_result.result:
score_render_url = files.get_db_file_path(output_filename)
# return temes.score_render(request=request, score_id=score_id, score_render_url=score_render_url)
return HTMLResponse(content=score_render_url)
else:
return HTMLResponse()