diff options
| author | 2019-10-20 05:43:21 +1000 | |
|---|---|---|
| committer | 2019-10-20 05:43:21 +1000 | |
| commit | 618610fe367b0c8d6175d251c276c2e37db8aa52 (patch) | |
| tree | a9c343422b8111ace4bf71aa0203e19100d1b5ea /pydis_site | |
| parent | Add message log links, improved formatting to message deletion admin pages. (diff) | |
Order roles by positioning, add filters and search to api user admin page.
Diffstat (limited to 'pydis_site')
| -rw-r--r-- | pydis_site/apps/api/admin.py | 45 | ||||
| -rw-r--r-- | pydis_site/apps/api/models/bot/role.py | 5 | 
2 files changed, 48 insertions, 2 deletions
| diff --git a/pydis_site/apps/api/admin.py b/pydis_site/apps/api/admin.py index 6d6a9b3b..65cc0a6c 100644 --- a/pydis_site/apps/api/admin.py +++ b/pydis_site/apps/api/admin.py @@ -1,8 +1,9 @@  import json -from typing import Optional +from typing import Optional, Tuple  from django import urls  from django.contrib import admin +from django.db.models.query import QuerySet  from django.http import HttpRequest  from django.utils.html import format_html @@ -121,6 +122,46 @@ class MessageDeletionContextAdmin(admin.ModelAdmin):          ) +class StaffRolesFilter(admin.SimpleListFilter): +    """Filter options for Staff Roles.""" + +    title = "Staff Role" +    parameter_name = "staff_role" + +    @staticmethod +    def lookups(*_) -> Tuple[Tuple[str, str], ...]: +        """Available filter options.""" +        return ( +            ("Owners", "Owners"), +            ("Admins", "Admins"), +            ("Moderators", "Moderators"), +            ("Core Developers", "Core Developers"), +            ("Helpers", "Helpers"), +        ) + +    def queryset(self, request: HttpRequest, queryset: QuerySet) -> Optional[QuerySet]: +        """Returned data filter based on selected option.""" +        value = self.value() +        if value: +            return queryset.filter(roles__name=value) + + +class UserAdmin(admin.ModelAdmin): +    """Admin formatting for the User model.""" + +    search_fields = ("name", "id", "roles__name", "roles__id") +    list_filter = ("in_guild", StaffRolesFilter) +    exclude = ("name", "discriminator") +    readonly_fields = ( +        "__str__", +        "id", +        "avatar_hash", +        "top_role", +        "roles", +        "in_guild", +    ) + +  admin.site.register(BotSetting)  admin.site.register(DeletedMessage, DeletedMessageAdmin)  admin.site.register(DocumentationLink) @@ -131,4 +172,4 @@ admin.site.register(Nomination)  admin.site.register(OffTopicChannelName)  admin.site.register(Role)  admin.site.register(Tag) -admin.site.register(User) +admin.site.register(User, UserAdmin) diff --git a/pydis_site/apps/api/models/bot/role.py b/pydis_site/apps/api/models/bot/role.py index 58bbf8b4..b95740da 100644 --- a/pydis_site/apps/api/models/bot/role.py +++ b/pydis_site/apps/api/models/bot/role.py @@ -65,3 +65,8 @@ class Role(ModelReprMixin, models.Model):      def __le__(self, other: Role) -> bool:          """Compares the roles based on their position in the role hierarchy of the guild."""          return self.position <= other.position + +    class Meta: +        """Set role ordering from highest to lowest position.""" + +        ordering = ("-position",) | 
