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

View File

@ -52,7 +52,8 @@ class GroupAdmin(admin.ModelAdmin):
'authgroup__open',
'authgroup__public'
)
search_fields = ('name', 'authgroup__description')
filter_horizontal = ('permissions',)
inlines = (AuthGroupInlineAdmin,)
@ -83,12 +84,15 @@ class GroupAdmin(admin.ModelAdmin):
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 obj.authgroup.internal:
properties.append('Internal')
else:
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')

View File

@ -1,7 +1,56 @@
from django.contrib import admin
from allianceauth.eveonline.models import EveCharacter
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):
ordering = ('user__username', )
list_select_related = True
@ -17,9 +66,9 @@ class DiscordUserAdmin(admin.ModelAdmin):
'user__username',
'uid'
)
list_filter = (
'user__profile__main_character__corporation_name',
'user__profile__main_character__alliance_name',
list_filter = (
MainCorporationsFilter,
MainAllianceFilter,
'user__date_joined',
)

View File

@ -1,7 +1,56 @@
from django.contrib import admin
from allianceauth.eveonline.models import EveCharacter
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):
ordering = ('user__username', )
list_select_related = True
@ -20,8 +69,8 @@ class Teamspeak3UserAdmin(admin.ModelAdmin):
'perm_key'
)
list_filter = (
'user__profile__main_character__corporation_name',
'user__profile__main_character__alliance_name',
MainCorporationsFilter,
MainAllianceFilter,
'user__date_joined',
)
@ -57,9 +106,21 @@ class Teamspeak3UserAdmin(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',)
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)
class StateGroupAdmin(admin.ModelAdmin):