From 1d3efc90c02eea5a8e061a23bd1b309178f0be08 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Thu, 21 Mar 2024 13:21:45 -0400 Subject: [PATCH] Move utilities.utils.render_jinja2() to utilities.jinja2 --- netbox/extras/models/models.py | 3 ++- netbox/utilities/jinja2.py | 16 ++++++++++++++++ netbox/utilities/utils.py | 11 ----------- 3 files changed, 18 insertions(+), 12 deletions(-) diff --git a/netbox/extras/models/models.py b/netbox/extras/models/models.py index 435f88392..0c136e562 100644 --- a/netbox/extras/models/models.py +++ b/netbox/extras/models/models.py @@ -24,7 +24,8 @@ from netbox.models.features import ( ) from utilities.html import clean_html from utilities.querysets import RestrictedQuerySet -from utilities.utils import dict_to_querydict, render_jinja2 +from utilities.jinja2 import render_jinja2 +from utilities.utils import dict_to_querydict __all__ = ( 'Bookmark', diff --git a/netbox/utilities/jinja2.py b/netbox/utilities/jinja2.py index 10d56a0f0..cefb97831 100644 --- a/netbox/utilities/jinja2.py +++ b/netbox/utilities/jinja2.py @@ -1,6 +1,9 @@ from django.apps import apps from jinja2 import BaseLoader, TemplateNotFound from jinja2.meta import find_referenced_templates +from jinja2.sandbox import SandboxedEnvironment + +from netbox.config import get_config __all__ = ( 'DataFileLoader', @@ -35,3 +38,16 @@ class DataFileLoader(BaseLoader): def cache_templates(self, templates): self._template_cache.update(templates) + + +# +# Utility functions +# + +def render_jinja2(template_code, context): + """ + Render a Jinja2 template with the provided context. Return the rendered content. + """ + environment = SandboxedEnvironment() + environment.filters.update(get_config().JINJA2_FILTERS) + return environment.from_string(source=template_code).render(**context) diff --git a/netbox/utilities/utils.py b/netbox/utilities/utils.py index 77b17b756..183d78520 100644 --- a/netbox/utilities/utils.py +++ b/netbox/utilities/utils.py @@ -8,9 +8,7 @@ from django.http import QueryDict from django.utils import timezone from django.utils.datastructures import MultiValueDict from django.utils.timezone import localtime -from jinja2.sandbox import SandboxedEnvironment -from netbox.config import get_config from .string import title @@ -133,15 +131,6 @@ def drange(start, end, step=decimal.Decimal(1)): start += step -def render_jinja2(template_code, context): - """ - Render a Jinja2 template with the provided context. Return the rendered content. - """ - environment = SandboxedEnvironment() - environment.filters.update(get_config().JINJA2_FILTERS) - return environment.from_string(source=template_code).render(**context) - - def prepare_cloned_fields(instance): """ Generate a QueryDict comprising attributes from an object's clone() method.