diff --git a/web/src/padelnomics/content/__init__.py b/web/src/padelnomics/content/__init__.py index 548c17e..9ee25a3 100644 --- a/web/src/padelnomics/content/__init__.py +++ b/web/src/padelnomics/content/__init__.py @@ -12,7 +12,7 @@ from pathlib import Path import mistune import yaml -from jinja2 import Environment +from jinja2 import ChainableUndefined, Environment from ..analytics import fetch_analytics from ..core import execute, fetch_one, slugify @@ -146,10 +146,12 @@ def _datetimeformat(value: str, fmt: str = "%Y-%m-%d") -> str: def _render_pattern(pattern: str, context: dict) -> str: """Render a Jinja2 pattern string with context variables.""" - env = Environment() + env = Environment(undefined=ChainableUndefined) env.filters["slugify"] = slugify env.filters["datetimeformat"] = _datetimeformat - return env.from_string(pattern).render(**context) + # Replace None values with 0 so numeric filters (round, int) don't crash + safe_context = {k: (v if v is not None else 0) for k, v in context.items()} + return env.from_string(pattern).render(**safe_context) def _extract_faq_pairs(markdown: str) -> list[dict]: