Support for a list of expansions with multiple expand parameters instead of separated by a comma.
Opened this issue · 1 comments
SorianoMarmol commented
Hello. First of all, thank you for your work and effort with the library!
We have noticed that, despite expansions working correctly with multiple expansion parameters:
expand=field1&expand=field2 instead of ?expand=field1,field2
the 'is_expanded' function does not respond appropriately due to the use of 'request.query_params.get(EXPAND_PARAM).
'
In the case of receiving a list, it only returns one of the values.
However, the 'getlist' method does return both fields.
I illustrate it with an example:
# expand=field1&expand=field2
ipdb> self.request.query_params
<QueryDict: {'expand': ['asset', 'positions']}>
ipdb> self.request.query_params.getlist('expand')
['field1', 'field2']
ipdb> self.request.query_params.get('expand')
'field2'
In this case, it's already a list.
Would it be possible to manage this scenario as well?
SorianoMarmol commented
Something like that
def is_expanded(request, field: str) -> bool:
""" Examines request object to return boolean of whether
passed field is expanded.
"""
expand_value = request.query_params.getlist(EXPAND_PARAM)
if not expand_value:
return False
expand_fields = []
if len(expand_value) > 1: # already a list
expand_params = expand_value
else:
expand_params = expand_value[0].split(",")
for f in expand_params:
expand_fields.extend([_ for _ in f.split(".")])
return any(field for field in expand_fields if field in WILDCARD_VALUES) or field in expand_fields