Finally overrite a UserAdmin ModelAdmin: from django.contrib.auth.admin import UserAdmin from django.contrib.auth.models import User from django.utils.translation import ugettext, ugettext_lazy as _ from django.core.exceptions import PermissionDenied
class UserAdmin(admin.ModelAdmin): actions = ['delete_model'] def get_fieldsets(self, request, obj=None): if not obj: return self.add_fieldsets if request.user.is_superuser: perm_fields = ('is_active', 'is_staff', 'is_superuser', 'groups', 'user_permissions') else: # modify these to suit the fields you want your # staff user to be able to edit perm_fields = ('is_active', 'is_staff', 'groups') return [(None, {'fields': ('username', 'password')}), (_('Personal info'), {'fields': ('first_name', 'last_name', 'email')}), (_('Permissions'), {'fields': perm_fields}), (_('Important dates'), {'fields': ('last_login', 'date_joined')})] # Prevent super user edition for no super users def save_model(self, request, obj, form, change): print 'save_model' if not change: # New user obj.save() else: # Update user if obj.is_superuser: if request.user.is_superuser: obj.save() else: raise PermissionDenied else: obj.save() def get_actions(self, request): actions = super(UserAdmin, self).get_actions(request) del actions['delete_selected'] return actions # Prevent super user deletion for no super users def delete_model(modeladmin, request, queryset): for obj in queryset: if obj.is_superuser: if request.user.is_superuser: # obj.delete() else: raise PermissionDenied else: # obj.delete() delete_model.short_description = 'Eliminar usuario/s seleccionados' El miércoles, 9 de septiembre de 2015, 12:00:18 (UTC+2), Xavier Palacín Ayuso escribió: > > I want to collects current user in model signal pre_save, to prevent > remove super user permission to current super users. > As I have now so I can not give administrative privileges to a normal user. > > from django.db.models.signals import pre_delete, pre_save, post_save > from django.dispatch.dispatcher import receiver > from django.contrib.auth.models import User > from django.core.exceptions import PermissionDenied > > > @receiver(pre_save, sender=User) > def save_user(sender, instance, **kwargs): > if instance._state.adding is True: > # we would need to create the object > print "Creating an object" > else: > #we are updating the object > if instance.is_superuser: > raise PermissionDenied > > -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscr...@googlegroups.com. To post to this group, send email to django-users@googlegroups.com. Visit this group at http://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/8774dcd4-4018-46eb-96f7-a1095cb2eb05%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.