import logging from fastapi import APIRouter, Request, Form from fastapi.responses import HTMLResponse from fastapi.templating import Jinja2Templates from app.core.parsers.obsidian import ObsidianNotesParser, parse_training_data from app.core.templates.templates import BaseTemplateResponse web_router = APIRouter() templates = Jinja2Templates(directory="app/templates") template_renderer = BaseTemplateResponse(templates) @web_router.get("/", response_class=HTMLResponse) async def home(request: Request): """Home page""" return template_renderer.render( request, "index.html", ) @web_router.get("/obsidian/list/", response_class=HTMLResponse) async def obsidian_list(request: Request): data = parse_training_data() return template_renderer.render( request=request, template_name="trainings.html", context={"trainings": data} ) @web_router.get("/obsidian/parse", response_class=HTMLResponse) async def obsidian_parse_form(request: Request): return template_renderer.render( request=request, template_name="obsidian/parser.html", context={"trainings": {}} ) @web_router.post("/obsidian/parse", response_class=HTMLResponse) async def obsidian_parse(request: Request, training_data: str = Form(...)): logging.error(training_data) op = ObsidianNotesParser() result = op.parse(data=training_data) logging.error(result) return template_renderer.render( request=request, template_name="trainings.html", context={"trainings": result} )