You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Jun 19, 2022. It is now read-only.
I'm building an AJAX search form that includes a search box and two pulldown filters with predefined options. If the user fills in the search and also uses the pull down, I'd like to chain that filter with your search. Wasn't sure how to pull it off right. But here's a hack I put together that adds a dict kwarg. Let me know what you think.
@classmethod
def search(cls, phrase, limit=10, keys_only=False, extra_filters=None):
"""Queries search indices for phrases using a merge-join.
Use of this class method lets you easily restrict searches to a kind
and retrieve entities or keys.
Args:
phrase: Search phrase (string)
limit: Number of entities or keys to return.
keys_only: If True, return only keys with title of parent entity.
Returns:
A list. If keys_only is True, the list holds (key, title) tuples.
If keys_only is False, the list holds Model instances.
"""
key_list = Searchable.full_text_search(
phrase, limit=limit, kind=cls.kind(),
stemming=cls.INDEX_STEMMING,
multi_word_literal=cls.INDEX_MULTI_WORD)
if keys_only:
logging.debug("key_list: %s", key_list)
return key_list
else:
if extra_filters:
query = cls.all()
for field, value in extra_filters.items():
query = query.filter('%s =' % field, value)
filtered_set = [query.ancestor(key_and_title[0]).get() for key_and_title in key_list]
return [i for i in filtered_set if i]
else:
return [cls.get(key_and_title[0]) for key_and_title in key_list]
I'm building an AJAX search form that includes a search box and two pulldown filters with predefined options. If the user fills in the search and also uses the pull down, I'd like to chain that filter with your search. Wasn't sure how to pull it off right. But here's a hack I put together that adds a dict kwarg. Let me know what you think.