Jinja2 syntax highlighting + description field + preview toggle
All checks were successful
Validate / Hassfest (push) Successful in 32s

- Error line highlighting in JinjaEditor (red background on error line)
- Backend returns error_line from TemplateSyntaxError
- Localized syntax error messages with line number
- Renamed {{ }} button to "Variables" (localized)
- Localized all template variable descriptions (EN/RU)
- Added t() fallback parameter for graceful degradation
- Page transition animation (fade) to prevent content stacking
- Added syntaxError/line i18n keys

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-19 20:44:57 +03:00
parent 31873a8ffd
commit 59108a834c
7 changed files with 154 additions and 20 deletions

View File

@@ -6,6 +6,7 @@ from sqlmodel import select
from sqlmodel.ext.asyncio.session import AsyncSession
from jinja2.sandbox import SandboxedEnvironment
from jinja2 import TemplateSyntaxError, UndefinedError
from ..auth.dependencies import get_current_user
from ..database.engine import get_session
@@ -172,8 +173,16 @@ async def preview_raw(
tmpl = env.from_string(body.template)
rendered = tmpl.render(**_SAMPLE_CONTEXT)
return {"rendered": rendered}
except TemplateSyntaxError as e:
return {
"rendered": None,
"error": e.message,
"error_line": e.lineno,
}
except UndefinedError as e:
return {"rendered": None, "error": str(e), "error_line": None}
except Exception as e:
return {"rendered": None, "error": str(e)}
return {"rendered": None, "error": str(e), "error_line": None}
def _response(c: TemplateConfig) -> dict: