9eef726d9b
- Removed session-based user retrieval from dependencies.py and main.py. - Eliminated SessionMiddleware and related session handling code. - Updated dashboard and team views to directly query user data from the database. - Simplified redeem and team management views to remove authentication checks. - Adjusted templates to reflect changes in user context handling. - Added camera selection feature in scan_qr.html for improved QR code scanning. - Cleaned up Docker configuration and requirements for better deployment.
74 lines
2.3 KiB
Python
74 lines
2.3 KiB
Python
#!/usr/bin/env python3
|
|
from fastapi import FastAPI, Request, status
|
|
from fastapi.responses import HTMLResponse, RedirectResponse
|
|
from datetime import datetime
|
|
import os
|
|
|
|
from .db import init_db, engine
|
|
from . import models
|
|
from .templates_config import templates
|
|
from .views import qr, redeem, teams, admin, leaderboard, dashboard
|
|
from .db_init import seed_db
|
|
|
|
# Create tables on startup
|
|
init_db()
|
|
|
|
# Seed database with initial test data
|
|
# In a production app, you would handle this differently
|
|
seed_db()
|
|
|
|
app = FastAPI()
|
|
|
|
# User context middleware to make template globals available
|
|
@app.middleware("http")
|
|
async def add_template_globals(request: Request, call_next):
|
|
"""Add template globals"""
|
|
try:
|
|
# Update template globals for all templates
|
|
templates.env.globals["current_user"] = None
|
|
except Exception as e:
|
|
print(f"Error setting template globals: {str(e)}")
|
|
|
|
# Process the request
|
|
response = await call_next(request)
|
|
return response
|
|
|
|
# Routers - auth router removed
|
|
app.include_router(qr.router, prefix="/qr", tags=["QR"])
|
|
app.include_router(redeem.router, prefix="/redeem", tags=["Redeem"])
|
|
app.include_router(teams.router, prefix="/teams", tags=["Teams"])
|
|
app.include_router(admin.router, prefix="/admin", tags=["Admin"])
|
|
app.include_router(leaderboard.router, prefix="/leaderboard", tags=["Leaderboard"])
|
|
app.include_router(dashboard.router, prefix="/dashboard", tags=["Dashboard"])
|
|
|
|
@app.get("/", response_class=HTMLResponse)
|
|
def index(request: Request):
|
|
return templates.TemplateResponse("index.html", {
|
|
"request": request,
|
|
"now": datetime.now
|
|
})
|
|
|
|
@app.get("/about", response_class=HTMLResponse)
|
|
def about(request: Request):
|
|
return templates.TemplateResponse("about.html", {
|
|
"request": request
|
|
})
|
|
|
|
@app.get("/contact", response_class=HTMLResponse)
|
|
def contact(request: Request):
|
|
return templates.TemplateResponse("contact.html", {
|
|
"request": request
|
|
})
|
|
|
|
@app.get("/privacy", response_class=HTMLResponse)
|
|
def privacy(request: Request):
|
|
return templates.TemplateResponse("privacy.html", {
|
|
"request": request
|
|
})
|
|
|
|
@app.get("/terms", response_class=HTMLResponse)
|
|
def terms(request: Request):
|
|
return templates.TemplateResponse("terms.html", {
|
|
"request": request
|
|
})
|