Files
gh-christianlouis-docuelevate/app/frontend/router.py
T

91 lines
2.7 KiB
Python

from fastapi import APIRouter, Request, Depends, HTTPException
from fastapi.templating import Jinja2Templates
from pathlib import Path
from datetime import datetime
from sqlalchemy.orm import Session
from app.config import settings
from app.auth import require_login
from app.database import SessionLocal
router = APIRouter()
# Set up Jinja2 templates
templates_dir = Path(__file__).parent.parent.parent / "frontend" / "templates"
templates = Jinja2Templates(directory=str(templates_dir))
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()
@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("/files")
@require_login
def files_page(request: Request, db: Session = Depends(get_db)):
return templates.TemplateResponse("files.html", {"request": request})
@router.get("/favicon.ico", include_in_schema=False)
def favicon():
favicon_path = Path(__file__).parent.parent.parent / "frontend" / "static" / "favicon.ico"
return str(favicon_path)
@router.get("/status")
@require_login
async def status_dashboard(request: Request):
"""
Status dashboard showing all configured integration targets
"""
from app.utils.config_validator import get_provider_status
# Get provider status
providers = get_provider_status()
return templates.TemplateResponse(
"status_dashboard.html",
{
"request": request,
"providers": providers,
"debug_enabled": getattr(settings, 'debug', False),
"last_check": datetime.now().strftime("%Y-%m-%d %H:%M:%S")
}
)
@router.get("/env")
@require_login
async def env_debug(request: Request):
"""
Debug endpoint to view environment variables and settings
Only shows values when DEBUG is True
"""
# Default DEBUG to True for this route
debug_enabled = True
# Get settings data
from app.utils.config_validator import get_settings_for_display
settings_data = get_settings_for_display(show_values=debug_enabled)
return templates.TemplateResponse(
"env_debug.html",
{
"request": request,
"settings": settings_data,
"debug_enabled": debug_enabled,
"app_version": getattr(settings, 'version', 'Unknown')
}
)