From a576c5b5ed716b8068c02914fd47f38473610590 Mon Sep 17 00:00:00 2001 From: Michael Manfre Date: Thu, 8 Dec 2022 12:29:51 -0500 Subject: Improve djadmin filtering and search (#149) --- core/admin.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'core') 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,) -- cgit v1.2.3