mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-09 12:30:15 +02:00
74 lines
2.1 KiB
Python
74 lines
2.1 KiB
Python
from django import forms
|
|
from django.contrib import admin
|
|
|
|
from allianceauth import hooks
|
|
from allianceauth.authentication.admin import (
|
|
MainAllianceFilter,
|
|
MainCorporationsFilter,
|
|
user_main_organization,
|
|
user_profile_pic,
|
|
user_username,
|
|
)
|
|
|
|
from .models import NameFormatConfig
|
|
|
|
|
|
class ServicesUserAdmin(admin.ModelAdmin):
|
|
"""Parent class for UserAdmin classes for all services"""
|
|
class Media:
|
|
css = {
|
|
"all": ("allianceauth/services/admin.css",)
|
|
}
|
|
|
|
search_fields = ('user__username',)
|
|
ordering = ('user__username',)
|
|
list_select_related = True
|
|
list_display = (
|
|
user_profile_pic,
|
|
user_username,
|
|
'_state',
|
|
user_main_organization,
|
|
'_date_joined'
|
|
)
|
|
list_filter = (
|
|
'user__profile__state',
|
|
MainCorporationsFilter,
|
|
MainAllianceFilter,
|
|
'user__date_joined',
|
|
)
|
|
list_select_related = (
|
|
'user', 'user__profile__main_character', 'user__profile__state'
|
|
)
|
|
|
|
@admin.display(ordering='user__profile__state__name')
|
|
def _state(self, obj):
|
|
return obj.user.profile.state.name
|
|
|
|
@admin.display(ordering='user__date_joined')
|
|
def _date_joined(self, obj):
|
|
return obj.user.date_joined
|
|
|
|
|
|
class NameFormatConfigForm(forms.ModelForm):
|
|
def __init__(self, *args, **kwargs):
|
|
super().__init__(*args, **kwargs)
|
|
SERVICE_CHOICES = \
|
|
[(s.name, s.name) for h in hooks.get_hooks('services_hook') for s in [h()]]
|
|
if self.instance.id:
|
|
current_choice = (self.instance.service_name, self.instance.service_name)
|
|
if current_choice not in SERVICE_CHOICES:
|
|
SERVICE_CHOICES.append(current_choice)
|
|
self.fields['service_name'] = forms.ChoiceField(choices=SERVICE_CHOICES)
|
|
|
|
|
|
@admin.register(NameFormatConfig)
|
|
class NameFormatConfigAdmin(admin.ModelAdmin):
|
|
form = NameFormatConfigForm
|
|
list_display = ('service_name', 'get_state_display_string')
|
|
|
|
@admin.display(
|
|
description='States'
|
|
)
|
|
def get_state_display_string(self, obj):
|
|
return ', '.join([state.name for state in obj.states.all()])
|