Esempio n. 1
0
 def filter(self, values, filters=(), chain_sort=(), keys_only=False,
            previous_query = None):
     """Returns a query for the given values (creates '=' filters for this
     property and additionally applies filters.
     
     With 'chain_sort' you can additionally do some kind of "fake"-sorting
     of the results. It simply runs multiple queries and combines them
     into a ChainedQueries instance."""
     if not isinstance(values, (tuple, list)):
         values = (values,)
     if previous_query is not None:
         filtered = previous_query
     else:
         if keys_only:
             filtered = self.model_class.all(keys_only=keys_only)
         else:
             filtered = self.model_class.all()
     for value in set(values):
         filtered = filtered.filter(self.name + ' =', value)
     filtered = get_filtered(filtered, *filters)
     if not chain_sort:
         return filtered
     queries = []
     for filters in chain_sort:
         query = deepcopy(filtered)
         queries.append(get_filtered(query, *filters))
     return ChainedQueries(queries)
Esempio n. 2
0
 def filter(self, values, filters=(), keys_only=False):
     """Returns a query for the given values (creates '=' filters for this
     property and additionally applies filters."""
     
     if not isinstance(values, (tuple, list)):
         values = (values,)
     if keys_only:
         filtered = self.model_class.all(keys_only=keys_only)
     else:
         filtered = self.model_class.all()
     for value in set(values):
         filtered = filtered.filter(self.name + ' =', value)
     filtered = get_filtered(filtered, *filters)
     return filtered