def _parse_logical_op(self, arg, value, op, prevent_expand=True):
if isinstance(value, dict):
return self._build_filter_expressions(value, op, prevent_expand=prevent_expand)
if not isinstance(value, list):
raise HTTPBadRequest('Invalid attribute', 'Filter attribute {} is invalid'.format(arg))
parts = []
for subconditions in value:
if not isinstance(subconditions, dict):
raise HTTPBadRequest('Invalid attribute', 'Filter attribute {} is invalid'.format(arg))
subexpressions = self._build_filter_expressions(subconditions, 'must', prevent_expand=prevent_expand)
if subexpressions is not None:
parts.append(subexpressions)
result = None
if len(parts) > 1:
parts = self._group_nested(parts, op)
if len(parts) > 1:
result = {'bool': {op: parts}}
elif len(parts) == 1:
result = parts[0] if op != 'must_not' else {'bool': {'must_not': parts[0]}}
return result
评论列表
文章目录