fix(content): add missing datetimeformat filter; move preview column first

- Add _datetimeformat Jinja2 filter to _render_pattern() — templates
  use {{ 'now' | datetimeformat('%Y') }} but the filter was never
  registered, causing "No filter named 'datetimeformat'" on preview.
- Move Preview button to first column in template detail data table
  so it's visible without scrolling on wide tables.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Deeman
2026-02-24 00:13:05 +01:00
parent 194100c577
commit 2be54b1c88
2 changed files with 17 additions and 5 deletions

View File

@@ -81,24 +81,24 @@
<table class="table text-sm">
<thead>
<tr>
<th></th>
{% for col in columns %}
<th>{{ col.name }}</th>
{% endfor %}
<th>Preview</th>
</tr>
</thead>
<tbody>
{% for row in sample_rows %}
<tr>
<td>
<a href="{{ url_for('admin.template_preview', slug=config_data.slug, row_key=row[config_data.natural_key]) }}"
class="btn-outline btn-sm">Preview</a>
</td>
{% for col in columns %}
<td class="mono" style="max-width:200px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap">
{{ row[col.name] }}
</td>
{% endfor %}
<td>
<a href="{{ url_for('admin.template_preview', slug=config_data.slug, row_key=row[config_data.natural_key]) }}"
class="btn-outline btn-sm">Preview</a>
</td>
</tr>
{% endfor %}
</tbody>

View File

@@ -133,10 +133,22 @@ def _validate_table_name(data_table: str) -> None:
# ── Rendering helpers ────────────────────────────────────────────────────────
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
if value == "now":
dt = datetime.now(UTC)
else:
dt = datetime.fromisoformat(value)
return dt.strftime(fmt)
def _render_pattern(pattern: str, context: dict) -> str:
"""Render a Jinja2 pattern string with context variables."""
env = Environment()
env.filters["slugify"] = slugify
env.filters["datetimeformat"] = _datetimeformat
return env.from_string(pattern).render(**context)