diff options
| -rw-r--r-- | web-project/src/solo_tool_web.py | 24 | 
1 files changed, 10 insertions, 14 deletions
| diff --git a/web-project/src/solo_tool_web.py b/web-project/src/solo_tool_web.py index ea3de5b..3665c25 100644 --- a/web-project/src/solo_tool_web.py +++ b/web-project/src/solo_tool_web.py @@ -3,8 +3,8 @@ from os import getenv  from os.path import basename, splitext  from functools import partial  from nicegui import ui, events -from starlette.formparsers import MultiPartParser  import click +from fastapi import HTTPException  from solo_tool import SoloTool  from solo_tool.session_manager import SessionManager @@ -29,20 +29,17 @@ def songList(st: SoloTool, songDrawer) -> None:  sessions = {}  sessionManager = None -@ui.page('/{sessionName}') -def sessionPage(sessionName: str): -    if sessionName not in sessions: -        return +@ui.page('/{sessionId}') +def sessionPage(sessionId: str): +    if sessionId not in sessions: +        raise HTTPException(status_code=404, detail=f"No session with ID {sessionId}")      fullscreen = ui.fullscreen()      ui.dark_mode().enable()      ui.colors(secondary='#ffc107') -    ui.page_title(sessionName) +    ui.page_title(sessionId) -    # Improved performance with large file uploads -    MultiPartParser.max_file_size = 1024 * 1024 * 100  # 100 MB - -    st = sessions[sessionName] +    st = sessions[sessionId]      # Manage songs dialog      with ui.dialog() as manageSongsDialog: @@ -55,7 +52,7 @@ def sessionPage(sessionName: str):              ui.label().bind_text_from(st, 'song', lambda index: fileName(st.songs[index]) if index is not None else "Select a song").classes('text-lg')          with ui.row().classes('items-center justify-start'):              ui.button(icon='home', on_click=lambda: ui.navigate.to("/")).props('flat dense round color=white') -            def save(): sessionManager.saveSession(st, sessionName) +            def save(): sessionManager.saveSession(st, sessionId)              ui.button(icon='save', on_click=save).props('flat dense round color=white')              ui.button(icon='fullscreen', on_click=fullscreen.toggle).props('flat dense round color=white') @@ -109,8 +106,8 @@ def landingPage():      with ui.header().classes('items-center'):          ui.label("Choose a session").classes('text-lg') -    for name, soloTool in sessions.items(): -        ui.button(name, on_click=partial(ui.navigate.to, f"/{name}")) +    for id, soloTool in sessions.items(): +        ui.button(id, on_click=partial(ui.navigate.to, f"/{id}"))  def start(port, refresh, reload, session_path):      global sessionManager @@ -122,7 +119,6 @@ def start(port, refresh, reload, session_path):          songTool.registerSongSelectionCallback(lambda new: keyPointList.refresh())          songTool.registerSongListCallback(lambda new: songList.refresh())          sessions[fileName(key)] = songTool -      try:          ui.run(reload=reload, binding_refresh_interval=refresh, port=port)      except KeyboardInterrupt: | 
