|
|
@ -8,6 +8,8 @@ from .models import GlobalPreferenceModel |
|
|
from .forms import GlobalSinglePreferenceForm, SinglePerInstancePreferenceForm |
|
|
from .forms import GlobalSinglePreferenceForm, SinglePerInstancePreferenceForm |
|
|
from django.utils.translation import gettext_lazy as _ |
|
|
from django.utils.translation import gettext_lazy as _ |
|
|
|
|
|
|
|
|
|
|
|
from unfold.admin import ModelAdmin, TabularInline |
|
|
|
|
|
from utils.admin import project_admin_site |
|
|
|
|
|
|
|
|
class SectionFilter(admin.AllValuesFieldListFilter): |
|
|
class SectionFilter(admin.AllValuesFieldListFilter): |
|
|
def __init__(self, field, request, params, model, model_admin, field_path): |
|
|
def __init__(self, field, request, params, model, model_admin, field_path): |
|
|
@ -40,7 +42,8 @@ class SectionFilter(admin.AllValuesFieldListFilter): |
|
|
yield choice |
|
|
yield choice |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class DynamicPreferenceAdmin(AjaxDatatable): |
|
|
|
|
|
|
|
|
# Change DynamicPreferenceAdmin to inherit from unfold's ModelAdmin |
|
|
|
|
|
class DynamicPreferenceAdmin(ModelAdmin): |
|
|
list_display = ( |
|
|
list_display = ( |
|
|
"verbose_name", |
|
|
"verbose_name", |
|
|
"help_text", |
|
|
"help_text", |
|
|
@ -48,7 +51,11 @@ class DynamicPreferenceAdmin(AjaxDatatable): |
|
|
fields = ("raw_value", "default_value",) |
|
|
fields = ("raw_value", "default_value",) |
|
|
readonly_fields = ("default_value",) |
|
|
readonly_fields = ("default_value",) |
|
|
change_form_template = "dynamic_preferences/dyna_change_form.html" |
|
|
change_form_template = "dynamic_preferences/dyna_change_form.html" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Unfold specific settings |
|
|
|
|
|
search_fields = ["name", "section"] |
|
|
|
|
|
list_filter = ["section"] |
|
|
|
|
|
|
|
|
@admin.display(description=_('Verbose name')) |
|
|
@admin.display(description=_('Verbose name')) |
|
|
def verbose_name(self, obj): |
|
|
def verbose_name(self, obj): |
|
|
return obj.verbose_name |
|
|
return obj.verbose_name |
|
|
@ -94,6 +101,21 @@ class DynamicPreferenceAdmin(AjaxDatatable): |
|
|
class GlobalPreferenceAdmin(DynamicPreferenceAdmin): |
|
|
class GlobalPreferenceAdmin(DynamicPreferenceAdmin): |
|
|
form = GlobalSinglePreferenceForm |
|
|
form = GlobalSinglePreferenceForm |
|
|
changelist_form = GlobalSinglePreferenceForm |
|
|
changelist_form = GlobalSinglePreferenceForm |
|
|
|
|
|
|
|
|
|
|
|
# Unfold specific customizations |
|
|
|
|
|
list_display_links = ["verbose_name"] |
|
|
|
|
|
|
|
|
|
|
|
# You can add unfold specific features like: |
|
|
|
|
|
show_facets = True # Enable faceted filtering |
|
|
|
|
|
|
|
|
|
|
|
# Optional: Add custom actions |
|
|
|
|
|
actions = ["reset_to_default"] |
|
|
|
|
|
|
|
|
|
|
|
def reset_to_default(self, request, queryset): |
|
|
|
|
|
for pref in queryset: |
|
|
|
|
|
manager = pref.registry.manager() |
|
|
|
|
|
manager.update_db_pref(pref.section, pref.name, pref.preference.default) |
|
|
|
|
|
reset_to_default.short_description = _("Reset selected preferences to default values") |
|
|
|
|
|
|
|
|
def get_queryset(self, *args, **kwargs): |
|
|
def get_queryset(self, *args, **kwargs): |
|
|
# Instanciate default prefs |
|
|
# Instanciate default prefs |
|
|
@ -102,7 +124,10 @@ class GlobalPreferenceAdmin(DynamicPreferenceAdmin): |
|
|
return super(GlobalPreferenceAdmin, self).get_queryset(*args, **kwargs) |
|
|
return super(GlobalPreferenceAdmin, self).get_queryset(*args, **kwargs) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
admin.site.register(GlobalPreferenceModel, GlobalPreferenceAdmin) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
project_admin_site.register(GlobalPreferenceModel, GlobalPreferenceAdmin) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class PerInstancePreferenceAdmin(DynamicPreferenceAdmin): |
|
|
class PerInstancePreferenceAdmin(DynamicPreferenceAdmin): |
|
|
@ -112,3 +137,4 @@ class PerInstancePreferenceAdmin(DynamicPreferenceAdmin): |
|
|
form = SinglePerInstancePreferenceForm |
|
|
form = SinglePerInstancePreferenceForm |
|
|
changelist_form = SinglePerInstancePreferenceForm |
|
|
changelist_form = SinglePerInstancePreferenceForm |
|
|
list_select_related = True |
|
|
list_select_related = True |
|
|
|
|
|
|