admin: when user is super-admin always keep is_staff to True
This commit is contained in:
parent
27f2b5be00
commit
19f89b3135
|
@ -56,9 +56,19 @@ admin.site.unregister(Group)
|
|||
admin.site.register(models.Role, GroupAdmin)
|
||||
|
||||
from authentic2.compat import get_user_model
|
||||
from django.db.models.signals import m2m_changed
|
||||
from django.db.models.signals import m2m_changed, pre_save
|
||||
from django.dispatch import receiver
|
||||
|
||||
@receiver(pre_save, sender=get_user_model())
|
||||
def update_is_staff_for_superuser(sender, instance, raw, using, update_fields,
|
||||
**kwargs):
|
||||
'''Super-users have always access to the admin site'''
|
||||
if raw:
|
||||
return
|
||||
if instance.is_superuser:
|
||||
instance.is_staff = True
|
||||
|
||||
|
||||
if hasattr(get_user_model(), 'groups'):
|
||||
@receiver(m2m_changed, sender=get_user_model().groups.through)
|
||||
def update_is_staff(sender, instance, action, reverse, model, pk_set,
|
||||
|
@ -67,11 +77,11 @@ if hasattr(get_user_model(), 'groups'):
|
|||
if action.startswith('post_'):
|
||||
instance.is_staff = instance.groups \
|
||||
.filter(permissions__isnull=False) \
|
||||
.exists()
|
||||
.exists() or instance.is_superuser
|
||||
instance.save(update_fields=['is_staff'])
|
||||
else:
|
||||
for user in get_user_model().objects.filter(pk__in=pkset):
|
||||
user.is_staff = user.groups \
|
||||
.filter(permissions__isnull=False) \
|
||||
.exists()
|
||||
.exists() or user.is_superuser
|
||||
user.save(update_fields=['is_staff'])
|
||||
|
|
Reference in New Issue