Skip to content

Commit

Permalink
[#104] Add admin actions to bulk-remove users from staff/superusers
Browse files Browse the repository at this point in the history
  • Loading branch information
2ynn committed Apr 3, 2022
1 parent 8d3327f commit bfe4fd3
Showing 1 changed file with 37 additions and 15 deletions.
52 changes: 37 additions & 15 deletions saskatoon/member/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ class CustomUserCreationForm(UserCreationForm):
label='Password Confirmation',
widget=forms.PasswordInput,
required=False
)

)
class Meta(UserCreationForm.Meta):
model = AuthUser
fields = ('email',)
Expand Down Expand Up @@ -149,59 +149,81 @@ 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="Set is_staff=True for User(s)")
def add_to_staff(self, request, queryset):
queryset.update(**{'is_staff': True})

@admin.action(description="Set is_staff=False for selected User(s)")
def remove_from_staff(self, request, queryset):
queryset.update(**{'is_staff': False})

@admin.action(description="Set is_superuser=False for 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()
u.is_superuser = False
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_<group> 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,
]


Expand Down

0 comments on commit bfe4fd3

Please sign in to comment.