From e71e7c92946acf35fd54fcd8ab1885b4c2d2fee1 Mon Sep 17 00:00:00 2001 From: Qynn Swaan <41802320+2ynn@users.noreply.github.com> Date: Sun, 3 Apr 2022 14:02:01 -0400 Subject: [PATCH] [#104] Add admin actions to bulk-remove users from staff/superusers --- saskatoon/member/admin.py | 52 ++++++++++++++++++++++++++++----------- 1 file changed, 37 insertions(+), 15 deletions(-) diff --git a/saskatoon/member/admin.py b/saskatoon/member/admin.py index dac071424..041ca5871 100644 --- a/saskatoon/member/admin.py +++ b/saskatoon/member/admin.py @@ -26,8 +26,8 @@ class CustomUserCreationForm(UserCreationForm): label='Password Confirmation', widget=forms.PasswordInput, required=False - ) + ) class Meta(UserCreationForm.Meta): model = AuthUser fields = ('email',) @@ -149,6 +149,26 @@ def get_groups(self, user): ) # ACTIONS + @admin.action(description="Deactivate account for selected User(s)") + def deactivate_account(self, request, queryset): + for u in queryset: + if not u.is_superuser: + u.is_active = False + u.save() + + @admin.action(description="Add staff status to selected User(s)") + def add_to_staff(self, request, queryset): + queryset.update(**{'is_staff': True}) + + @admin.action(description="Remove staff status from selected User(s)") + def remove_from_staff(self, request, queryset): + queryset.update(**{'is_staff': False}) + + @admin.action(description="Remove superuser status from selected User(s)") + def remove_from_superuser(self, request, queryset): + queryset.update(**{'is_superuser': False}) + + @admin.action(description="Clear groups for selected User(s)") def clear_groups(self, request, queryset): for u in queryset: u.groups.clear() @@ -156,52 +176,54 @@ def clear_groups(self, request, queryset): u.is_staff = False u.save() - def add_to_staff(self, user): - user.is_staff = True - user.save() - def add_to_group(self, user, name): + """helper function for add_to_ actions""" group, __ = Group.objects.get_or_create(name=name) user.groups.add(group) + @admin.action(description="Add selected User(s) to admin group") def add_to_admin(self, request, queryset): for u in queryset: self.add_to_group(u, 'admin') u.is_superuser = True - self.add_to_staff(u) + u.is_staff = True + u.save() + @admin.action(description="Add selected User(s) to core group") def add_to_core(self, request, queryset): for u in queryset: self.add_to_group(u, 'core') - self.add_to_staff(u) + u.is_staff = True + u.save() + @admin.action(description="Add selected User(s) to pickleader group") def add_to_pickleader(self, request, queryset): for u in queryset: self.add_to_group(u, 'pickleader') - self.add_to_staff(u) + u.is_staff = True + u.save() + @admin.action(description="Add selected User(s) to volunteer group") def add_to_volunteer(self, request, queryset): for u in queryset: self.add_to_group(u, 'volunteer') + @admin.action(description="Add selected User(s) to owner group") def add_to_owner(self, request, queryset): for u in queryset: self.add_to_group(u, 'owner') - def deactivate_account(self, request, queryset): - for u in queryset: - if not u.is_superuser: - u.is_active = False - u.save() - actions = [ + deactivate_account, + remove_from_staff, + remove_from_superuser, + add_to_staff, clear_groups, add_to_admin, add_to_core, add_to_pickleader, add_to_volunteer, add_to_owner, - deactivate_account, ]