diff options
| author | 2020-09-18 15:22:48 +1000 | |
|---|---|---|
| committer | 2020-09-18 15:22:48 +1000 | |
| commit | 8af9e190f69484efb5fe3b5910a9125738e0ee84 (patch) | |
| tree | 2cf698dd2355becbc2c1b4afae6879253968e7cd /pydis_site | |
| parent | Add DocumentationLink and BotSetting Admin models. (diff) | |
Declutter Infraction admin list, add actor list filter.
Diffstat (limited to 'pydis_site')
| -rw-r--r-- | pydis_site/apps/api/admin.py | 30 | 
1 files changed, 25 insertions, 5 deletions
diff --git a/pydis_site/apps/api/admin.py b/pydis_site/apps/api/admin.py index 7b571005..ff9afc46 100644 --- a/pydis_site/apps/api/admin.py +++ b/pydis_site/apps/api/admin.py @@ -49,6 +49,25 @@ class DocumentationLinkAdmin(admin.ModelAdmin):      search_fields = ("package",) +class InfractionActorFilter(admin.SimpleListFilter): +    """Actor Filter for Infraction Admin list page.""" + +    title = "Actor" +    parameter_name = "actor" + +    def lookups(self, request: HttpRequest, model: NominationAdmin) -> Iterable[Tuple[int, str]]: +        """Selectable values for viewer to filter by.""" +        actor_ids = Infraction.objects.order_by().values_list("actor").distinct() +        actors = User.objects.filter(id__in=actor_ids) +        return ((a.id, a.username) for a in actors) + +    def queryset(self, request: HttpRequest, queryset: QuerySet) -> Optional[QuerySet]: +        """Query to filter the list of Users against.""" +        if not self.value(): +            return +        return queryset.filter(actor__id=self.value()) + +  @admin.register(Infraction)  class InfractionAdmin(admin.ModelAdmin):      """Admin formatting for the Infraction model.""" @@ -67,16 +86,16 @@ class InfractionAdmin(admin.ModelAdmin):          "user",          "actor",          "type", -        "inserted_at" +        "inserted_at", +        "active", +        "hidden"      )      list_display = (          "type", +        "active",          "user", -        "actor",          "inserted_at", -        "expires_at",          "reason", -        "active",      )      search_fields = (          "id", @@ -90,7 +109,8 @@ class InfractionAdmin(admin.ModelAdmin):      list_filter = (          "type",          "hidden", -        "active" +        "active", +        InfractionActorFilter      )      def has_add_permission(self, *args) -> bool:  |