Test coverage for vnccollab.common.livesearch
1: from plone import api
1: from plone.memoize import ram
1: from vnccollab.common.cache import TimeCacheKey
1: from vnccollab.common import searchutil
1: CACHE_TIME = 15 * 60 # 15 minutes
1: cache = TimeCacheKey(CACHE_TIME)
1: def get_query(query):
3: searchable_text = query.get('SearchableText', '')
3: key, val = searchutil._key_and_val_from_searchable_text(searchable_text)
3: if key is None or key not in searchutil.SEARCH_KEYS:
1: return query
2: portal_type = query.get('portal_type', [])
2: if key == 'type':
1: types = searchutil._types_from_type_string(val)
10: portal_type = [x for x in portal_type if x in types]
1: query['portal_type'] = portal_type
1: del(query['SearchableText'])
1: elif key == 'user':
1: user_ids = searchutil._user_ids_from_users_string(val)
1: query['Creator'] = user_ids
1: del(query['SearchableText'])
2: return query
1: def query(params):
3: params = get_query(params)
3: result = _query(**params)
3: return result
1: @ram.cache(cache)
def _query(**params):
3: catalog = api.portal.get_tool(name='portal_catalog')
3: result = catalog(**params)
3: return result