1
1
from collections import OrderedDict
2
- from django import forms
2
+ from django import forms , VERSION as django_version
3
3
from django .core .exceptions import PermissionDenied
4
4
from django .db import router
5
5
from django .http import HttpResponse , HttpResponseRedirect
19
19
from xadmin .views import BaseAdminPlugin , ListAdminView
20
20
from xadmin .views .base import filter_hook , ModelAdminView
21
21
22
+ from xadmin import views
22
23
23
24
ACTION_CHECKBOX_NAME = '_selected_action'
24
25
checkbox = forms .CheckboxInput ({'class' : 'action-select' }, lambda value : False )
25
26
26
27
27
28
def action_checkbox (obj ):
28
29
return checkbox .render (ACTION_CHECKBOX_NAME , force_text (obj .pk ))
30
+
31
+
29
32
action_checkbox .short_description = mark_safe (
30
33
'<input type="checkbox" id="action-toggle" />' )
31
34
action_checkbox .allow_tags = True
32
35
action_checkbox .allow_export = False
33
36
action_checkbox .is_column = False
34
37
38
+
35
39
class BaseActionView (ModelAdminView ):
36
40
action_name = None
37
41
description = None
@@ -70,7 +74,7 @@ def delete_models(self, queryset):
70
74
n = queryset .count ()
71
75
if n :
72
76
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 )})
74
78
queryset .delete ()
75
79
else :
76
80
for obj in queryset :
@@ -88,10 +92,18 @@ def do_action(self, queryset):
88
92
89
93
using = router .db_for_write (self .model )
90
94
95
+ if django_version > (2 , 0 ):
96
+ setattr (self .admin_site ._registry [self .model ], 'has_delete_permission' , self .has_delete_permission )
97
+
91
98
# Populate deletable_objects, a data structure of all related objects that
92
99
# 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 )
95
107
96
108
# The user has already confirmed the deletion.
97
109
# Do the deletion and return a None to display the change list view again.
0 commit comments