Skip to content

Commit a9daa73

Browse files
committed
适配django 2.1 2.0 fixed : #612
1 parent d7e283f commit a9daa73

File tree

2 files changed

+17
-5
lines changed

2 files changed

+17
-5
lines changed

xadmin/plugins/actions.py

+16-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from collections import OrderedDict
2-
from django import forms
2+
from django import forms, VERSION as django_version
33
from django.core.exceptions import PermissionDenied
44
from django.db import router
55
from django.http import HttpResponse, HttpResponseRedirect
@@ -19,19 +19,23 @@
1919
from xadmin.views import BaseAdminPlugin, ListAdminView
2020
from xadmin.views.base import filter_hook, ModelAdminView
2121

22+
from xadmin import views
2223

2324
ACTION_CHECKBOX_NAME = '_selected_action'
2425
checkbox = forms.CheckboxInput({'class': 'action-select'}, lambda value: False)
2526

2627

2728
def action_checkbox(obj):
2829
return checkbox.render(ACTION_CHECKBOX_NAME, force_text(obj.pk))
30+
31+
2932
action_checkbox.short_description = mark_safe(
3033
'<input type="checkbox" id="action-toggle" />')
3134
action_checkbox.allow_tags = True
3235
action_checkbox.allow_export = False
3336
action_checkbox.is_column = False
3437

38+
3539
class BaseActionView(ModelAdminView):
3640
action_name = None
3741
description = None
@@ -70,7 +74,7 @@ def delete_models(self, queryset):
7074
n = queryset.count()
7175
if n:
7276
if self.delete_models_batch:
73-
self.log('delete', _('Batch delete %(count)d %(items)s.') % { "count": n, "items": model_ngettext(self.opts, n) })
77+
self.log('delete', _('Batch delete %(count)d %(items)s.') % {"count": n, "items": model_ngettext(self.opts, n)})
7478
queryset.delete()
7579
else:
7680
for obj in queryset:
@@ -88,10 +92,18 @@ def do_action(self, queryset):
8892

8993
using = router.db_for_write(self.model)
9094

95+
if django_version > (2, 0):
96+
setattr(self.admin_site._registry[self.model], 'has_delete_permission', self.has_delete_permission)
97+
9198
# Populate deletable_objects, a data structure of all related objects that
9299
# will also be deleted.
93-
deletable_objects, model_count, perms_needed, protected = get_deleted_objects(
94-
queryset, self.opts, self.user, self.admin_site, using)
100+
101+
if django_version > (2, 0):
102+
deletable_objects, model_count, perms_needed, protected = get_deleted_objects(
103+
queryset, self.opts, self.admin_site)
104+
else:
105+
deletable_objects, model_count, perms_needed, protected = get_deleted_objects(
106+
queryset, self.opts, self.user, self.admin_site, using)
95107

96108
# The user has already confirmed the deletion.
97109
# Do the deletion and return a None to display the change list view again.

xadmin/views/base.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -598,6 +598,6 @@ def has_change_permission(self, obj=None):
598598
codename = get_permission_codename('change', self.opts)
599599
return ('change' not in self.remove_permissions) and self.user.has_perm('%s.%s' % (self.app_label, codename))
600600

601-
def has_delete_permission(self, obj=None):
601+
def has_delete_permission(self, request=None, obj=None):
602602
codename = get_permission_codename('delete', self.opts)
603603
return ('delete' not in self.remove_permissions) and self.user.has_perm('%s.%s' % (self.app_label, codename))

0 commit comments

Comments
 (0)