fix: Remove complex change

This commit is contained in:
musanaeem
2025-04-28 02:49:54 +05:00
committed by awais qureshi
parent 13169fba86
commit d7eea9d37a
2 changed files with 0 additions and 86 deletions

View File

@@ -1,85 +1,16 @@
"""
Django admin page for Site Configuration models
"""
from dal import autocomplete
import json
from django import forms
from django.urls import path
from django.utils.translation import gettext_lazy as _
from django.contrib import admin
from .constants import FEATURE_FLAGS
from .models import SiteConfiguration, SiteConfigurationHistory
class FeatureFlagAutocomplete(autocomplete.Select2ListView):
def get_list(self):
return list(FEATURE_FLAGS.keys())
def get_result_label(self, item):
return item
def get_result_value(self, item):
return item
class SiteConfigurationForm(forms.ModelForm):
feature_flags = forms.Field(
required=False,
widget=autocomplete.Select2Multiple(
url='admin:feature-flag-autocomplete',
attrs={
'multiple': 'multiple',
'data-tags': 'true',
'data-placeholder': 'Select features'
}
),
label="Enabled Features",
)
class Meta:
model = SiteConfiguration
fields = '__all__'
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
current_values = self.instance.site_values or {}
selected_labels = []
for label, mapping in FEATURE_FLAGS.items():
if all(current_values.get(k) == v for k, v in mapping.items()):
selected_labels.append(label)
self.fields['feature_flags'].initial = selected_labels
self.fields['feature_flags'].widget.choices = [(v, v) for v in selected_labels]
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
return cleaned
class SiteConfigurationAdmin(admin.ModelAdmin):
"""
Admin interface for the SiteConfiguration object.
"""
form = SiteConfigurationForm
list_display = ('site', 'enabled', 'site_values')
search_fields = ('site__domain', 'site_values')
@@ -89,17 +20,6 @@ class SiteConfigurationAdmin(admin.ModelAdmin):
"""
model = SiteConfiguration
def get_urls(self):
urls = super().get_urls()
custom_urls = [
path(
'feature-flag-autocomplete/',
FeatureFlagAutocomplete.as_view(),
name='feature-flag-autocomplete'
),
]
return custom_urls + urls
admin.site.register(SiteConfiguration, SiteConfigurationAdmin)

View File

@@ -1,6 +0,0 @@
# TODO: Dummy Tags to be replaced by real values
FEATURE_FLAGS = {
'Forum Notifications': {'enable_forum_notifications': True},
'Live Chat': {'enable_live_chat': True},
'Dark Mode': {'enable_dark_mode': True},
}