From 458685026b1dcfb52564c784398c617502140589 Mon Sep 17 00:00:00 2001 From: ErikKalkoken Date: Thu, 6 Feb 2020 03:04:30 +0100 Subject: [PATCH] Add fields to discord and ts3 admin --- allianceauth/authentication/admin.py | 28 +++--- allianceauth/groupmanagement/admin.py | 90 +++++++------------ .../services/modules/discord/admin.py | 52 ++++++++++- .../services/modules/teamspeak3/admin.py | 55 +++++++++++- 4 files changed, 143 insertions(+), 82 deletions(-) diff --git a/allianceauth/authentication/admin.py b/allianceauth/authentication/admin.py index 47772d18..03263aef 100644 --- a/allianceauth/authentication/admin.py +++ b/allianceauth/authentication/admin.py @@ -189,12 +189,13 @@ class UserAdmin(BaseUserAdmin): inlines = BaseUserAdmin.inlines + [UserProfileInline] + ordering = ('username', ) list_select_related = True show_full_result_count = True list_display = ( '_profile_pic', - '_username', + '_user', '_state', '_groups', '_main_organization', @@ -234,7 +235,7 @@ class UserAdmin(BaseUserAdmin): _profile_pic.short_description = '' - def _username(self, obj): + def _user(self, obj): #/admin////change/ link = '/admin/authentication/{}/{}/change/'.format( type(obj).__name__.lower(), @@ -244,11 +245,12 @@ class UserAdmin(BaseUserAdmin): '{}
{}', link, obj.username, - obj.email + obj.profile.main_character.character_name \ + if obj.profile.main_character else '' ) - _username.short_description = 'user' - _username.admin_order_field = 'username' + _user.short_description = 'user / main' + _user.admin_order_field = 'username' def _main_organization(self, obj): if obj.profile.main_character: @@ -272,22 +274,12 @@ class UserAdmin(BaseUserAdmin): def _characters(self, obj): - alts = [ + return [ x.character.character_name for x in CharacterOwnership.objects\ .filter(user=obj)\ .order_by('character__character_name') - .exclude(character=obj.profile.main_character) - ] - if obj.profile.main_character: - result = [ - '{}'.format( - obj.profile.main_character.character_name - ) - ] - else: - result = [] - return format_html(', '.join(result + alts)) + ] _characters.short_description = 'characters' @@ -372,7 +364,7 @@ class StateAdmin(admin.ModelAdmin): class BaseOwnershipAdmin(admin.ModelAdmin): list_display = ('user', 'character') - search_fields = ('user__username', 'character__character_name', 'character__corporation_name', 'character__alliance_name') + search_fields = ('user__user', 'character__character_name', 'character__corporation_name', 'character__alliance_name') def get_readonly_fields(self, request, obj=None): if obj and obj.pk: diff --git a/allianceauth/groupmanagement/admin.py b/allianceauth/groupmanagement/admin.py index 48969d08..59c05716 100644 --- a/allianceauth/groupmanagement/admin.py +++ b/allianceauth/groupmanagement/admin.py @@ -35,95 +35,67 @@ class AuthGroupInlineAdmin(admin.StackedInline): return request.user.has_perm('auth.change_group') -if _has_auto_groups: - class IsAutoGroupFilter(admin.SimpleListFilter): - title = 'auto group' - parameter_name = 'auto_group' - - def lookups(self, request, model_admin): - return ( - ('Yes', 'Yes'), - ('No', 'No'), - ) - - def queryset(self, request, queryset): - value = self.value() - if value == 'Yes': - return queryset.exclude( - managedalliancegroup__exact=None, - managedcorpgroup__exact=None - ) - elif value == 'No': - return queryset.filter(managedalliancegroup__exact=None).filter(managedcorpgroup__exact=None) - else: - return queryset - - -class GroupAdmin(admin.ModelAdmin): +class GroupAdmin(admin.ModelAdmin): list_select_related = True + ordering = ('name', ) list_display = ( 'name', 'description', - 'member_count', - 'has_leader', - '_attributes' + '_properties', + '_member_count', + 'has_leader' ) list_filter = ( 'authgroup__internal', 'authgroup__hidden', 'authgroup__open', - 'authgroup__public', - IsAutoGroupFilter + 'authgroup__public' ) filter_horizontal = ('permissions',) inlines = (AuthGroupInlineAdmin,) def get_queryset(self, request): - queryset = super().get_queryset(request) - queryset = queryset.annotate( - _member_count=Count('user', distinct=True), + qs = super().get_queryset(request) + if _has_auto_groups: + qs = qs\ + .filter(managedalliancegroup__exact=None)\ + .filter(managedcorpgroup__exact=None) + qs = qs.annotate( + member_count=Count('user', distinct=True), ) - return queryset + return qs def description(self, obj): return obj.authgroup.description - def member_count(self, obj): - return obj._member_count + def _member_count(self, obj): + return obj.member_count - member_count.admin_order_field = '_member_count' + _member_count.short_description = 'Members' + _member_count.admin_order_field = 'member_count' def has_leader(self, obj): return obj.authgroup.group_leaders.exists() has_leader.boolean = True - def _attributes(self, obj): - attributes = list() - if (_has_auto_groups - and ( - obj.managedalliancegroup_set.exists() - or obj.managedcorpgroup_set.exists() - ) - ): - attributes.append('Auto Group') - elif obj.authgroup.internal: - attributes.append('Internal') - else: - if obj.authgroup.hidden: - attributes.append('Hidden') - if obj.authgroup.open: - attributes.append('Open') - if obj.authgroup.public: - attributes.append('Public') - if not attributes: - attributes.append('Default') + def _properties(self, obj): + properties = list() + if obj.authgroup.hidden: + properties.append('Hidden') + if obj.authgroup.open: + properties.append('Open') + if obj.authgroup.public: + properties.append('Public') + if not properties: + properties.append('Default') - return ', '.join(attributes) + return ', '.join(properties) + + _properties.short_description = "properties" - _attributes.short_description = "Attributes" class Group(BaseGroup): class Meta: diff --git a/allianceauth/services/modules/discord/admin.py b/allianceauth/services/modules/discord/admin.py index 1f47945d..bdcdb62a 100644 --- a/allianceauth/services/modules/discord/admin.py +++ b/allianceauth/services/modules/discord/admin.py @@ -3,7 +3,55 @@ from .models import DiscordUser class DiscordUserAdmin(admin.ModelAdmin): - list_display = ('user', 'uid') - search_fields = ('user__username', 'uid') + ordering = ('user__username', ) + list_select_related = True + + list_display = ( + 'user', + 'uid', + '_corporation', + '_alliance', + '_date_joined' + ) + search_fields = ( + 'user__username', + 'uid' + ) + list_filter = ( + 'user__profile__main_character__corporation_name', + 'user__profile__main_character__alliance_name', + 'user__date_joined', + ) + + def _corporation(self, obj): + if obj.user.profile.main_character: + return obj.user.profile.main_character.corporation_name + else: + return '' + + _corporation.short_description = 'corporation (main)' + _corporation.admin_order_field \ + = 'user__profile__main_character__corporation_name' + + + def _alliance(self, obj): + if (obj.user.profile.main_character + and obj.user.profile.main_character.alliance_id + ): + return obj.user.profile.main_character.alliance_name + else: + return '' + + _alliance.short_description = 'alliance (main)' + _alliance.admin_order_field \ + = 'user__profile__main_character__alliance_name' + + + def _date_joined(self, obj): + return obj.user.date_joined + + _date_joined.short_description = 'date joined' + _date_joined.admin_order_field = 'user__date_joined' + admin.site.register(DiscordUser, DiscordUserAdmin) diff --git a/allianceauth/services/modules/teamspeak3/admin.py b/allianceauth/services/modules/teamspeak3/admin.py index ffde6642..c3cc2403 100644 --- a/allianceauth/services/modules/teamspeak3/admin.py +++ b/allianceauth/services/modules/teamspeak3/admin.py @@ -2,9 +2,58 @@ from django.contrib import admin from .models import AuthTS, Teamspeak3User, StateGroup -class Teamspeak3UserAdmin(admin.ModelAdmin): - list_display = ('user', 'uid', 'perm_key') - search_fields = ('user__username', 'uid', 'perm_key') +class Teamspeak3UserAdmin(admin.ModelAdmin): + ordering = ('user__username', ) + list_select_related = True + + list_display = ( + 'user', + 'uid', + '_corporation', + '_alliance', + '_date_joined', + 'perm_key', + ) + search_fields = ( + 'user__username', + 'uid', + 'perm_key' + ) + list_filter = ( + 'user__profile__main_character__corporation_name', + 'user__profile__main_character__alliance_name', + 'user__date_joined', + ) + + def _corporation(self, obj): + if obj.user.profile.main_character: + return obj.user.profile.main_character.corporation_name + else: + return '' + + _corporation.short_description = 'corporation (main)' + _corporation.admin_order_field \ + = 'user__profile__main_character__corporation_name' + + + def _alliance(self, obj): + if (obj.user.profile.main_character + and obj.user.profile.main_character.alliance_id + ): + return obj.user.profile.main_character.alliance_name + else: + return '' + + _alliance.short_description = 'alliance (main)' + _alliance.admin_order_field \ + = 'user__profile__main_character__alliance_name' + + + def _date_joined(self, obj): + return obj.user.date_joined + + _date_joined.short_description = 'date joined' + _date_joined.admin_order_field = 'user__date_joined' class AuthTSgroupAdmin(admin.ModelAdmin):