diff --git a/web/src/padelnomics/admin/routes.py b/web/src/padelnomics/admin/routes.py index f0446d0..0fc4097 100644 --- a/web/src/padelnomics/admin/routes.py +++ b/web/src/padelnomics/admin/routes.py @@ -1814,8 +1814,12 @@ async def article_edit(article_id: int): await flash("Article updated.", "success") return redirect(url_for("admin.articles")) - # Load markdown source if available + # Load markdown source if available (manual or generated) + from ..content.routes import BUILD_DIR as CONTENT_BUILD_DIR md_path = Path("data/content/articles") / f"{article['slug']}.md" + if not md_path.exists(): + lang = article["language"] or "en" + md_path = CONTENT_BUILD_DIR / lang / "md" / f"{article['slug']}.md" body = md_path.read_text() if md_path.exists() else "" data = {**dict(article), "body": body} diff --git a/web/src/padelnomics/content/__init__.py b/web/src/padelnomics/content/__init__.py index 9ee25a3..a2540d2 100644 --- a/web/src/padelnomics/content/__init__.py +++ b/web/src/padelnomics/content/__init__.py @@ -135,7 +135,7 @@ def _validate_table_name(data_table: str) -> None: def _datetimeformat(value: str, fmt: str = "%Y-%m-%d") -> str: """Jinja2 filter: format a date string (or 'now') with strftime.""" - from datetime import datetime, UTC + from datetime import UTC, datetime if value == "now": dt = datetime.now(UTC) @@ -429,6 +429,11 @@ async def generate_articles( build_dir.mkdir(parents=True, exist_ok=True) (build_dir / f"{article_slug}.html").write_text(body_html) + # Write markdown source to disk (for admin editing) + md_dir = BUILD_DIR / lang / "md" + md_dir.mkdir(parents=True, exist_ok=True) + (md_dir / f"{article_slug}.md").write_text(body_md) + # Upsert article in SQLite existing_article = await fetch_one( "SELECT id FROM articles WHERE url_path = ?", (url_path,),