Skip to content

Commit

Permalink
Merge pull request openwisp#235 from Vivekrajput20/issue#231
Browse files Browse the repository at this point in the history
[django] Improve support for django 2.2 openwisp#231
  • Loading branch information
nemesifier committed Jun 17, 2019
2 parents 6bbb954 + b5752ae commit 8cbaf47
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 7 deletions.
33 changes: 28 additions & 5 deletions django_freeradius/base/admin.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import swapper
from django.contrib import messages
from django.contrib.admin import ModelAdmin, StackedInline
from django.contrib.admin.actions import delete_selected
from django.contrib.admin.templatetags.admin_static import static
from django.contrib.admin.utils import model_ngettext
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from django.core.exceptions import PermissionDenied
from django.utils.translation import ugettext_lazy as _
from openwisp_utils.admin import ReadOnlyAdmin, TimeReadonlyAdminMixin

Expand Down Expand Up @@ -141,16 +142,32 @@ def has_delete_permission(self, request, obj=None):
return False
return super().has_delete_permission(request, obj)

def delete_selected_batch(self, request, queryset):
def delete_selected_groups(self, request, queryset):
if self.get_default_queryset(request, queryset).exists():
msg = _('Cannot proceed with the delete operation because '
'the batch of items contains the default group, '
'which cannot be deleted')
self.message_user(request, msg, messages.ERROR)
return False
return delete_selected(self, request, queryset)

actions = ['delete_selected_batch']
if not self.has_delete_permission(request):
raise PermissionDenied
n = queryset.count()
if n:
queryset.delete()
self.message_user(request, _("Successfully deleted %(count)d %(items)s.") % {
"count": n, "items": model_ngettext(self.opts, n)
}, messages.SUCCESS)
return None

delete_selected_groups.allowed_permissions = ('delete',)

def get_actions(self, request):
actions = super().get_actions(request)
if 'delete_selected' in actions:
del actions['delete_selected']
return actions

actions = ['delete_selected_groups']

def get_default_queryset(self, request, queryset):
""" overridable """
Expand Down Expand Up @@ -273,6 +290,12 @@ def delete_model(self, request, obj):
obj.users.all().delete()
super(AbstractRadiusBatchAdmin, self).delete_model(request, obj)

def get_actions(self, request):
actions = super().get_actions(request)
if 'delete_selected' in actions:
del actions['delete_selected']
return actions

actions = ['delete_selected_batches']

def delete_selected_batches(self, request, queryset):
Expand Down
4 changes: 2 additions & 2 deletions django_freeradius/tests/base/test_admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -319,7 +319,7 @@ def test_radius_group_delete_selected_default(self):
rg = self.radius_group_model.objects
default = rg.get(default=True)
response = self.client.post(url, {
'action': 'delete_selected_batch',
'action': 'delete_selected_groups',
'_selected_action': str(default.pk),
'select_across': '0',
'index': '0',
Expand All @@ -334,7 +334,7 @@ def test_radius_group_delete_selected_non_default(self):
rg = self.radius_group_model.objects
non_default = rg.get(default=False)
response = self.client.post(url, {
'action': 'delete_selected',
'action': 'delete_selected_groups',
'_selected_action': str(non_default.pk),
'select_across': '0',
'index': '0',
Expand Down

0 comments on commit 8cbaf47

Please sign in to comment.