diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/admin.py | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/core/admin.py b/core/admin.py index e4a6ad0..a319816 100644 --- a/core/admin.py +++ b/core/admin.py @@ -1,8 +1,33 @@ from django.contrib import admin +from django.utils.translation import gettext_lazy as _ from core.models import Config +class ConfigOptionsTypeFilter(admin.SimpleListFilter): + title = _("config options type") + parameter_name = "type" + + def lookups(self, request, model_admin): + return ( + ("system", _("System")), + ("identity", _("Identity")), + ("user", _("User")), + ) + + def queryset(self, request, queryset): + match self.value(): + case "system": + return queryset.filter(user__isnull=True, identity__isnull=True) + case "identity": + return queryset.exclude(identity__isnull=True) + case "user": + return queryset.exclude(user__isnull=True) + case _: + return queryset + + @admin.register(Config) class ConfigAdmin(admin.ModelAdmin): list_display = ["id", "key", "user", "identity"] + list_filter = (ConfigOptionsTypeFilter,) |