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,) | 
