diff --git a/AKModel/admin.py b/AKModel/admin.py index 3d1fe15dfc993152cb012f5e363fc1e7f3ddaab5..56833b20bfdd2471e0bb52fe0e94291981dbb79c 100644 --- a/AKModel/admin.py +++ b/AKModel/admin.py @@ -3,7 +3,7 @@ from django.apps import apps from django.contrib import admin, messages from django.contrib.admin import SimpleListFilter, RelatedFieldListFilter, action, display from django.contrib.auth.admin import UserAdmin as BaseUserAdmin -from django.contrib.auth.models import User +from django.contrib.auth.models import User # pylint: disable=E5142 from django.db.models import Count, F from django.http import HttpResponseRedirect from django.shortcuts import render, redirect @@ -574,20 +574,37 @@ class DefaultSlotAdmin(EventTimezoneFormMixin, admin.ModelAdmin): # Define a new User admin class UserAdmin(BaseUserAdmin): + """ + Admin interface for Users + Enhances the built-in UserAdmin with additional actions to activate and deactivate users and a custom selection + of displayed properties in overview list + """ list_display = ["username", "email", "is_active", "is_staff", "is_superuser"] actions = ['activate', 'deactivate'] @admin.action(description=_("Activate selected users")) def activate(self, request, queryset): + """ + Bulk activate users + + :param request: HTTP request + :param queryset: queryset containing all users that should be activated + """ queryset.update(is_active=True) self.message_user(request, _("The selected users have been activated.")) @admin.action(description=_("Deactivate selected users")) def deactivate(self, request, queryset): + """ + Bulk deactivate users + + :param request: HTTP request + :param queryset: queryset containing all users that should be deactivated + """ queryset.update(is_active=False) self.message_user(request, _("The selected users have been deactivated.")) # Re-register UserAdmin admin.site.unregister(User) -admin.site.register(User, UserAdmin) \ No newline at end of file +admin.site.register(User, UserAdmin) diff --git a/AKScheduling/views.py b/AKScheduling/views.py index 321f9264597d1c5d3fb77fd856f4b18c9097296b..2e549f9f411d0c531110596700af298be4b070c3 100644 --- a/AKScheduling/views.py +++ b/AKScheduling/views.py @@ -41,7 +41,9 @@ class SchedulingAdminView(AdminViewMixin, FilterByEventSlugMixin, ListView): context_object_name = "slots_unscheduled" def get_queryset(self): - return super().get_queryset().filter(start__isnull=True).select_related('event', 'ak', 'ak__track', 'ak__category').prefetch_related('ak__types', 'ak__owners', 'ak__conflicts', 'ak__prerequisites', 'ak__requirements').order_by('ak__track', 'ak') + return super().get_queryset().filter(start__isnull=True).select_related('event', 'ak', 'ak__track', + 'ak__category').prefetch_related('ak__types', 'ak__owners', 'ak__conflicts', 'ak__prerequisites', + 'ak__requirements').order_by('ak__track', 'ak') def get_context_data(self, *, object_list=None, **kwargs): context = super().get_context_data(object_list=object_list, **kwargs)