forked from Minecraft/minecraft_manager
117 lines
3.3 KiB
Python
117 lines
3.3 KiB
Python
from __future__ import absolute_import
|
|
|
|
from django.contrib import admin
|
|
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
|
|
from django.contrib.auth.models import User
|
|
from django.utils.translation import gettext as _
|
|
from minecraft_manager.models import Application, Note, Ticket, TicketNote, Player, IP, UserSettings, Alert, Attachment
|
|
from minecraft_manager.api.admin import register as api_register
|
|
|
|
|
|
class PlayerInline(admin.StackedInline):
|
|
model = Player
|
|
can_delete = False
|
|
verbose_name_plural = 'player'
|
|
|
|
|
|
class UserAdmin(BaseUserAdmin):
|
|
inlines = (PlayerInline, )
|
|
actions = ['deactivate_account']
|
|
|
|
def deactivate_account(self, request, queryset):
|
|
rows_updated = queryset.update(is_active=False)
|
|
if rows_updated == 1:
|
|
message_bit = "1 user was"
|
|
else:
|
|
message_bit = "%s users were" % rows_updated
|
|
self.message_user(request, "%s successfully deactivated." % message_bit)
|
|
deactivate_account.short_description = "Deactivate selected accounts"
|
|
|
|
|
|
class PlayerAdmin(admin.ModelAdmin):
|
|
search_fields = ["username", "uuid"]
|
|
|
|
|
|
class ApplicationAdmin(admin.ModelAdmin):
|
|
search_fields = ["username"]
|
|
|
|
|
|
class TicketPriorityFilter(admin.SimpleListFilter):
|
|
title = _('Priority')
|
|
parameter_name = 'priority'
|
|
|
|
def lookups(self, request, model_admin):
|
|
return (
|
|
('0', _('Low')),
|
|
('1', _('Medium')),
|
|
('2', _('High'))
|
|
)
|
|
|
|
def queryset(self, request, queryset):
|
|
if self.value() == '0':
|
|
return queryset.filter(priority='L')
|
|
if self.value() == '1':
|
|
return queryset.filter(priority='M')
|
|
if self.value() == '2':
|
|
return queryset.filter(priority='H')
|
|
|
|
|
|
class TicketAdmin(admin.ModelAdmin):
|
|
search_fields = ["player__username", "staff__username"]
|
|
list_filter = (TicketPriorityFilter,)
|
|
|
|
|
|
class NoteImportanceFilter(admin.SimpleListFilter):
|
|
title = _('Importance')
|
|
parameter_name = 'importance'
|
|
|
|
def lookups(self, request, model_admin):
|
|
return (
|
|
('0', _('Low')),
|
|
('1', _('Medium')),
|
|
('2', _('High'))
|
|
)
|
|
|
|
def queryset(self, request, queryset):
|
|
if self.value() == '0':
|
|
return queryset.filter(priority='L')
|
|
if self.value() == '1':
|
|
return queryset.filter(priority='M')
|
|
if self.value() == '2':
|
|
return queryset.filter(priority='H')
|
|
|
|
|
|
class NoteAdmin(admin.ModelAdmin):
|
|
search_fields = ["player__username", "staff__username"]
|
|
list_filter = (NoteImportanceFilter,)
|
|
|
|
|
|
class IPAdmin(admin.ModelAdmin):
|
|
search_fields = ["player__username", "ip"]
|
|
|
|
|
|
class AttachmentAdmin(admin.ModelAdmin):
|
|
list_display = ["file_name", "model_name"]
|
|
|
|
def model_name(self, attachment):
|
|
return attachment.ref_name
|
|
model_name.short_description = "Model"
|
|
|
|
|
|
try:
|
|
admin.site.unregister(User)
|
|
admin.site.register(User, UserAdmin)
|
|
admin.site.register(UserSettings)
|
|
admin.site.register(Application, ApplicationAdmin)
|
|
admin.site.register(Ticket, TicketAdmin)
|
|
admin.site.register(TicketNote)
|
|
admin.site.register(Note, NoteAdmin)
|
|
admin.site.register(Player, PlayerAdmin)
|
|
admin.site.register(IP, IPAdmin)
|
|
admin.site.register(Alert)
|
|
admin.site.register(Attachment, AttachmentAdmin)
|
|
api_register()
|
|
except admin.sites.AlreadyRegistered:
|
|
pass
|
|
|