53 lines
1.6 KiB
Python
53 lines
1.6 KiB
Python
# app/frontend.py
|
|
import os
|
|
from pathlib import Path
|
|
from fastapi import APIRouter, Request, Depends
|
|
from fastapi.templating import Jinja2Templates
|
|
from sqlalchemy.orm import Session
|
|
|
|
from app.auth import require_login
|
|
from app.database import SessionLocal
|
|
|
|
router = APIRouter()
|
|
|
|
templates_dir = Path(__file__).parent.parent / "frontend" / "templates"
|
|
templates = Jinja2Templates(directory=str(templates_dir))
|
|
|
|
def get_db():
|
|
db = SessionLocal()
|
|
try:
|
|
yield db
|
|
finally:
|
|
db.close()
|
|
|
|
@router.get("/files")
|
|
@require_login
|
|
def files_page(request: Request):
|
|
"""
|
|
Return the 'files.html' template.
|
|
The actual file data is fetched via XHR from /api/files in the template.
|
|
"""
|
|
return templates.TemplateResponse("files.html", {"request": request})
|
|
|
|
# ... existing routes for /, /upload, /about, etc. ...
|
|
|
|
|
|
@router.get("/", include_in_schema=False)
|
|
async def serve_index(request: Request):
|
|
return templates.TemplateResponse("index.html", {"request": request})
|
|
|
|
@router.get("/about", include_in_schema=False)
|
|
async def serve_about(request: Request):
|
|
return templates.TemplateResponse("about.html", {"request": request})
|
|
|
|
@router.get("/upload", include_in_schema=False)
|
|
@require_login
|
|
async def serve_upload(request: Request):
|
|
return templates.TemplateResponse("upload.html", {"request": request})
|
|
|
|
@router.get("/favicon.ico", include_in_schema=False)
|
|
def favicon():
|
|
# If you have a real favicon in `frontend/static/favicon.ico`:
|
|
favicon_path = Path(__file__).parent.parent / "frontend" / "static" / "favicon.ico"
|
|
return str(favicon_path)
|