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