feat: add optional matomo tracking for pageviews and download
This commit is contained in:
36
web/app.py
36
web/app.py
@@ -29,6 +29,22 @@ app.mount("/static", StaticFiles(directory=str(Path(__file__).parent / "static")
|
||||
security = HTTPBasic()
|
||||
|
||||
|
||||
def get_matomo_context():
|
||||
matomo_url = (os.getenv("MATOMO_URL") or "").strip().rstrip("/")
|
||||
matomo_site_id = (os.getenv("MATOMO_SITE_ID") or "").strip()
|
||||
|
||||
if not matomo_url or not matomo_site_id:
|
||||
return {
|
||||
"matomo_url": None,
|
||||
"matomo_site_id": None,
|
||||
}
|
||||
|
||||
return {
|
||||
"matomo_url": matomo_url,
|
||||
"matomo_site_id": matomo_site_id,
|
||||
}
|
||||
|
||||
|
||||
def require_auth(credentials: HTTPBasicCredentials = Depends(security)):
|
||||
expected_user = os.getenv("WEB_AUTH_USER")
|
||||
expected_password = os.getenv("WEB_AUTH_PASSWORD")
|
||||
@@ -48,22 +64,28 @@ def require_auth(credentials: HTTPBasicCredentials = Depends(security)):
|
||||
|
||||
@app.get("/", response_class=HTMLResponse)
|
||||
def landing(request: Request):
|
||||
context = {
|
||||
"request": request,
|
||||
}
|
||||
context.update(get_matomo_context())
|
||||
|
||||
return templates.TemplateResponse(
|
||||
"landing.html",
|
||||
{
|
||||
"request": request,
|
||||
},
|
||||
context,
|
||||
)
|
||||
|
||||
|
||||
@app.get("/app", response_class=HTMLResponse)
|
||||
def index(request: Request, _: None = Depends(require_auth)):
|
||||
context = {
|
||||
"request": request,
|
||||
"error": None,
|
||||
}
|
||||
context.update(get_matomo_context())
|
||||
|
||||
return templates.TemplateResponse(
|
||||
"index.html",
|
||||
{
|
||||
"request": request,
|
||||
"error": None,
|
||||
},
|
||||
context,
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user