Skip to content

Commit b29559e

Browse files
committed
updates
1 parent 30192f4 commit b29559e

File tree

2 files changed

+11
-0
lines changed

2 files changed

+11
-0
lines changed

infrahub_sdk/template/__init__.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
from .exceptions import (
1616
JinjaTemplateError,
1717
JinjaTemplateNotFoundError,
18+
JinjaTemplateOperationViolationError,
1819
JinjaTemplateSyntaxError,
1920
JinjaTemplateUndefinedError,
2021
)
@@ -70,6 +71,11 @@ def get_variables(self) -> list[str]:
7071
template_source = env.loader.get_source(env, self._template)[0]
7172

7273
template = env.parse(template_source)
74+
if self.is_string_based and any(
75+
node.__class__.__name__ in ["Call", "Import", "Include"] for node in template.body
76+
):
77+
raise JinjaTemplateOperationViolationError()
78+
7379
return sorted(meta.find_undeclared_variables(template))
7480

7581
async def render(self, variables: dict[str, Any]) -> str:

infrahub_sdk/template/exceptions.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,8 @@ class JinjaTemplateUndefinedError(JinjaTemplateError):
3131
def __init__(self, message: str | None, errors: list[UndefinedJinja2Error]) -> None:
3232
self.message = message or "Undefined Error"
3333
self.errors = errors
34+
35+
36+
class JinjaTemplateOperationViolationError(JinjaTemplateError):
37+
def __init__(self, message: str | None = None) -> None:
38+
self.message = message or "Forbidden code found in the template"

0 commit comments

Comments
 (0)