Initial commit
This commit is contained in:
144
folkugat_web/fragments/sessions.py
Normal file
144
folkugat_web/fragments/sessions.py
Normal file
@@ -0,0 +1,144 @@
|
||||
from typing import Optional
|
||||
|
||||
from fastapi import Request
|
||||
from fastapi.responses import HTMLResponse
|
||||
from folkugat_web.config import calendari as config
|
||||
from folkugat_web.model import sessions as model
|
||||
from folkugat_web.model.pagines import Pages
|
||||
from folkugat_web.services import sessions as service
|
||||
from folkugat_web.templates import templates
|
||||
|
||||
|
||||
def sessions_pagina(request, logged_in):
|
||||
return templates.TemplateResponse(
|
||||
"fragments/sessions/pagina.html",
|
||||
{
|
||||
"request": request,
|
||||
"logged_in": logged_in,
|
||||
"Pages": Pages,
|
||||
"menu_selected_id": Pages.Sessions,
|
||||
"calendar_list_id": config.CALENDAR_LIST_ID,
|
||||
"history_list_id": config.HISTORY_LIST_ID,
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
def sessions_calendari(request: Request, limit: int, logged_in: bool):
|
||||
sessions = service.get_next_sessions(limit=limit+1)
|
||||
has_more_sessions = len(sessions) > limit
|
||||
sessions = sessions[:limit]
|
||||
next_session_id = sessions[0].id if sessions else None
|
||||
return _sessions_list(
|
||||
request=request,
|
||||
sessions=sessions,
|
||||
has_more_sessions=has_more_sessions,
|
||||
paging_config=config.CALENDARI_PAGING_CONFIG,
|
||||
list_id=config.CALENDAR_LIST_ID,
|
||||
next_session_id=next_session_id,
|
||||
get_sessions_url="/api/sessions/upcoming",
|
||||
limit=limit,
|
||||
logged_in=logged_in
|
||||
)
|
||||
|
||||
|
||||
def sessions_historial(request: Request, limit: int, logged_in: bool):
|
||||
sessions = service.get_sessions_history(limit=limit+1)
|
||||
has_more_sessions = len(sessions) > limit
|
||||
sessions = sessions[:limit]
|
||||
return _sessions_list(
|
||||
request=request,
|
||||
sessions=sessions,
|
||||
has_more_sessions=has_more_sessions,
|
||||
paging_config=config.HISTORY_PAGING_CONFIG,
|
||||
list_id=config.HISTORY_LIST_ID,
|
||||
get_sessions_url="/api/sessions/history",
|
||||
limit=limit,
|
||||
logged_in=logged_in
|
||||
)
|
||||
|
||||
|
||||
def _sessions_list(request: Request, sessions: list[model.Session], has_more_sessions: bool,
|
||||
paging_config: config.PagingConfig, list_id: str, get_sessions_url: str,
|
||||
limit: int, logged_in: bool, next_session_id: Optional[int] = None):
|
||||
if has_more_sessions:
|
||||
more_sessions = limit + paging_config.step
|
||||
else:
|
||||
more_sessions = None
|
||||
|
||||
if len(sessions) > paging_config.initial_items:
|
||||
less_sessions = max(paging_config.initial_items, len(sessions) - paging_config.step)
|
||||
else:
|
||||
less_sessions = None
|
||||
|
||||
return templates.TemplateResponse(
|
||||
"fragments/sessions/session_list.html",
|
||||
{
|
||||
"request": request,
|
||||
"logged_in": logged_in,
|
||||
"get_sessions_url": get_sessions_url,
|
||||
"sessions": sessions,
|
||||
"session_list_id": list_id,
|
||||
"next_session_id": next_session_id,
|
||||
"more_sessions": more_sessions,
|
||||
"less_sessions": less_sessions,
|
||||
"limit": limit,
|
||||
"date_names": service.get_date_names,
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
def sessio(request: Request, session_id: int, logged_in: bool):
|
||||
session = service.get_session(session_id=session_id)
|
||||
return templates.TemplateResponse(
|
||||
"fragments/sessions/sessio.html",
|
||||
{
|
||||
"request": request,
|
||||
"logged_in": logged_in,
|
||||
"Pages": Pages,
|
||||
"session": session,
|
||||
"date_names": service.get_date_names,
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
def sessions_editor_row(request: Request, session_date: Optional[model.Session] = None, session_id: Optional[int] = None):
|
||||
if session_date is None:
|
||||
if session_id is None:
|
||||
raise ValueError("Must either give session or session_id")
|
||||
session_date = service.get_session(session_id=session_id)
|
||||
return templates.TemplateResponse(
|
||||
"fragments/sessions/session_row.html",
|
||||
{
|
||||
"request": request,
|
||||
"session": session_date,
|
||||
"date_names": service.get_date_names,
|
||||
"logged_in": True,
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
def sessions_editor_row_editing(request, session_id: int):
|
||||
session = service.get_session(session_id)
|
||||
return templates.TemplateResponse(
|
||||
"fragments/sessions/session_row_editing.html",
|
||||
{
|
||||
"request": request,
|
||||
"session": session,
|
||||
"date_names": service.get_date_names,
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
def sessions_editor_insert_row(request, session_date: Optional[model.Session] = None):
|
||||
session_date = service.insert_session(session_date or service.new_session())
|
||||
return sessions_editor_row(request, session_date=session_date)
|
||||
|
||||
|
||||
def sessions_editor_post_row(request, session_date: model.Session):
|
||||
service.set_session(session_date)
|
||||
return sessions_editor_row(request, session_date=session_date)
|
||||
|
||||
|
||||
def sessions_editor_delete_row(session_id: int):
|
||||
service.delete_session(session_id)
|
||||
return HTMLResponse()
|
||||
Reference in New Issue
Block a user