def _makequery(self, query=None, batch=False, b_start=0, b_size=30, sort_on=None, sort_order=None, limit=0, brains=False): """Parse the (form)query and return using multi-adapter""" parsedquery = queryparser.parseFormquery( self.context, query, sort_on, sort_order, catalog_name=self.catalog_name, kwargs=self.contentFilter) if not parsedquery: if brains: return [] else: return IContentListing([]) catalog = getToolByName(self.context, self.catalog_name) if batch: parsedquery['b_start'] = b_start parsedquery['b_size'] = b_size elif limit: parsedquery['sort_limit'] = limit if 'path' not in parsedquery: parsedquery['path'] = {'query': ''} parsedquery['path']['query'] = getNavigationRoot(self.context) + \ parsedquery['path']['query'] results = catalog(parsedquery) if not brains: results = IContentListing(results) if batch: results = Batch(results, b_size, b_start) return results
def filter_query(self, query): request = self.request text = query.get('SearchableText', None) if text is None: text = request.form.get('SearchableText', '') if not text: # Without text, the only meaningful case is Subject subjects = request.form.get('Subject') if not subjects: return valid_keys = self.valid_keys for catalog_name in self.catalogs: catalog = getToolByName(self.context, catalog_name) valid_keys = valid_keys + tuple(catalog.indexes()) valid_keys = sorted(set(valid_keys)) for k, v in request.form.items(): if v and ((k in valid_keys) or k.startswith('facet.')): query[k] = v if text: query['SearchableText'] = quote_chars(text) # don't filter on created at all if we want all results created = query.get('created') if created: if created.get('query'): if created['query'][0] <= EVER: del query['created'] # respect `types_not_searched` setting types = query.get('portal_type', []) if 'query' in types: types = types['query'] query['portal_type'] = self.filter_types(types) # respect effective/expiration date query['show_inactive'] = False # respect navigation root if 'path' not in query: query['path'] = getNavigationRoot(self.context) return query