def GetFilterPredicate(self, *args, **kwds): """Adds filters for the search query, then delegates to the superclass. Mimics Query.GetFilterPredicate()'s signature. Raises BadFilterError if a filter on the index property already exists. Returns: datastore_query.FilterPredicate """ properties = getattr(self, "_properties", ALL_PROPERTIES) index_property_name = SearchableEntity.IndexPropertyName(properties) if index_property_name in self: raise datastore_errors.BadFilterError('%s is a reserved name.' % index_property_name) filter = super(SearchableQuery, self).GetFilterPredicate(*args, **kwds) if hasattr(self, '_search_query'): keywords = SearchableEntity._FullTextIndex( self._search_query, self._word_delimiter_regex) if keywords: search_filter = datastore_query.make_filter( index_property_name, '=', list(keywords)) if filter: filter = datastore_query.CompositeFilter( datastore_query.CompositeFilter.AND, [filter, search_filter]) else: filter = search_filter return filter
def _GetQueryCompositeFilter(self, filters, operator): """Wraps the filters in a datastore_query.CompositeFilter if length > 1.""" if not filters: return None elif len(filters) == 1: return filters[0] else: return datastore_query.CompositeFilter(operator, filters)
def _to_filter(self, bindings): filters = filter(None, (node._to_filter(bindings) for node in self.__nodes)) return datastore_query.CompositeFilter(_AND, filters)