Ejemplo n.º 1
0
def convert_to_or_query(filter_groups):
    and_group = FilterGroup([], "AND")
    or_group = FilterGroup([], "OR")
    filters = itertools.chain.from_iterable(
        [f.filter_list for f in filter_groups])
    for _filter in filters:
        if _is_exempt_filter(_filter):
            and_group.filter_list.append(_filter)
        else:
            or_group.filter_list.append(_filter)
    if and_group.filter_list:
        return [and_group, or_group]
    else:
        return [or_group]
Ejemplo n.º 2
0
def test_filter_group_from_dict_gives_correct_json_representation(query_filter):
    filter_group_dict = {
        "filterClause": "AND",
        "filters": [{"operator": "IS", "term": "testterm", "value": "testval"}],
    }
    expected = '{"filterClause":"AND", "filters":[{"operator":"IS", "term":"testterm", "value":"testval"}]}'
    filter_group = FilterGroup.from_dict(filter_group_dict)
    assert str(filter_group) == expected
Ejemplo n.º 3
0
def _parse_query_from_json(ctx, param, arg):
    if arg is None:
        return
    try:
        query = json.loads(arg)
        filter_groups = [FilterGroup.from_dict(group) for group in query["groups"]]
        return filter_groups
    except json.JSONDecodeError as json_error:
        raise click.BadParameter(f"Unable to parse JSON: {json_error}")
    except KeyError as key_error:
        raise click.BadParameter(f"Unable to build query from input JSON: {key_error}")
Ejemplo n.º 4
0
 def from_dict(cls, _dict, group_clause="AND", **kwargs):
     filter_groups = [FilterGroup.from_dict(item) for item in _dict["groups"]]
     return cls(*filter_groups, group_clause=group_clause, **kwargs)
Ejemplo n.º 5
0
def unicode_event_filter_group(unicode_query_filter):
    return FilterGroup([unicode_query_filter])
Ejemplo n.º 6
0
def event_filter_group(query_filter):
    return FilterGroup([query_filter])
Ejemplo n.º 7
0
 def from_dict(cls, _dict, group_clause=u"AND"):
     filter_groups = [
         FilterGroup.from_dict(item) for item in _dict[u"groups"]
     ]
     return cls(*filter_groups, group_clause=group_clause)