def factory(result): path = result.get('fields', {}).get('path.path', None) if type(path) in (list, tuple, set) and len(path) > 0: path = path[0] if path: rid = catalog.uids.get(path) try: return catalog[rid] except TypeError: logger.error( 'Got not integer key for result: {0}'.format(result)) return None except KeyError: logger.error( "Couldn't get catalog entry for result: {0}".format( result)) return None
def factory(result): path = result.get('fields', {}).get('path.path', None) if type(path) in (list, tuple, set) and len(path) > 0: path = path[0] if path: rid = catalog.uids.get(path) try: return catalog[rid] except TypeError: logger.error( 'Got not integer key for result: {0}'.format(result) ) return None except KeyError: logger.error( "Couldn't get catalog entry for result: {0}".format(result) ) return None
def searchResults(self, REQUEST=None, check_perms=False, **kw): enabled = False if self.enabled: # need to also check if it is a search result we care about # using EL for if getESOnlyIndexes().intersection(kw.keys()): enabled = True if not enabled: if check_perms: return self.catalogtool._old_searchResults(REQUEST, **kw) else: return self.catalogtool._old_unrestrictedSearchResults( REQUEST, **kw) if isinstance(REQUEST, dict): query = REQUEST.copy() else: query = {} query.update(kw) if check_perms: show_inactive = query.get('show_inactive', False) if isinstance(REQUEST, dict) and not show_inactive: show_inactive = 'show_inactive' in REQUEST user = _getAuthenticatedUser(self.catalogtool) query['allowedRolesAndUsers'] = \ self.catalogtool._listAllowedRolesAndUsers(user) if not show_inactive and not _checkPermission( AccessInactivePortalContent, self.catalogtool): query['effectiveRange'] = DateTime() orig_query = query.copy() logger.debug('Running query: %s' % repr(orig_query)) try: results = self.search(query) return results except Exception: logger.error( 'Error running Query: {0!r}'.format(orig_query), exc_info=True) return self.catalogtool._old_searchResults(REQUEST, **kw)