Skip to content

Commit

Permalink
Add custom filter to parse default value from dict to json
Browse files Browse the repository at this point in the history
  • Loading branch information
gXkch authored Dec 4, 2024
1 parent 31f182a commit e19bb1e
Showing 1 changed file with 16 additions and 2 deletions.
18 changes: 16 additions & 2 deletions service_catalog/models/tower_survey_field.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
from django.forms import SelectMultiple as FormsSelectMultiple
from django.forms import TextInput as FormsTextInput
from django.forms import Textarea as FormsTextarea
from jinja2 import Template
from jinja2 import Template, Environment
from jinja2.exceptions import UndefinedError
from rest_framework.serializers import CharField as DjangoRestCharField
from rest_framework.serializers import ChoiceField as DjangoRestChoiceField
Expand All @@ -27,9 +27,21 @@
from Squest.utils.squest_model import SquestModel
from resource_tracker_v2.models import AttributeDefinition
from service_catalog.models import Operation
import json

logger = logging.getLogger(__name__)

custom_filters = {
"to_json": lambda value: json.dumps(value, indent=2), # Convert to JSON
}

# Initialize Jinja2 environment
custom_env = Environment()

# Dynamically add filters
for filter_name, filter_func in custom_filters.items():
custom_env.filters[filter_name] = filter_func


def get_choices_as_tuples_list(choices, default=None):
if default is None:
Expand Down Expand Up @@ -83,7 +95,9 @@ def templating_default(self, instance, user):
default_value = self.field_options.get('default')
if self.default is None:
return default_value
template = Template(self.default)

# Use the custom environment to create a Template
template = custom_env.from_string(self.default)
from service_catalog.api.serializers import InstanceSerializer
from profiles.api.serializers import UserSerializer
context = {
Expand Down

0 comments on commit e19bb1e

Please sign in to comment.