47 lines
1.5 KiB
Python
47 lines
1.5 KiB
Python
from fastapi import FastAPI, Request, HTTPException
|
|
from fastapi.responses import RedirectResponse
|
|
from fastapi.templating import Jinja2Templates
|
|
from fastapi.staticfiles import StaticFiles
|
|
from model.database import init_db
|
|
from routers import index, logins, users, product, profile, jobs
|
|
|
|
import logging
|
|
|
|
|
|
# Создаём таблицы в БД
|
|
init_db()
|
|
|
|
# Инициализация приложения
|
|
app = FastAPI()
|
|
|
|
# Настройка шаблонов
|
|
templates = Jinja2Templates(directory="templates")
|
|
|
|
# Подключение статики (делаем это ОДИН раз)
|
|
app.mount("/static", StaticFiles(directory="static"), name="static")
|
|
|
|
# Подключение маршрутов
|
|
app.include_router(index.router, tags=["callback"])
|
|
app.include_router(logins.router, tags=["login"])
|
|
app.include_router(users.router, tags=["users"])
|
|
app.include_router(product.router, tags=["product"])
|
|
|
|
# Подключение роутеров
|
|
app.include_router(profile.router, tags=["Profile"])
|
|
app.include_router(jobs.router, tags=["Jobs"])
|
|
|
|
# Обработка 404
|
|
@app.exception_handler(404)
|
|
async def not_found(request: Request, exc: HTTPException):
|
|
return templates.TemplateResponse("working.html", {"request": request}, status_code=404)
|
|
|
|
@app.exception_handler(HTTPException)
|
|
async def auth_exception_handler(request: Request, exc: HTTPException):
|
|
if exc.status_code == 401:
|
|
return RedirectResponse(url="/login")
|
|
return RedirectResponse(url="/error")
|
|
|
|
|
|
@app.on_event("startup")
|
|
async def startup():
|
|
await init_db() |