From 6f82ee8cb583b7ca5c81c33593fe647826590c74 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Wed, 21 Oct 2015 03:41:12 -0400 Subject: [PATCH] Make MultipleInstanceActionMixin operate on a queryset and not on a list of objects. Get the id_list from GET or POST requests, not just GET requests. --- mayan/apps/common/mixins.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/mayan/apps/common/mixins.py b/mayan/apps/common/mixins.py index 0555427707..ce7f287e1d 100644 --- a/mayan/apps/common/mixins.py +++ b/mayan/apps/common/mixins.py @@ -47,6 +47,14 @@ class MultipleInstanceActionMixin(object): success_message = 'Operation performed on %(count)d object' success_message_plural = 'Operation performed on %(count)d objects' + def get_pk_list(self): + return self.request.GET.get( + 'id_list', self.request.POST.get('id_list', '') + ).split(',') + + def get_queryset(self): + return self.model.objects.filter(pk__in=self.get_pk_list()) + def get_success_message(self, count): return ungettext( self.success_message, @@ -58,10 +66,9 @@ class MultipleInstanceActionMixin(object): def post(self, request, *args, **kwargs): count = 0 - for pk in request.GET.get('id_list', '').split(','): - document = get_object_or_404(self.model, pk=pk) + for instance in self.get_queryset(): try: - self.object_action(instance=document) + self.object_action(instance=instance) except PermissionDenied: pass else: