Fix pk_list_field processing

This field was being ignored. Improved the code to check for
values in sequence.

Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
This commit is contained in:
Roberto Rosario
2019-02-08 00:53:57 -04:00
parent ae1634c378
commit b633238610

View File

@@ -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):