Improve admin site

This commit is contained in:
ErikKalkoken 2020-02-06 18:51:52 +01:00
parent 458685026b
commit 2d24d064d5
4 changed files with 134 additions and 22 deletions

View File

@ -122,10 +122,9 @@ class MainCorporationsFilter(admin.SimpleListFilter):
parameter_name = 'main_corporations' parameter_name = 'main_corporations'
def lookups(self, request, model_admin): def lookups(self, request, model_admin):
qs = UserProfile.objects\ qs = EveCharacter.objects\
.exclude(main_character=None)\ .exclude(userprofile=None)\
.values(corporation_id=F('main_character__corporation_id'))\ .values('corporation_id', 'corporation_name')\
.annotate(corporation_name=F('main_character__corporation_name'))\
.distinct() .distinct()
return tuple([ return tuple([
(x['corporation_id'], x['corporation_name']) for x in qs (x['corporation_id'], x['corporation_name']) for x in qs
@ -145,11 +144,10 @@ class MainAllianceFilter(admin.SimpleListFilter):
parameter_name = 'main_alliances' parameter_name = 'main_alliances'
def lookups(self, request, model_admin): def lookups(self, request, model_admin):
qs = UserProfile.objects\ qs = EveCharacter.objects\
.exclude(main_character=None)\ .exclude(alliance_id=None)\
.exclude(main_character__alliance_id=None)\ .exclude(userprofile=None)\
.values(alliance_id=F('main_character__alliance_id'))\ .values('alliance_id', 'alliance_name')\
.annotate(alliance_name=F('main_character__alliance_name'))\
.distinct() .distinct()
return tuple([ return tuple([
(x['alliance_id'], x['alliance_name']) for x in qs (x['alliance_id'], x['alliance_name']) for x in qs

View File

@ -52,6 +52,7 @@ class GroupAdmin(admin.ModelAdmin):
'authgroup__open', 'authgroup__open',
'authgroup__public' 'authgroup__public'
) )
search_fields = ('name', 'authgroup__description')
filter_horizontal = ('permissions',) filter_horizontal = ('permissions',)
inlines = (AuthGroupInlineAdmin,) inlines = (AuthGroupInlineAdmin,)
@ -83,12 +84,15 @@ class GroupAdmin(admin.ModelAdmin):
def _properties(self, obj): def _properties(self, obj):
properties = list() properties = list()
if obj.authgroup.hidden: if obj.authgroup.internal:
properties.append('Hidden') properties.append('Internal')
if obj.authgroup.open: else:
properties.append('Open') if obj.authgroup.hidden:
if obj.authgroup.public: properties.append('Hidden')
properties.append('Public') if obj.authgroup.open:
properties.append('Open')
if obj.authgroup.public:
properties.append('Public')
if not properties: if not properties:
properties.append('Default') properties.append('Default')

View File

@ -1,7 +1,56 @@
from django.contrib import admin from django.contrib import admin
from allianceauth.eveonline.models import EveCharacter
from .models import DiscordUser from .models import DiscordUser
class MainCorporationsFilter(admin.SimpleListFilter):
"""Custom filter to show corporations from service users only"""
title = 'corporation'
parameter_name = 'main_corporations'
def lookups(self, request, model_admin):
qs = EveCharacter.objects\
.exclude(userprofile=None)\
.exclude(userprofile__user__discord=None)\
.values('corporation_id', 'corporation_name')\
.distinct()
return tuple([
(x['corporation_id'], x['corporation_name']) for x in qs
])
def queryset(self, request, queryset):
if self.value() is None:
return queryset.all()
else:
return queryset\
.filter(user__profile__main_character__corporation_id=self.value())
class MainAllianceFilter(admin.SimpleListFilter):
"""Custom filter to show alliances from service users only"""
title = 'alliance'
parameter_name = 'main_alliances'
def lookups(self, request, model_admin):
qs = EveCharacter.objects\
.exclude(alliance_id=None)\
.exclude(userprofile=None)\
.exclude(userprofile__user__discord=None)\
.values('alliance_id', 'alliance_name')\
.distinct()
return tuple([
(x['alliance_id'], x['alliance_name']) for x in qs
])
def queryset(self, request, queryset):
if self.value() is None:
return queryset.all()
else:
return queryset\
.filter(user__profile__main_character__alliance_id=self.value())
class DiscordUserAdmin(admin.ModelAdmin): class DiscordUserAdmin(admin.ModelAdmin):
ordering = ('user__username', ) ordering = ('user__username', )
list_select_related = True list_select_related = True
@ -18,8 +67,8 @@ class DiscordUserAdmin(admin.ModelAdmin):
'uid' 'uid'
) )
list_filter = ( list_filter = (
'user__profile__main_character__corporation_name', MainCorporationsFilter,
'user__profile__main_character__alliance_name', MainAllianceFilter,
'user__date_joined', 'user__date_joined',
) )

View File

@ -1,7 +1,56 @@
from django.contrib import admin from django.contrib import admin
from allianceauth.eveonline.models import EveCharacter
from .models import AuthTS, Teamspeak3User, StateGroup from .models import AuthTS, Teamspeak3User, StateGroup
class MainCorporationsFilter(admin.SimpleListFilter):
"""Custom filter to show corporations from service users only"""
title = 'corporation'
parameter_name = 'main_corporations'
def lookups(self, request, model_admin):
qs = EveCharacter.objects\
.exclude(userprofile=None)\
.exclude(userprofile__user__teamspeak3=None)\
.values('corporation_id', 'corporation_name')\
.distinct()
return tuple([
(x['corporation_id'], x['corporation_name']) for x in qs
])
def queryset(self, request, queryset):
if self.value() is None:
return queryset.all()
else:
return queryset\
.filter(user__profile__main_character__corporation_id=self.value())
class MainAllianceFilter(admin.SimpleListFilter):
"""Custom filter to show alliances from service users only"""
title = 'alliance'
parameter_name = 'main_alliances'
def lookups(self, request, model_admin):
qs = EveCharacter.objects\
.exclude(alliance_id=None)\
.exclude(userprofile=None)\
.exclude(userprofile__user__teamspeak3=None)\
.values('alliance_id', 'alliance_name')\
.distinct()
return tuple([
(x['alliance_id'], x['alliance_name']) for x in qs
])
def queryset(self, request, queryset):
if self.value() is None:
return queryset.all()
else:
return queryset\
.filter(user__profile__main_character__alliance_id=self.value())
class Teamspeak3UserAdmin(admin.ModelAdmin): class Teamspeak3UserAdmin(admin.ModelAdmin):
ordering = ('user__username', ) ordering = ('user__username', )
list_select_related = True list_select_related = True
@ -20,8 +69,8 @@ class Teamspeak3UserAdmin(admin.ModelAdmin):
'perm_key' 'perm_key'
) )
list_filter = ( list_filter = (
'user__profile__main_character__corporation_name', MainCorporationsFilter,
'user__profile__main_character__alliance_name', MainAllianceFilter,
'user__date_joined', 'user__date_joined',
) )
@ -57,9 +106,21 @@ class Teamspeak3UserAdmin(admin.ModelAdmin):
class AuthTSgroupAdmin(admin.ModelAdmin): class AuthTSgroupAdmin(admin.ModelAdmin):
fields = ['auth_group', 'ts_group'] ordering = ('auth_group__name', )
list_select_related = True
list_display = ('auth_group', '_ts_group')
list_filter = ('ts_group', )
fields = ('auth_group', 'ts_group')
filter_horizontal = ('ts_group',) filter_horizontal = ('ts_group',)
def _ts_group(self, obj):
return [x for x in obj.ts_group.all().order_by('ts_group_id')]
_ts_group.short_description = 'ts groups'
#_ts_group.admin_order_field = 'profile__state'
@admin.register(StateGroup) @admin.register(StateGroup)
class StateGroupAdmin(admin.ModelAdmin): class StateGroupAdmin(admin.ModelAdmin):