feat: catalogue des layouts accessible dans la web app (/layouts)
This commit is contained in:
+1
-1
@@ -614,7 +614,7 @@ footer{padding:50px 60px;background:var(--navy);color:rgba(255,255,255,.6);font-
|
|||||||
</div></div>
|
</div></div>
|
||||||
</section>
|
</section>
|
||||||
<footer>
|
<footer>
|
||||||
Généré automatiquement depuis layouts_v2.yaml · 09/07/2026 · 31 layouts
|
Généré automatiquement depuis layouts_v2.yaml · 13/07/2026 · 31 layouts
|
||||||
</footer>
|
</footer>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
+3
-2
@@ -4,15 +4,16 @@
|
|||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<title>Sliding — {% block title %}{% endblock %}</title>
|
<title>Sliding — {% block title %}{% endblock %}</title>
|
||||||
|
<link rel="icon" type="image/svg+xml" href="/static/favicon.svg">
|
||||||
<link rel="stylesheet" href="/static/style.css">
|
<link rel="stylesheet" href="/static/style.css">
|
||||||
<script src="https://unpkg.com/htmx.org@1.9.12"></script>
|
<script src="https://unpkg.com/htmx.org@1.9.12"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<header>
|
<header>
|
||||||
<a class="brand" href="/">SLIDING <span>· Pernod Ricard</span></a>
|
<a class="brand" href="/">SLIDING <span>· Pernod Ricard</span></a>
|
||||||
<nav><a href="/logout">Déconnexion</a></nav>
|
<nav><a href="/layouts" target="_blank">Catalogue des layouts</a> · <a href="/logout">Déconnexion</a></nav>
|
||||||
</header>
|
</header>
|
||||||
<main>{% block content %}{% endblock %}</main>
|
<main>{% block content %}{% endblock %}</main>
|
||||||
<div id="busy" class="htmx-indicator">Le NAS travaille…</div>
|
<div id="busy" class="htmx-indicator">L'agent travaille…</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -427,6 +427,22 @@ async def download(request):
|
|||||||
"presentationml.presentation")
|
"presentationml.presentation")
|
||||||
|
|
||||||
|
|
||||||
|
async def layouts_gallery(request):
|
||||||
|
"""Catalogue des layouts — l'index.html généré par build_gallery.py,
|
||||||
|
servi tel quel (toujours à jour après une régénération)."""
|
||||||
|
guard = require_login(request)
|
||||||
|
if guard:
|
||||||
|
return guard
|
||||||
|
page = BASE / "index.html"
|
||||||
|
if not page.exists():
|
||||||
|
return HTMLResponse(
|
||||||
|
'<p style="font-family:sans-serif;margin:40px">Galerie '
|
||||||
|
'absente — lancer <code>python3 build_gallery.py</code> '
|
||||||
|
'sur le NAS.</p>', status_code=404)
|
||||||
|
return FileResponse(str(page), media_type="text/html",
|
||||||
|
headers={"Cache-Control": "no-store"})
|
||||||
|
|
||||||
|
|
||||||
async def health(request):
|
async def health(request):
|
||||||
return JSONResponse({"status": "ok", "server": "webapp-sliding",
|
return JSONResponse({"status": "ok", "server": "webapp-sliding",
|
||||||
"version": "1.0.0"})
|
"version": "1.0.0"})
|
||||||
@@ -448,6 +464,7 @@ app = Starlette(routes=[
|
|||||||
Route("/p/{slug}/revise", revise, methods=["POST"]),
|
Route("/p/{slug}/revise", revise, methods=["POST"]),
|
||||||
Route("/p/{slug}/previews/{name}", preview_png, methods=["GET"]),
|
Route("/p/{slug}/previews/{name}", preview_png, methods=["GET"]),
|
||||||
Route("/p/{slug}/download", download, methods=["GET"]),
|
Route("/p/{slug}/download", download, methods=["GET"]),
|
||||||
|
Route("/layouts", layouts_gallery, methods=["GET"]),
|
||||||
Route("/health", health, methods=["GET"]),
|
Route("/health", health, methods=["GET"]),
|
||||||
Mount("/static", StaticFiles(directory=str(BASE / "static")),
|
Mount("/static", StaticFiles(directory=str(BASE / "static")),
|
||||||
name="static"),
|
name="static"),
|
||||||
|
|||||||
Reference in New Issue
Block a user