mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-12 14:00:17 +02:00
Move common service user list features into central admin class
This commit is contained in:
parent
0caac20d77
commit
3f4dfe9b0b
@ -1,9 +1,147 @@
|
||||
from django.contrib import admin
|
||||
from django import forms
|
||||
from django.contrib import admin
|
||||
from django.db.models.functions import Lower
|
||||
from django.utils.html import format_html
|
||||
|
||||
from allianceauth import hooks
|
||||
from allianceauth.eveonline.models import EveCharacter
|
||||
|
||||
from .models import NameFormatConfig
|
||||
|
||||
|
||||
class MainCorporationsFilter(admin.SimpleListFilter):
|
||||
"""Custom filter to show corporations from service users only
|
||||
To be used together with ServicesUserAdmin class
|
||||
"""
|
||||
title = 'corporation'
|
||||
parameter_name = 'main_corporations'
|
||||
|
||||
def lookups(self, request, model_admin):
|
||||
qs = EveCharacter.objects\
|
||||
.exclude(userprofile=None)\
|
||||
.values('corporation_id', 'corporation_name')\
|
||||
.distinct()\
|
||||
.order_by(Lower('corporation_name'))
|
||||
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
|
||||
To be used together with ServicesUserAdmin class
|
||||
"""
|
||||
title = 'alliance'
|
||||
parameter_name = 'main_alliances'
|
||||
|
||||
def lookups(self, request, model_admin):
|
||||
qs = EveCharacter.objects\
|
||||
.exclude(alliance_id=None)\
|
||||
.exclude(userprofile=None)\
|
||||
.values('alliance_id', 'alliance_name')\
|
||||
.distinct()\
|
||||
.order_by(Lower('alliance_name'))
|
||||
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 ServicesUserAdmin(admin.ModelAdmin):
|
||||
"""Parent class for UserAdmin classes for all services"""
|
||||
class Media:
|
||||
css = {
|
||||
"all": ("services/admin.css",)
|
||||
}
|
||||
|
||||
search_fields = (
|
||||
'user__username',
|
||||
'uid'
|
||||
)
|
||||
ordering = ('user__username', )
|
||||
list_select_related = True
|
||||
list_display = (
|
||||
'_profile_pic',
|
||||
'_user',
|
||||
'_main_organization',
|
||||
'_date_joined'
|
||||
)
|
||||
list_filter = (
|
||||
MainCorporationsFilter,
|
||||
MainAllianceFilter,
|
||||
'user__date_joined'
|
||||
)
|
||||
|
||||
def _profile_pic(self, obj):
|
||||
if obj.user.profile.main_character:
|
||||
return format_html(
|
||||
'<img src="{}" class="img-circle">',
|
||||
obj.user.profile.main_character.portrait_url(size=32)
|
||||
)
|
||||
else:
|
||||
return ''
|
||||
_profile_pic.short_description = ''
|
||||
|
||||
|
||||
def _user(self, obj):
|
||||
link = '/admin/{}/{}/{}/change/'.format(
|
||||
__package__.rsplit('.', 1)[-1],
|
||||
type(obj).__name__.lower(),
|
||||
obj.pk
|
||||
)
|
||||
return format_html(
|
||||
'<strong><a href="{}">{}</a></strong><br>{}',
|
||||
link,
|
||||
obj.user.username,
|
||||
obj.user.profile.main_character.character_name \
|
||||
if obj.user.profile.main_character else ''
|
||||
)
|
||||
|
||||
_user.short_description = 'user / main'
|
||||
_user.admin_order_field = 'user__username'
|
||||
|
||||
|
||||
def _main_organization(self, obj):
|
||||
if obj.user.profile.main_character:
|
||||
corporation = obj.user.profile.main_character.corporation_name
|
||||
else:
|
||||
corporation = ''
|
||||
if (obj.user.profile.main_character
|
||||
and obj.user.profile.main_character.alliance_id
|
||||
):
|
||||
alliance = obj.user.profile.main_character.alliance_name
|
||||
else:
|
||||
alliance = ''
|
||||
return format_html('{}<br>{}',
|
||||
corporation,
|
||||
alliance
|
||||
)
|
||||
|
||||
_main_organization.short_description = 'Corporation / Alliance (Main)'
|
||||
_main_organization.admin_order_field = \
|
||||
'profile__main_character__corporation_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 NameFormatConfigForm(forms.ModelForm):
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(NameFormatConfigForm, self).__init__(*args, **kwargs)
|
||||
|
@ -1,113 +1,13 @@
|
||||
from django.contrib import admin
|
||||
from django.db.models.functions import Lower
|
||||
from django.utils.html import format_html
|
||||
|
||||
from allianceauth.eveonline.models import EveCharacter
|
||||
|
||||
from .models import DiscordUser
|
||||
from ...admin import ServicesUserAdmin
|
||||
|
||||
|
||||
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)\
|
||||
.values('corporation_id', 'corporation_name')\
|
||||
.distinct()\
|
||||
.order_by(Lower('corporation_name'))
|
||||
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)\
|
||||
.values('alliance_id', 'alliance_name')\
|
||||
.distinct()\
|
||||
.order_by(Lower('alliance_name'))
|
||||
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 Media:
|
||||
css = {
|
||||
"all": ("services/discord/admin.css",)
|
||||
}
|
||||
|
||||
ordering = ('user__username', )
|
||||
list_select_related = True
|
||||
|
||||
list_display = (
|
||||
'_profile_pic',
|
||||
'_user',
|
||||
class DiscordUserAdmin(ServicesUserAdmin):
|
||||
list_display = ServicesUserAdmin.list_display + (
|
||||
'_uid',
|
||||
'_main_organization',
|
||||
'_date_joined'
|
||||
)
|
||||
search_fields = (
|
||||
'user__username',
|
||||
'uid'
|
||||
)
|
||||
list_filter = (
|
||||
MainCorporationsFilter,
|
||||
MainAllianceFilter,
|
||||
'user__date_joined',
|
||||
)
|
||||
|
||||
def _profile_pic(self, obj):
|
||||
if obj.user.profile.main_character:
|
||||
return format_html(
|
||||
'<img src="{}" class="img-circle">',
|
||||
obj.user.profile.main_character.portrait_url(size=32)
|
||||
)
|
||||
else:
|
||||
return ''
|
||||
_profile_pic.short_description = ''
|
||||
|
||||
|
||||
def _user(self, obj):
|
||||
link = '/admin/{}/{}/{}/change/'.format(
|
||||
__package__.rsplit('.', 1)[-1],
|
||||
type(obj).__name__.lower(),
|
||||
obj.pk
|
||||
)
|
||||
return format_html(
|
||||
'<strong><a href="{}">{}</a></strong><br>{}',
|
||||
link,
|
||||
obj.user.username,
|
||||
obj.user.profile.main_character.character_name \
|
||||
if obj.user.profile.main_character else ''
|
||||
)
|
||||
|
||||
_user.short_description = 'user / main'
|
||||
_user.admin_order_field = 'user__username'
|
||||
|
||||
|
||||
def _uid(self, obj):
|
||||
return obj.uid
|
||||
@ -116,32 +16,4 @@ class DiscordUserAdmin(admin.ModelAdmin):
|
||||
_uid.admin_order_field = 'uid'
|
||||
|
||||
|
||||
def _main_organization(self, obj):
|
||||
if obj.user.profile.main_character:
|
||||
corporation = obj.user.profile.main_character.corporation_name
|
||||
else:
|
||||
corporation = ''
|
||||
if (obj.user.profile.main_character
|
||||
and obj.user.profile.main_character.alliance_id
|
||||
):
|
||||
alliance = obj.user.profile.main_character.alliance_name
|
||||
else:
|
||||
alliance = ''
|
||||
return format_html('{}<br>{}',
|
||||
corporation,
|
||||
alliance
|
||||
)
|
||||
|
||||
_main_organization.short_description = 'Corporation / Alliance (Main)'
|
||||
_main_organization.admin_order_field = \
|
||||
'profile__main_character__corporation_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)
|
||||
|
@ -1,114 +1,20 @@
|
||||
from django.contrib import admin
|
||||
from django.db.models.functions import Lower
|
||||
from allianceauth.eveonline.models import EveCharacter
|
||||
|
||||
from .models import MumbleUser
|
||||
from ...admin import ServicesUserAdmin
|
||||
|
||||
|
||||
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__mumble=None)\
|
||||
.values('corporation_id', 'corporation_name')\
|
||||
.distinct()\
|
||||
.order_by(Lower('corporation_name'))
|
||||
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__mumble=None)\
|
||||
.values('alliance_id', 'alliance_name')\
|
||||
.distinct()\
|
||||
.order_by(Lower('alliance_name'))
|
||||
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 MumbleUserAdmin(admin.ModelAdmin):
|
||||
ordering = ('user__username', )
|
||||
list_select_related = True
|
||||
|
||||
list_display = (
|
||||
'user',
|
||||
class MumbleUserAdmin(ServicesUserAdmin):
|
||||
list_display = ServicesUserAdmin.list_display + (
|
||||
'username',
|
||||
'groups',
|
||||
'_corporation',
|
||||
'_alliance',
|
||||
'_date_joined'
|
||||
)
|
||||
search_fields = (
|
||||
'user__username',
|
||||
search_fields = ServicesUserAdmin.search_fields + (
|
||||
'username',
|
||||
'groups'
|
||||
)
|
||||
|
||||
list_filter = (
|
||||
MainCorporationsFilter,
|
||||
MainAllianceFilter,
|
||||
'user__date_joined',
|
||||
)
|
||||
|
||||
fields = ('user', 'username', 'groups') # pwhash is hidden from admin panel
|
||||
|
||||
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(MumbleUser, MumbleUserAdmin)
|
||||
|
@ -1,111 +1,14 @@
|
||||
from django.contrib import admin
|
||||
from django.db.models.functions import Lower
|
||||
from allianceauth.eveonline.models import EveCharacter
|
||||
|
||||
from .models import AuthTS, Teamspeak3User, StateGroup
|
||||
from ...admin import ServicesUserAdmin
|
||||
|
||||
|
||||
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()\
|
||||
.order_by(Lower('corporation_name'))
|
||||
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()\
|
||||
.order_by(Lower('alliance_name'))
|
||||
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
|
||||
|
||||
list_display = (
|
||||
'user',
|
||||
'uid',
|
||||
'_corporation',
|
||||
'_alliance',
|
||||
'_date_joined',
|
||||
'perm_key',
|
||||
)
|
||||
search_fields = (
|
||||
'user__username',
|
||||
class Teamspeak3UserAdmin(ServicesUserAdmin):
|
||||
list_display = ServicesUserAdmin.list_display + (
|
||||
'uid',
|
||||
'perm_key'
|
||||
)
|
||||
list_filter = (
|
||||
MainCorporationsFilter,
|
||||
MainAllianceFilter,
|
||||
'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):
|
||||
|
Loading…
x
Reference in New Issue
Block a user