コード例 #1
0
    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
コード例 #2
0
  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)
コード例 #3
0
ファイル: query.py プロジェクト: mark0978/webapp-improved
 def _to_filter(self, bindings):
     filters = filter(None,
                      (node._to_filter(bindings) for node in self.__nodes))
     return datastore_query.CompositeFilter(_AND, filters)