# Agenten Plattform # # (c) 2024 Magnus Bender # Institute of Humanities-Centered Artificial Intelligence (CHAI) # Universitaet Hamburg # https://www.chai.uni-hamburg.de/~bender # # source code released under the terms of GNU Public License Version 3 # https://www.gnu.org/licenses/gpl-3.0.txt from urllib.parse import urlencode from fastapi import APIRouter, Request from fastapi.responses import HTMLResponse, RedirectResponse from fastapi.templating import Jinja2Templates from ums.management.db import DB class Interface(): _PREFIX = "/app" def __init__(self, template:Jinja2Templates, db:DB): self.template = template self.db = db self.router = APIRouter( prefix=self._PREFIX, tags=["app, gui"] ) self._add_routes() def _add_routes(self): @self.router.get("/", response_class=RedirectResponse, summary="Redirect") def index(request: Request) -> RedirectResponse: return RedirectResponse(self._PREFIX + "/table") @self.router.get("/table", response_class=HTMLResponse, summary="Table of messages") def table(request: Request, limit:int=10, offset:int=0): db_args = { "limit" : limit, "offset" : offset } def pagination_link(**kwargs): link_args = db_args.copy() link_args.update(kwargs) return urlencode(link_args) return self.template.TemplateResponse( 'table.html', {"request" : request, "db" : self.db, "db_args" : db_args, "pagination_link" : pagination_link } ) @self.router.get("/new", response_class=HTMLResponse, summary="Add new riddle") def new(request: Request): return self.template.TemplateResponse( 'new.html', {"request" : request} )