From b63323861005fd9536c201c47c30afc67f00d0f4 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Fri, 8 Feb 2019 00:53:57 -0400 Subject: [PATCH] Fix pk_list_field processing This field was being ignored. Improved the code to check for values in sequence. Signed-off-by: Roberto Rosario --- mayan/apps/rest_api/mixins.py | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/mayan/apps/rest_api/mixins.py b/mayan/apps/rest_api/mixins.py index 3a08e520c6..2324cb570b 100644 --- a/mayan/apps/rest_api/mixins.py +++ b/mayan/apps/rest_api/mixins.py @@ -35,22 +35,33 @@ class ExternalObjectListSerializerMixin(object): pk_field = self.get_external_object_list_option('pk_field') pk_list_field = self.get_external_object_list_option('pk_list_field') - if pk_field: - id_list = (self.validated_data.get(pk_field),) - elif pk_list_field: - id_list = self.validated_data.get(pk_list_field, '').split(',') - else: + if not pk_field and not pk_list_field: raise ImproperlyConfigured( 'ExternalObjectListSerializerMixin requires a ' - 'external_object_list__pk_field a ' + 'external_object_list_pk_field a ' 'external_object_list_pk_list_field.' ) + + if pk_field: + pk_field_value = self.validated_data.get(pk_field) + + if pk_list_field: + pk_list_field_value = self.validated_data.get(pk_list_field) + + if pk_field_value: + id_list = (pk_field_value,) + elif pk_list_field_value: + id_list = pk_list_field_value or ''.split(',') + else: + id_list = () + return queryset.filter(pk__in=id_list) def get_external_object_list_option(self, option_name): return getattr( - self.external_object_list_options, 'external_object_list_{}'.format(option_name), None + self.external_object_list_options, 'external_object_list_{}'.format(option_name), + None ) def get_external_object_list_queryset(self):