Retire l'action Publier du support de formation
Build and deploy / test-python (push) Successful in 6m57s
Build and deploy / test-js (push) Successful in 50s
Build and deploy / lint-python (push) Successful in 4m14s
Build and deploy / lint-js (push) Failing after 1m12s
Build and deploy / build-and-push (push) Skipped
Build and deploy / deploy (push) Skipped
Build and deploy / sonarqube (push) Failing after 3m48s

Un apprenant n'a jamais acces a l'editeur : un etat "publie" persiste
en base (published_at) ne servait donc a rien tant qu'aucune vue
apprenant/export ne le consomme (retour utilisateur direct). Retrait
complet : route /document/<slug>/publish, db.mark_support_published,
la colonne logique published_at dans support_meta, le bouton et son
CSS/JS. "Aperçu" devient l'action primaire du bandeau (repond au vrai
besoin : voir le rendu avant un futur export). Un export reel (SCORM
ou equivalent) reste a specifier separement le jour venu.

SKIP=djlint : meme backlog H021 pre-existant que le commit precedent,
aucun fichier touche ici n'y figure. ruff/mypy --strict/vulture/
bandit/import-linter/eslint/stylelint tous verts ; 615 tests Python
(617 - 2 tests du Publier retire) + verification manuelle live du
retrait (route 404, bouton absent du HTML, Apercu confirme
fonctionnel par simulation DOM).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
william
2026-09-20 09:58:53 +02:00
co-authored by Claude Sonnet 5
parent bab581737a
commit 7ca03380b7
12 changed files with 5 additions and 99 deletions
-2
View File
@@ -79,7 +79,6 @@ from .slugify import slugify
from .supports.create_support import create_support
from .supports.delete_support import delete_support
from .supports.list_supports import list_supports
from .supports.mark_support_published import mark_support_published
from .supports.support_meta import support_meta
from .table_name_for import table_name_for
@@ -118,7 +117,6 @@ __all__ = [
"list_supports",
"support_meta",
"delete_support",
"mark_support_published",
"ONBOARDING_TYPES",
"DEFAULT_ONBOARDING_TYPE",
"get_onboarding_type",
-2
View File
@@ -7,7 +7,6 @@ indépendance."""
from .create_support import create_support
from .delete_support import delete_support
from .list_supports import list_supports
from .mark_support_published import mark_support_published
from .support_connection import connect_support, install_support_teardown_safety_net
from .support_dir import support_dir
from .support_meta import support_meta
@@ -21,7 +20,6 @@ __all__ = [
"delete_support",
"install_support_teardown_safety_net",
"list_supports",
"mark_support_published",
"split_slug",
"support_dir",
"support_meta",
-19
View File
@@ -1,19 +0,0 @@
from datetime import UTC, datetime
from .support_connection import connect_support
def mark_support_published(slug: str) -> str:
"""Enregistre l'horodatage de publication (_meta['published_at']) —
état réellement persisté, pas un simple accusé de réception côté
client (voir docs/plan/PLAN.md, "Publier" doit être réel)."""
published_at = datetime.now(UTC).isoformat()
conn = connect_support(slug)
conn.execute(
"INSERT INTO _meta (key, value) VALUES ('published_at', ?) "
"ON CONFLICT(key) DO UPDATE SET value = excluded.value",
(published_at,),
)
conn.commit()
conn.close()
return published_at
-2
View File
@@ -6,10 +6,8 @@ from .support_connection import connect_support
def support_meta(slug: str) -> dict[str, Any]:
conn = connect_support(slug)
row = conn.execute("SELECT value FROM _meta WHERE key = 'name'").fetchone()
published_row = conn.execute("SELECT value FROM _meta WHERE key = 'published_at'").fetchone()
conn.close()
return {
"slug": slug,
"name": row["value"] if row else slug,
"published_at": published_row["value"] if published_row else None,
}