Remove unneeded custom 'delete_selected'
`has_delete_permission` already avoids deleting main system users
This commit is contained in:
parent
1faab905d6
commit
b37d9cc515
|
@ -128,29 +128,3 @@ def create_link(modeladmin, request, queryset):
|
||||||
return TemplateResponse(request, 'admin/systemusers/systemuser/create_link.html', context)
|
return TemplateResponse(request, 'admin/systemusers/systemuser/create_link.html', context)
|
||||||
create_link.url_name = 'create-link'
|
create_link.url_name = 'create-link'
|
||||||
create_link.tool_description = _("Create link")
|
create_link.tool_description = _("Create link")
|
||||||
|
|
||||||
|
|
||||||
def delete_selected(modeladmin, request, queryset):
|
|
||||||
""" wrapper arround admin.actions.delete_selected to prevent main system users deletion """
|
|
||||||
opts = modeladmin.model._meta
|
|
||||||
app_label = opts.app_label
|
|
||||||
# Check that the user has delete permission for the actual model
|
|
||||||
if not modeladmin.has_delete_permission(request):
|
|
||||||
raise PermissionDenied
|
|
||||||
else:
|
|
||||||
accounts = []
|
|
||||||
for user in queryset:
|
|
||||||
if user.is_main:
|
|
||||||
accounts.append(user.username)
|
|
||||||
if accounts:
|
|
||||||
n = len(accounts)
|
|
||||||
messages.error(request, ungettext(
|
|
||||||
"You have selected one main system user (%(accounts)s), which can not be deleted.",
|
|
||||||
"You have selected some main system users which can not be deleted (%(accounts)s).",
|
|
||||||
n) % {
|
|
||||||
'accounts': ', '.join(accounts[:10]+['...'] if n > 10 else accounts)
|
|
||||||
}
|
|
||||||
)
|
|
||||||
return
|
|
||||||
return admin.actions.delete_selected(modeladmin, request, queryset)
|
|
||||||
delete_selected.short_description = _("Delete selected %(verbose_name_plural)s")
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
from django.contrib import admin
|
from django.contrib import admin, messages
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
from orchestra.admin import ExtendedModelAdmin, ChangePasswordAdminMixin
|
from orchestra.admin import ExtendedModelAdmin, ChangePasswordAdminMixin
|
||||||
|
@ -7,7 +7,7 @@ from orchestra.contrib.accounts.actions import list_accounts
|
||||||
from orchestra.contrib.accounts.admin import SelectAccountAdminMixin
|
from orchestra.contrib.accounts.admin import SelectAccountAdminMixin
|
||||||
from orchestra.contrib.accounts.filters import IsActiveListFilter
|
from orchestra.contrib.accounts.filters import IsActiveListFilter
|
||||||
|
|
||||||
from .actions import set_permission, create_link, delete_selected
|
from .actions import set_permission, create_link
|
||||||
from .filters import IsMainListFilter
|
from .filters import IsMainListFilter
|
||||||
from .forms import SystemUserCreationForm, SystemUserChangeForm
|
from .forms import SystemUserCreationForm, SystemUserChangeForm
|
||||||
from .models import SystemUser
|
from .models import SystemUser
|
||||||
|
@ -43,7 +43,7 @@ class SystemUserAdmin(ChangePasswordAdminMixin, SelectAccountAdminMixin, Extende
|
||||||
form = SystemUserChangeForm
|
form = SystemUserChangeForm
|
||||||
ordering = ('-id',)
|
ordering = ('-id',)
|
||||||
change_view_actions = (set_permission, create_link)
|
change_view_actions = (set_permission, create_link)
|
||||||
actions = (disable, enable, delete_selected, list_accounts) + change_view_actions
|
actions = (disable, enable, list_accounts) + change_view_actions
|
||||||
|
|
||||||
def display_main(self, user):
|
def display_main(self, user):
|
||||||
return user.is_main
|
return user.is_main
|
||||||
|
@ -68,6 +68,12 @@ class SystemUserAdmin(ChangePasswordAdminMixin, SelectAccountAdminMixin, Extende
|
||||||
|
|
||||||
def has_delete_permission(self, request, obj=None):
|
def has_delete_permission(self, request, obj=None):
|
||||||
if obj and obj.is_main:
|
if obj and obj.is_main:
|
||||||
|
self.message_user(request, _(
|
||||||
|
"You have selected one main system user (%(account)s), which can not be deleted.",
|
||||||
|
) % {'account': obj},
|
||||||
|
messages.ERROR,
|
||||||
|
)
|
||||||
|
|
||||||
return False
|
return False
|
||||||
return super(SystemUserAdmin, self).has_delete_permission(request, obj)
|
return super(SystemUserAdmin, self).has_delete_permission(request, obj)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue