You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
YellWOWPages/main.py

46 lines
1.8 KiB

from fastapi import FastAPI, Request
from fastapi.responses import HTMLResponse
from fastapi.staticfiles import StaticFiles
import uvicorn
from classes.constraints import Constraints
from starlette.exceptions import HTTPException as StarletteHTTPException
app = FastAPI(docs_url=None, redoc_url=None)
app.mount('/static', StaticFiles(directory='frontend/static'), name='static')
from routers import auth, static, dashboard, db, api
app.include_router(auth.router)
app.include_router(dashboard.router)
app.include_router(static.router)
app.include_router(api.router)
@app.get("/")
@app.get('/root', response_class=HTMLResponse)
async def root(request: Request):
return Constraints.templates.TemplateResponse('/root/index.html', {'request': request})
# shitty error handling
@app.exception_handler(StarletteHTTPException)
async def http_exception_handler(request, exc):
if exc.status_code == 404:
return Constraints.templates.TemplateResponse('/errors/index.html', {'request': request,
'error': 'not found...',
'url': '/root'})
elif exc.status_code == 500:
return Constraints.templates.TemplateResponse('/errors/index.html', {'request': request,
'error': 'internal server error',
'url': '/root'})
return Constraints.templates.TemplateResponse('/errors/index.html', {'request': request,
'error': exc.detail,
'url': '/root'})
if __name__ == '__main__':
uvicorn.run(app, host='127.0.0.1', port=8080)