Example #1
0
    def visit_rel_time_filter(self, node, children):
        (search_key, _, value) = children
        if search_key.name in self.date_keys:
            try:
                from_val, to_val = parse_datetime_range(value.text)
            except InvalidQuery as exc:
                raise InvalidSearchQuery(exc.message)

            # TODO: Handle negations
            if from_val is not None:
                operator = '>='
                search_value = from_val[0]
            else:
                operator = '<='
                search_value = to_val[0]
            return SearchFilter(search_key, operator, SearchValue(search_value))
        else:
            return self._handle_basic_filter(search_key, '=', SearchValue(value.text))
Example #2
0
    def visit_rel_time_filter(self, node, children):
        (search_key, _, value) = children
        if search_key.name in self.date_keys:
            try:
                from_val, to_val = parse_datetime_range(value.text)
            except InvalidQuery as exc:
                raise InvalidSearchQuery(six.text_type(exc))

            # TODO: Handle negations
            if from_val is not None:
                operator = ">="
                search_value = from_val[0]
            else:
                operator = "<="
                search_value = to_val[0]
            return SearchFilter(search_key, operator,
                                SearchValue(search_value))
        else:
            return self._handle_basic_filter(search_key, "=",
                                             SearchValue(value.text))
Example #3
0
    def visit_rel_time_filter(self, node, children):
        search_key, _, value = children
        try:
            from_val, to_val = parse_datetime_range(value.text)
        except InvalidQuery as exc:
            raise InvalidSearchQuery(exc.message)

        # TODO: Handle negations
        if from_val is not None:
            operator = '>='
            search_value = from_val[0]
        else:
            operator = '<='
            search_value = to_val[0]

        return SearchFilter(
            search_key,
            operator,
            SearchValue(search_value),
        )
Example #4
0
    def visit_aggregate_rel_date_filter(self, node, children):
        (negation, search_key, _, operator, search_value) = children
        operator = self.handle_negation(negation, operator)
        is_date_aggregate = any(key in search_key.name for key in self.date_keys)
        if is_date_aggregate:
            try:
                from_val, to_val = parse_datetime_range(search_value.text)
            except InvalidQuery as exc:
                raise InvalidSearchQuery(str(exc))

            if from_val is not None:
                operator = ">="
                search_value = from_val[0]
            else:
                operator = "<="
                search_value = to_val[0]

            return AggregateFilter(search_key, operator, SearchValue(search_value))
        else:
            search_value = operator + search_value.text if operator != "=" else search_value
            return AggregateFilter(search_key, "=", SearchValue(search_value))
Example #5
0
        if search_key.name in self.date_keys:
            try:
                search_value = parse_datetime_string(search_value)
            except InvalidQuery as exc:
                raise InvalidSearchQuery(exc.message)
            return SearchFilter(search_key, operator,
                                SearchValue(search_value))
        else:
            search_value = operator + search_value if operator != '=' else search_value
            return self._handle_basic_filter(search_key, '=',
                                             SearchValue(search_value))

    def visit_rel_time_filter(self, node, (search_key, _, value)):
        if search_key.name in self.date_keys:
            try:
                from_val, to_val = parse_datetime_range(value.text)
            except InvalidQuery as exc:
                raise InvalidSearchQuery(exc.message)

            # TODO: Handle negations
            if from_val is not None:
                operator = '>='
                search_value = from_val[0]
            else:
                operator = '<='
                search_value = to_val[0]
            return SearchFilter(search_key, operator,
                                SearchValue(search_value))
        else:
            return self._handle_basic_filter(search_key, '=',
                                             SearchValue(value.text))