From 13169fba864ea274cd609ec87a98a7da07be7866 Mon Sep 17 00:00:00 2001 From: musanaeem <110596170+musanaeem@users.noreply.github.com> Date: Sun, 27 Apr 2025 15:43:23 +0500 Subject: [PATCH] fix: updated json conversion to add custom values --- openedx/core/djangoapps/site_configuration/admin.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/openedx/core/djangoapps/site_configuration/admin.py b/openedx/core/djangoapps/site_configuration/admin.py index d6584eb6e7..e6a6c0e805 100644 --- a/openedx/core/djangoapps/site_configuration/admin.py +++ b/openedx/core/djangoapps/site_configuration/admin.py @@ -2,6 +2,7 @@ Django admin page for Site Configuration models """ from dal import autocomplete +import json from django import forms from django.urls import path @@ -42,7 +43,6 @@ class SiteConfigurationForm(forms.ModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - self.fields['site_values'].widget = forms.HiddenInput() current_values = self.instance.site_values or {} selected_labels = [] for label, mapping in FEATURE_FLAGS.items(): @@ -55,19 +55,23 @@ class SiteConfigurationForm(forms.ModelForm): def clean(self): cleaned = super().clean() - + current_site_values = json.loads(self.data.get('site_values', {})) selected_flags = self.data.getlist('feature_flags') if not isinstance(selected_flags, list): selected_flags = [selected_flags] if selected_flags else [] + flag_keys = {key for group in FEATURE_FLAGS.values() for key in group} + site_values = {} for label in selected_flags: site_values.update(FEATURE_FLAGS.get(label, {})) + for key, value in current_site_values.items(): + if key not in flag_keys: + site_values[key] = value + cleaned['feature_flags'] = selected_flags cleaned['site_values'] = site_values - # self.selected_flags = selected_flags - # self.site_values = site_values return cleaned