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 [email protected].
To post to this group, send email to [email protected].
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.