Esempio n. 1
0
 def test_search_double_range_querymember_and(self):
     index = self._makeOne()
     self._populateIndex(index)
     index.index_doc(50, 1)
     from repoze.catalog import RangeValue
     result = index.search([RangeValue(1, 1), RangeValue(1, 2)], 'and')
     result = sorted(list(result))
     self.assertEqual(result, [5, 50])
Esempio n. 2
0
 def test_apply_dict_operator_and_with_ranges_or(self):
     from repoze.catalog import RangeValue
     index = self._makeOne()
     self._populateIndex(index)
     index.index_doc(50, 1)
     result = index.apply({'query':[RangeValue(1,1), RangeValue(1,2)],
                           'operator':'or'})
     result = sorted(list(result))
     self.assertEqual(result, [2, 5, 50])
Esempio n. 3
0
 def test_apply_dict_single_range(self):
     from repoze.catalog import RangeValue
     index = self._makeOne()
     self._populateIndex(index)
     index.index_doc(50, 1)
     result = index.apply({'query': RangeValue(1, 2)})
     result = sorted(list(result))
     self.assertEqual(result, [2, 5, 50])
Esempio n. 4
0
    def apply(self, query):
        if isinstance(query, dict):
            val = query['query']
            if isinstance(val, RangeValue):
                val = [val]
            elif not isinstance(val, (list, tuple)):
                val = [val]
            operator = query.get('operator', 'or')
            result = self.search(val, operator)
        else:
            if isinstance(query, tuple) and len(query) == 2:
                # b/w compat stupidity; this needs to die
                query = RangeValue(*query)
                query = [query]
            elif not isinstance(query, (list, tuple)):
                query = [query]
            result = self.search(query, 'or')

        return result