Exemple #1
0
 def keyword_results(self, query=None, batch=True, b_size=10, b_start=0):
     '''Returns the result of a keywor query.
     The current accepted keywords are:
         user: An ORed list of words that should appear in the user info.
         type: An ORed list of content types.
     '''
     searchable_text = self.get_searchable_text(query)
     key, val = searchutil._key_and_val_from_searchable_text(searchable_text)
     if key == 'type':
         return self.type_results(query, batch, b_size, b_start, val)
     elif key == 'user':
         return self.user_results(query, batch, b_size, b_start, val)
     else:
         return []
def get_query(query):
    searchable_text = query.get("SearchableText", "")
    key, val = searchutil._key_and_val_from_searchable_text(searchable_text)
    if key is None or key not in searchutil.SEARCH_KEYS:
        return query

    portal_type = query.get("portal_type", [])

    if key == "type":
        types = searchutil._types_from_type_string(val)
        portal_type = [x for x in portal_type if x in types]
        query["portal_type"] = portal_type
        del (query["SearchableText"])

    elif key == "user":
        user_ids = searchutil._user_ids_from_users_string(val)
        query["Creator"] = user_ids
        del (query["SearchableText"])

    return query