Fixes quantum.api.v2.base._filters to be more intuitive

Converts values in one place and sets dictonary according to the return value

Fixes bug #1092977

Change-Id: I05dd9b24a8ab20f8c302c22f5bdda2a80ec90e19
This commit is contained in:
Zhongyue Luo
2012-12-19 11:31:25 +08:00
parent ee7d1cbdaa
commit 2b75d6be2c

View File

@@ -67,8 +67,10 @@ def _filters(request, attr_info):
if key == 'fields':
continue
values = [v for v in request.GET.getall(key) if v]
key_attr_info = attr_info.get(key, {})
if not key_attr_info and values:
if not values:
continue
key_attr_info = attr_info.get(key)
if not key_attr_info:
res[key] = values
continue
convert_list_to = key_attr_info.get('convert_list_to')
@@ -77,12 +79,13 @@ def _filters(request, attr_info):
if convert_to:
convert_list_to = lambda values_: [convert_to(x)
for x in values_]
if convert_list_to:
result_values = convert_list_to(values)
else:
result_values = values
else:
convert_list_to = lambda values_: None
result_values = convert_list_to(values)
if result_values:
res[key] = result_values
else:
res[key] = values
return res