mirror of
https://github.com/Significant-Gravitas/AutoGPT.git
synced 2026-01-09 15:17:59 -05:00
fix(backend): Make Jinja Error on TextFormatter as value error (#11236)
<!-- Clearly explain the need for these changes: --> This PR converts Jinja2 TemplateError exceptions to ValueError in the TextFormatter class to ensure proper error handling and HTTP status code responses (400 instead of 500). ### Changes 🏗️ <!-- Concisely describe all of the changes made in this pull request: --> - Added import for `jinja2.exceptions.TemplateError` in `backend/util/text.py:6` - Wrapped template rendering in try-catch block in `format_string` method (`backend/util/text.py:105-109`) - Convert `TemplateError` to `ValueError` to ensure proper 400 HTTP status code for client errors - Added warning logging for template rendering errors before re-raising as ValueError ### Checklist 📋 #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: <!-- Put your test plan: --> - [x] Verified that invalid Jinja2 templates now raise ValueError instead of TemplateError - [x] Confirmed that valid templates continue to work correctly - [x] Checked that warning logs are generated for template errors - [x] Validated that the exception chain is preserved with `from e` #### For configuration changes: - [x] `.env.default` is updated or already compatible with my changes - [x] `docker-compose.yml` is updated or already compatible with my changes - [x] I have included a list of my configuration changes in the PR description (under **Changes**)
This commit is contained in:
@@ -3,6 +3,7 @@ import logging
|
||||
import bleach
|
||||
from bleach.css_sanitizer import CSSSanitizer
|
||||
from jinja2 import BaseLoader
|
||||
from jinja2.exceptions import TemplateError
|
||||
from jinja2.sandbox import SandboxedEnvironment
|
||||
from markupsafe import Markup
|
||||
|
||||
@@ -101,8 +102,11 @@ class TextFormatter:
|
||||
|
||||
def format_string(self, template_str: str, values=None, **kwargs) -> str:
|
||||
"""Regular template rendering with escaping"""
|
||||
template = self.env.from_string(template_str)
|
||||
return template.render(values or {}, **kwargs)
|
||||
try:
|
||||
template = self.env.from_string(template_str)
|
||||
return template.render(values or {}, **kwargs)
|
||||
except TemplateError as e:
|
||||
raise ValueError(e) from e
|
||||
|
||||
def format_email(
|
||||
self,
|
||||
|
||||
Reference in New Issue
Block a user