Atlas - page.py
Home / systems / linux / intranet / web-management-core / core Lines: 2 | Size: 1652 bytes [Download] [Show on GitHub] [Search similar files] [Raw] [Raw (proxy)][FILE BEGIN]1from fastapi import Request 2from fastapi.responses import HTMLResponse, RedirectResponse 3from core.layout import layout 4 5# ---- Page helpers ---- 6 7def page(request: Request, title: str, buttons, body: str, header: str | None = None) -> HTMLResponse: 8 return HTMLResponse(layout(request, title, buttons, header, body)) 9 10# ---- Page types ---- 11 12 13 14def menu(request: Request, title: str, entries: list[tuple[str, str]]): 15 lines = [] 16 for label, href in entries: 17 lines.append(f"<a href='{href}'>[{label}]</a>") 18 body = "<pre>" + "\n".join(lines) + "</pre>" 19 return page(request, title, [("BACK", "/")], body) 20 21 22def message(request: Request, title: str, text: str, ok_href: str = "/"): 23 body = f""" 24 <div class='center'> 25 <pre>{text}</pre> 26 <a href='{ok_href}'>[ OK ]</a> 27 </div> 28 """ 29 return page(request, title, [("BACK", ok_href)], body) 30 31 32def form(request: Request, title: str, action: str, fields: list[dict], error: str | None = None): 33 rows = [] 34 for f in fields: 35 if f.get("type") == "textarea": 36 rows.append(f"<label>{f['name']}</label><br/><textarea name='{f['name']}'></textarea>") 37 else: 38 rows.append(f"<label>{f['name']}</label><br/><input name='{f['name']}' />") 39 err = f"<pre>ERROR: {error}</pre>" if error else "" 40 body = f""" 41 {err} 42 <form method='post' action='{action}'> 43 {'<br/>'.join(rows)} 44 <br/><input type='submit' value='SUBMIT' /> 45 </form> 46 """ 47 return page(request, title, [("BACK", "/")], body) 48 49 50def static_html(request: Request, title: str, html: str): 51 return page(request, title, [("BACK", "/")], html)[FILE END](C) 2025 0x4248 (C) 2025 4248 Media and 4248 Systems, All part of 0x4248 See LICENCE files for more information. Not all files are by 0x4248 always check Licencing.