mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-11 21:40:17 +02:00
Adopt all services user and auth user lists to new format
This commit is contained in:
parent
3f4dfe9b0b
commit
c1388bf23f
@ -12,6 +12,7 @@ from django.db.models.functions import Lower
|
|||||||
from django.dispatch import receiver
|
from django.dispatch import receiver
|
||||||
from django.forms import ModelForm
|
from django.forms import ModelForm
|
||||||
from django.utils.html import format_html
|
from django.utils.html import format_html
|
||||||
|
from django.urls import reverse
|
||||||
from django.utils.text import slugify
|
from django.utils.text import slugify
|
||||||
|
|
||||||
from allianceauth.authentication.models import State, get_guest_state,\
|
from allianceauth.authentication.models import State, get_guest_state,\
|
||||||
@ -99,102 +100,6 @@ class UserProfileInline(admin.StackedInline):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
class RealGroupsFilter(admin.SimpleListFilter):
|
|
||||||
"""Custom filter to get groups w/o Autogroups"""
|
|
||||||
title = 'group'
|
|
||||||
parameter_name = 'real_groups'
|
|
||||||
|
|
||||||
def lookups(self, request, model_admin):
|
|
||||||
qs = Group.objects.all().order_by(Lower('name'))
|
|
||||||
if _has_auto_groups:
|
|
||||||
qs = qs\
|
|
||||||
.filter(managedalliancegroup__exact=None)\
|
|
||||||
.filter(managedcorpgroup__exact=None)
|
|
||||||
return tuple([(x.pk, x.name) for x in qs])
|
|
||||||
|
|
||||||
def queryset(self, request, queryset):
|
|
||||||
if self.value() is None:
|
|
||||||
return queryset.all()
|
|
||||||
else:
|
|
||||||
return queryset.filter(groups__pk=self.value())
|
|
||||||
|
|
||||||
|
|
||||||
class MainCorporationsFilter(admin.SimpleListFilter):
|
|
||||||
"""Custom filter to show corporations from mains 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(profile__main_character__corporation_id=self.value())
|
|
||||||
|
|
||||||
|
|
||||||
class MainAllianceFilter(admin.SimpleListFilter):
|
|
||||||
"""Custom filter to show alliances from mains 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(profile__main_character__alliance_id=self.value())
|
|
||||||
|
|
||||||
|
|
||||||
def update_main_character_model(modeladmin, request, queryset):
|
|
||||||
tasks_count = 0
|
|
||||||
for obj in queryset:
|
|
||||||
if obj.profile.main_character:
|
|
||||||
update_character.delay(obj.profile.main_character.character_id)
|
|
||||||
tasks_count += 1
|
|
||||||
|
|
||||||
modeladmin.message_user(
|
|
||||||
request,
|
|
||||||
'Update from ESI started for {} characters'.format(tasks_count)
|
|
||||||
)
|
|
||||||
|
|
||||||
update_main_character_model.short_description = \
|
|
||||||
'Update main character model from ESI'
|
|
||||||
|
|
||||||
def list_2_html_w_tooltips(my_items: list, max_items: int) -> str:
|
|
||||||
"""converts list of strings into HTML with cutoff and tooltip when > max"""
|
|
||||||
items_truncated_str = ', '.join(my_items[:max_items])
|
|
||||||
if len(my_items) <= max_items:
|
|
||||||
return items_truncated_str
|
|
||||||
else:
|
|
||||||
items_truncated_str += ' (...)'
|
|
||||||
items_all_str = ', '.join(my_items)
|
|
||||||
return format_html(
|
|
||||||
'<span data-tooltip="{}" class="tooltip">{}</span>',
|
|
||||||
items_all_str,
|
|
||||||
items_truncated_str
|
|
||||||
)
|
|
||||||
|
|
||||||
class UserAdmin(BaseUserAdmin):
|
class UserAdmin(BaseUserAdmin):
|
||||||
"""
|
"""
|
||||||
Extending Django's UserAdmin model
|
Extending Django's UserAdmin model
|
||||||
@ -204,14 +109,98 @@ class UserAdmin(BaseUserAdmin):
|
|||||||
css = {
|
css = {
|
||||||
"all": ("authentication/css/admin.css",)
|
"all": ("authentication/css/admin.css",)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class MainCorporationsFilter(admin.SimpleListFilter):
|
||||||
|
"""Custom filter to filter on corporations from mains 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(profile__main_character__corporation_id=self.value())
|
||||||
|
|
||||||
|
|
||||||
|
class MainAllianceFilter(admin.SimpleListFilter):
|
||||||
|
"""Custom filter to filter on alliances from mains 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(profile__main_character__alliance_id=self.value())
|
||||||
|
|
||||||
|
|
||||||
|
class RealGroupsFilter(admin.SimpleListFilter):
|
||||||
|
"""Custom filter to get groups w/o Autogroups"""
|
||||||
|
title = 'group'
|
||||||
|
parameter_name = 'real_groups'
|
||||||
|
|
||||||
|
def lookups(self, request, model_admin):
|
||||||
|
qs = Group.objects.all().order_by(Lower('name'))
|
||||||
|
if _has_auto_groups:
|
||||||
|
qs = qs\
|
||||||
|
.filter(managedalliancegroup__exact=None)\
|
||||||
|
.filter(managedcorpgroup__exact=None)
|
||||||
|
return tuple([(x.pk, x.name) for x in qs])
|
||||||
|
|
||||||
|
def queryset(self, request, queryset):
|
||||||
|
if self.value() is None:
|
||||||
|
return queryset.all()
|
||||||
|
else:
|
||||||
|
return queryset.filter(groups__pk=self.value())
|
||||||
|
|
||||||
|
|
||||||
|
def update_main_character_model(self, request, queryset):
|
||||||
|
tasks_count = 0
|
||||||
|
for obj in queryset:
|
||||||
|
if obj.profile.main_character:
|
||||||
|
update_character.delay(obj.profile.main_character.character_id)
|
||||||
|
tasks_count += 1
|
||||||
|
|
||||||
|
self.message_user(
|
||||||
|
request,
|
||||||
|
'Update from ESI started for {} characters'.format(tasks_count)
|
||||||
|
)
|
||||||
|
|
||||||
|
update_main_character_model.short_description = \
|
||||||
|
'Update main character model from ESI'
|
||||||
|
|
||||||
|
|
||||||
def get_actions(self, request):
|
def get_actions(self, request):
|
||||||
actions = super(BaseUserAdmin, self).get_actions(request)
|
actions = super(BaseUserAdmin, self).get_actions(request)
|
||||||
|
|
||||||
actions[update_main_character_model.__name__] = (
|
actions[self.update_main_character_model.__name__] = (
|
||||||
update_main_character_model,
|
self.update_main_character_model,
|
||||||
update_main_character_model.__name__,
|
self.update_main_character_model.__name__,
|
||||||
update_main_character_model.short_description
|
self.update_main_character_model.short_description
|
||||||
)
|
)
|
||||||
|
|
||||||
for hook in get_hooks('services_hook'):
|
for hook in get_hooks('services_hook'):
|
||||||
@ -231,18 +220,33 @@ class UserAdmin(BaseUserAdmin):
|
|||||||
|
|
||||||
return actions
|
return actions
|
||||||
|
|
||||||
|
def _list_2_html_w_tooltips(self, my_items: list, max_items: int) -> str:
|
||||||
|
"""converts list of strings into HTML with cutoff and tooltip when > max"""
|
||||||
|
items_truncated_str = ', '.join(my_items[:max_items])
|
||||||
|
if len(my_items) <= max_items:
|
||||||
|
return items_truncated_str
|
||||||
|
else:
|
||||||
|
items_truncated_str += ' (...)'
|
||||||
|
items_all_str = ', '.join(my_items)
|
||||||
|
return format_html(
|
||||||
|
'<span data-tooltip="{}" class="tooltip">{}</span>',
|
||||||
|
items_all_str,
|
||||||
|
items_truncated_str
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
inlines = BaseUserAdmin.inlines + [UserProfileInline]
|
inlines = BaseUserAdmin.inlines + [UserProfileInline]
|
||||||
|
|
||||||
ordering = ('username', )
|
ordering = ('username', )
|
||||||
list_select_related = True
|
list_select_related = True
|
||||||
show_full_result_count = True
|
show_full_result_count = True
|
||||||
|
|
||||||
list_display = (
|
list_display = (
|
||||||
'_profile_pic',
|
'_profile_pic',
|
||||||
'_user',
|
'_user',
|
||||||
'_state',
|
'_state',
|
||||||
'_groups',
|
'_groups',
|
||||||
'_main_organization',
|
'_main_organization',
|
||||||
'_characters',
|
'_characters',
|
||||||
'is_active',
|
'is_active',
|
||||||
'date_joined',
|
'date_joined',
|
||||||
@ -265,7 +269,9 @@ class UserAdmin(BaseUserAdmin):
|
|||||||
'character_ownerships__character__character_name'
|
'character_ownerships__character__character_name'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def _profile_pic(self, obj):
|
def _profile_pic(self, obj):
|
||||||
|
"""profile pic column data for user objects"""
|
||||||
if obj.profile.main_character:
|
if obj.profile.main_character:
|
||||||
return format_html(
|
return format_html(
|
||||||
'<img src="{}" class="img-circle">',
|
'<img src="{}" class="img-circle">',
|
||||||
@ -277,10 +283,13 @@ class UserAdmin(BaseUserAdmin):
|
|||||||
|
|
||||||
|
|
||||||
def _user(self, obj):
|
def _user(self, obj):
|
||||||
link = '/admin/{}/{}/{}/change/'.format(
|
"""user column data for user objects"""
|
||||||
__package__.rsplit('.', 1)[-1],
|
link = reverse(
|
||||||
type(obj).__name__.lower(),
|
'admin:{}_{}_change'.format(
|
||||||
obj.pk
|
obj._meta.app_label,
|
||||||
|
type(obj).__name__.lower()
|
||||||
|
),
|
||||||
|
args=(obj.pk,)
|
||||||
)
|
)
|
||||||
return format_html(
|
return format_html(
|
||||||
'<strong><a href="{}">{}</a></strong><br>{}',
|
'<strong><a href="{}">{}</a></strong><br>{}',
|
||||||
@ -289,11 +298,13 @@ class UserAdmin(BaseUserAdmin):
|
|||||||
obj.profile.main_character.character_name \
|
obj.profile.main_character.character_name \
|
||||||
if obj.profile.main_character else ''
|
if obj.profile.main_character else ''
|
||||||
)
|
)
|
||||||
|
|
||||||
_user.short_description = 'user / main'
|
_user.short_description = 'user / main'
|
||||||
_user.admin_order_field = 'username'
|
_user.admin_order_field = 'username'
|
||||||
|
|
||||||
|
|
||||||
def _main_organization(self, obj):
|
def _main_organization(self, obj):
|
||||||
|
"""main organization column data for user objects"""
|
||||||
if obj.profile.main_character:
|
if obj.profile.main_character:
|
||||||
corporation = obj.profile.main_character.corporation_name
|
corporation = obj.profile.main_character.corporation_name
|
||||||
else:
|
else:
|
||||||
@ -313,7 +324,6 @@ class UserAdmin(BaseUserAdmin):
|
|||||||
_main_organization.admin_order_field = \
|
_main_organization.admin_order_field = \
|
||||||
'profile__main_character__corporation_name'
|
'profile__main_character__corporation_name'
|
||||||
|
|
||||||
|
|
||||||
def _characters(self, obj):
|
def _characters(self, obj):
|
||||||
my_characters = [
|
my_characters = [
|
||||||
x.character.character_name
|
x.character.character_name
|
||||||
@ -321,7 +331,7 @@ class UserAdmin(BaseUserAdmin):
|
|||||||
.filter(user=obj)\
|
.filter(user=obj)\
|
||||||
.order_by('character__character_name')
|
.order_by('character__character_name')
|
||||||
]
|
]
|
||||||
return list_2_html_w_tooltips(
|
return self._list_2_html_w_tooltips(
|
||||||
my_characters,
|
my_characters,
|
||||||
AUTHENTICATION_ADMIN_USERS_MAX_CHARS
|
AUTHENTICATION_ADMIN_USERS_MAX_CHARS
|
||||||
)
|
)
|
||||||
@ -347,7 +357,7 @@ class UserAdmin(BaseUserAdmin):
|
|||||||
.order_by('name')
|
.order_by('name')
|
||||||
]
|
]
|
||||||
|
|
||||||
return list_2_html_w_tooltips(
|
return self._list_2_html_w_tooltips(
|
||||||
my_groups,
|
my_groups,
|
||||||
AUTHENTICATION_ADMIN_USERS_MAX_GROUPS
|
AUTHENTICATION_ADMIN_USERS_MAX_GROUPS
|
||||||
)
|
)
|
||||||
@ -411,14 +421,138 @@ class StateAdmin(admin.ModelAdmin):
|
|||||||
|
|
||||||
|
|
||||||
class BaseOwnershipAdmin(admin.ModelAdmin):
|
class BaseOwnershipAdmin(admin.ModelAdmin):
|
||||||
list_display = ('user', 'character')
|
class Media:
|
||||||
search_fields = ('user__user', 'character__character_name', 'character__corporation_name', 'character__alliance_name')
|
css = {
|
||||||
|
"all": ("authentication/css/admin.css",)
|
||||||
|
}
|
||||||
|
|
||||||
|
class MainCorporationsFilter(admin.SimpleListFilter):
|
||||||
|
"""Custom filter to filter on corporations from mains 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 filter on alliances from mains 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()
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
list_select_related = True
|
||||||
|
list_display = (
|
||||||
|
'_profile_pic',
|
||||||
|
'_user',
|
||||||
|
'_main_organization',
|
||||||
|
'character',
|
||||||
|
)
|
||||||
|
search_fields = (
|
||||||
|
'user__user',
|
||||||
|
'character__character_name',
|
||||||
|
'character__corporation_name',
|
||||||
|
'character__alliance_name'
|
||||||
|
)
|
||||||
|
list_filter = (
|
||||||
|
MainCorporationsFilter,
|
||||||
|
MainAllianceFilter,
|
||||||
|
)
|
||||||
|
|
||||||
def get_readonly_fields(self, request, obj=None):
|
def get_readonly_fields(self, request, obj=None):
|
||||||
if obj and obj.pk:
|
if obj and obj.pk:
|
||||||
return 'owner_hash', 'character'
|
return 'owner_hash', 'character'
|
||||||
return tuple()
|
return tuple()
|
||||||
|
|
||||||
|
|
||||||
|
def _profile_pic(self, obj):
|
||||||
|
"""profile pic column data for user objects"""
|
||||||
|
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):
|
||||||
|
"""user column data for user objects"""
|
||||||
|
link = reverse(
|
||||||
|
'admin:{}_{}_change'.format(
|
||||||
|
obj._meta.app_label,
|
||||||
|
type(obj).__name__.lower()
|
||||||
|
),
|
||||||
|
args=(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):
|
||||||
|
"""main organization column data for user objects"""
|
||||||
|
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 = \
|
||||||
|
'user__profile__main_character__corporation_name'
|
||||||
|
|
||||||
|
|
||||||
@admin.register(OwnershipRecord)
|
@admin.register(OwnershipRecord)
|
||||||
class OwnershipRecordAdmin(BaseOwnershipAdmin):
|
class OwnershipRecordAdmin(BaseOwnershipAdmin):
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
from django import forms
|
from django import forms
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from django.db.models.functions import Lower
|
from django.db.models.functions import Lower
|
||||||
|
from django.urls import reverse
|
||||||
from django.utils.html import format_html
|
from django.utils.html import format_html
|
||||||
|
|
||||||
from allianceauth import hooks
|
from allianceauth import hooks
|
||||||
@ -97,10 +98,12 @@ class ServicesUserAdmin(admin.ModelAdmin):
|
|||||||
|
|
||||||
|
|
||||||
def _user(self, obj):
|
def _user(self, obj):
|
||||||
link = '/admin/{}/{}/{}/change/'.format(
|
link = reverse(
|
||||||
__package__.rsplit('.', 1)[-1],
|
'admin:{}_{}_change'.format(
|
||||||
type(obj).__name__.lower(),
|
obj._meta.app_label,
|
||||||
obj.pk
|
type(obj).__name__.lower()
|
||||||
|
),
|
||||||
|
args=(obj.pk,)
|
||||||
)
|
)
|
||||||
return format_html(
|
return format_html(
|
||||||
'<strong><a href="{}">{}</a></strong><br>{}',
|
'<strong><a href="{}">{}</a></strong><br>{}',
|
||||||
|
@ -4,6 +4,7 @@ from .models import DiscordUser
|
|||||||
from ...admin import ServicesUserAdmin
|
from ...admin import ServicesUserAdmin
|
||||||
|
|
||||||
|
|
||||||
|
@admin.register(DiscordUser)
|
||||||
class DiscordUserAdmin(ServicesUserAdmin):
|
class DiscordUserAdmin(ServicesUserAdmin):
|
||||||
list_display = ServicesUserAdmin.list_display + (
|
list_display = ServicesUserAdmin.list_display + (
|
||||||
'_uid',
|
'_uid',
|
||||||
@ -15,5 +16,3 @@ class DiscordUserAdmin(ServicesUserAdmin):
|
|||||||
_uid.short_description = 'Discord ID (UID)'
|
_uid.short_description = 'Discord ID (UID)'
|
||||||
_uid.admin_order_field = 'uid'
|
_uid.admin_order_field = 'uid'
|
||||||
|
|
||||||
|
|
||||||
admin.site.register(DiscordUser, DiscordUserAdmin)
|
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
|
|
||||||
from .models import DiscourseUser
|
from .models import DiscourseUser
|
||||||
|
from ...admin import ServicesUserAdmin
|
||||||
|
|
||||||
|
|
||||||
class DiscourseUserAdmin(admin.ModelAdmin):
|
@admin.register(DiscourseUser)
|
||||||
list_display = ('user',)
|
class DiscourseUserAdmin(ServicesUserAdmin):
|
||||||
search_fields = ('user__username',)
|
list_display = ServicesUserAdmin.list_display + (
|
||||||
|
'enabled',
|
||||||
admin.site.register(DiscourseUser, DiscourseUserAdmin)
|
)
|
||||||
|
@ -4,6 +4,7 @@ from .models import MumbleUser
|
|||||||
from ...admin import ServicesUserAdmin
|
from ...admin import ServicesUserAdmin
|
||||||
|
|
||||||
|
|
||||||
|
@admin.register(MumbleUser)
|
||||||
class MumbleUserAdmin(ServicesUserAdmin):
|
class MumbleUserAdmin(ServicesUserAdmin):
|
||||||
list_display = ServicesUserAdmin.list_display + (
|
list_display = ServicesUserAdmin.list_display + (
|
||||||
'username',
|
'username',
|
||||||
@ -15,6 +16,3 @@ class MumbleUserAdmin(ServicesUserAdmin):
|
|||||||
)
|
)
|
||||||
|
|
||||||
fields = ('user', 'username', 'groups') # pwhash is hidden from admin panel
|
fields = ('user', 'username', 'groups') # pwhash is hidden from admin panel
|
||||||
|
|
||||||
|
|
||||||
admin.site.register(MumbleUser, MumbleUserAdmin)
|
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
|
|
||||||
from .models import OpenfireUser
|
from .models import OpenfireUser
|
||||||
|
from ...admin import ServicesUserAdmin
|
||||||
|
|
||||||
|
|
||||||
class OpenfireUserAdmin(admin.ModelAdmin):
|
@admin.register(OpenfireUser)
|
||||||
list_display = ('user', 'username')
|
class OpenfireUserAdmin(ServicesUserAdmin):
|
||||||
search_fields = ('user__username', 'username')
|
list_display = ServicesUserAdmin.list_display + ('username',)
|
||||||
|
search_fields = ServicesUserAdmin.search_fields + ('username', )
|
||||||
|
|
||||||
admin.site.register(OpenfireUser, OpenfireUserAdmin)
|
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from .models import Phpbb3User
|
from .models import Phpbb3User
|
||||||
|
from ...admin import ServicesUserAdmin
|
||||||
|
|
||||||
|
|
||||||
class Phpbb3UserAdmin(admin.ModelAdmin):
|
@admin.register(Phpbb3User)
|
||||||
list_display = ('user', 'username')
|
class Phpbb3UserAdmin(ServicesUserAdmin):
|
||||||
search_fields = ('user__username', 'username')
|
list_display = ServicesUserAdmin.list_display + ('username',)
|
||||||
|
search_fields = ServicesUserAdmin.search_fields + ('username', )
|
||||||
admin.site.register(Phpbb3User, Phpbb3UserAdmin)
|
|
@ -1,9 +1,10 @@
|
|||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
|
|
||||||
from .models import SmfUser
|
from .models import SmfUser
|
||||||
|
from ...admin import ServicesUserAdmin
|
||||||
|
|
||||||
|
|
||||||
class SmfUserAdmin(admin.ModelAdmin):
|
@admin.register(SmfUser)
|
||||||
list_display = ('user', 'username')
|
class SmfUserAdmin(ServicesUserAdmin):
|
||||||
search_fields = ('user__username', 'username')
|
list_display = ServicesUserAdmin.list_display + ('username',)
|
||||||
|
search_fields = ServicesUserAdmin.search_fields + ('username', )
|
||||||
admin.site.register(SmfUser, SmfUserAdmin)
|
|
@ -4,6 +4,7 @@ from .models import AuthTS, Teamspeak3User, StateGroup
|
|||||||
from ...admin import ServicesUserAdmin
|
from ...admin import ServicesUserAdmin
|
||||||
|
|
||||||
|
|
||||||
|
@admin.register(Teamspeak3User)
|
||||||
class Teamspeak3UserAdmin(ServicesUserAdmin):
|
class Teamspeak3UserAdmin(ServicesUserAdmin):
|
||||||
list_display = ServicesUserAdmin.list_display + (
|
list_display = ServicesUserAdmin.list_display + (
|
||||||
'uid',
|
'uid',
|
||||||
@ -11,6 +12,7 @@ class Teamspeak3UserAdmin(ServicesUserAdmin):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@admin.register(AuthTS)
|
||||||
class AuthTSgroupAdmin(admin.ModelAdmin):
|
class AuthTSgroupAdmin(admin.ModelAdmin):
|
||||||
ordering = ('auth_group__name', )
|
ordering = ('auth_group__name', )
|
||||||
list_select_related = True
|
list_select_related = True
|
||||||
@ -32,7 +34,3 @@ class AuthTSgroupAdmin(admin.ModelAdmin):
|
|||||||
class StateGroupAdmin(admin.ModelAdmin):
|
class StateGroupAdmin(admin.ModelAdmin):
|
||||||
list_display = ('state', 'ts_group')
|
list_display = ('state', 'ts_group')
|
||||||
search_fields = ('state__name', 'ts_group__ts_group_name')
|
search_fields = ('state__name', 'ts_group__ts_group_name')
|
||||||
|
|
||||||
|
|
||||||
admin.site.register(AuthTS, AuthTSgroupAdmin)
|
|
||||||
admin.site.register(Teamspeak3User, Teamspeak3UserAdmin)
|
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
|
|
||||||
from .models import XenforoUser
|
from .models import XenforoUser
|
||||||
|
from ...admin import ServicesUserAdmin
|
||||||
|
|
||||||
|
|
||||||
class XenforoUserAdmin(admin.ModelAdmin):
|
@admin.register(XenforoUser)
|
||||||
list_display = ('user', 'username')
|
class XenforoUserAdmin(ServicesUserAdmin):
|
||||||
search_fields = ('user__username', 'username')
|
list_display = ServicesUserAdmin.list_display + ('username',)
|
||||||
|
search_fields = ServicesUserAdmin.search_fields + ('username', )
|
||||||
admin.site.register(XenforoUser, XenforoUserAdmin)
|
|
Loading…
x
Reference in New Issue
Block a user