def __call__(self): topic = getTopic(self.context, self.request) listCriteria = topic.listCriteria() topicCriteria = interfaces.IListCriterias(topic)() if topicCriteria: selectedCriteria = self.request.cookies.get('sfqueryDisplay', topic.REQUEST.cookies.get('sfqueryDisplay', topicCriteria.keys()[0])) criteria = [a for a in listCriteria if a.Field() == selectedCriteria] else: criteria = listCriteria criteria = [a for a in criteria if a.meta_type in ['ATPortalTypeCriterion', 'ATSelectionCriterion', 'ATListCriterion'] ] if not criteria: return False criteria = criteria[0] if criteria.meta_type == 'ATPortalTypeCriterion': return { 'name': criteria.Field(), 'values': list(criteria.getCriteriaItems()[0][1]) } if criteria.meta_type in ['ATSelectionCriterion', 'ATListCriterion']: return { 'name': criteria.Field(), 'values': list(criteria.getCriteriaItems()[0][1]['query']) + [''] } return False
def __call__(self): topic = getTopic(self.context, self.request) listCriteria = self.context.query topicCriteria = interfaces.IListCriterias(topic)() if topicCriteria: selectedCriteria = self.request.cookies.get( 'sfqueryDisplay', topic.REQUEST.cookies.get('sfqueryDisplay', topicCriteria.keys()[0])) criteria = [a for a in listCriteria if a['i'] == selectedCriteria] else: criteria = listCriteria criteria = [ a for a in criteria if a['o'] in [ 'plone.app.querystring.operation.selection.is', 'plone.app.querystring.operation.list.contains' ] or a['i'] == 'portal_type' ] if not criteria: return False criteria = criteria[0] return {'name': criteria['i'], 'values': criteria['v']}
def _getCriteriaArgs(self): context, request = self.context, self.request response = request.response query = context.buildQuery() topicCriteria = interfaces.IListCriterias(context)() listCriteria = context.listCriteria() _args = {} if not query: return ({}, []) props = getToolByName(context, 'portal_properties') charset = props and props.site_properties.default_charset or 'utf-8' if 'Type' in query.keys(): items = getCookieItems(request, 'Type', charset) if items: _args['Type'] = items else: _args['Type'] = query['Type'] elif 'portal_type' in query.keys(): items = getCookieItems(request, 'portal_type', charset) if items: _args['portal_type'] = items else: _args['portal_type'] = query['portal_type'] filters = [] #reinit cookies if criterions are no more there for cId in [c.Field() for c in listCriteria]: if cId not in topicCriteria.keys(): response.expireCookie(cId) if request.cookies.get('sfqueryDisplay', None) not in topicCriteria.keys(): response.expireCookie('sfqueryDisplay') for criteria in listCriteria: criteriaId = criteria.Field() if criteriaId and criteria.meta_type not in [ 'ATSelectionCriterion', 'ATListCriterion', 'ATSortCriterion', 'ATPortalTypeCriterion' ]: _args[criteriaId] = query[criteriaId] elif criteria.meta_type in ['ATSelectionCriterion', 'ATListCriterion'] \ and criteria.getCriteriaItems() \ and len(criteria.getCriteriaItems()[0]) > 1 \ and len(criteria.getCriteriaItems()[0][1]['query']) > 0: items = getCookieItems(request, criteriaId, charset) if items and criteriaId in topicCriteria.keys(): if 'undefined' in items: filters.append({'name': criteriaId, 'values': items}) else: _args[criteriaId] = items else: _args[criteriaId] = query[criteriaId] return _args, filters
def _getCriteriaArgs(self): context, request = self.context, self.request response = request.response listCriteria = context.query # Handle operator-only query strings accordingly. # Also convert to str since unicode breaks the catalog-query query = dict([ 'v' in a and (str(a['i']), [str(value) for value in a['v']]) or (str(a['i']), [str(value) for value in a['o']]) for a in listCriteria ]) topicCriteria = interfaces.IListCriterias(context)() _args = {} if not query: return ({}, []) props = getToolByName(context, 'portal_properties') charset = props and props.site_properties.default_charset or 'utf-8' if 'Type' in query.keys(): items = getCookieItems(request, 'Type', charset) if items: _args['Type'] = items else: _args['Type'] = query['Type'] filters = [] #reinit cookies if criterions are no more there for cId in [c['i'] for c in listCriteria]: if cId not in topicCriteria.keys(): response.expireCookie(cId) if request.cookies.get('sfqueryDisplay', None) not in topicCriteria.keys(): response.expireCookie('sfqueryDisplay') for criteria in listCriteria: criteriaId = criteria['i'] if criteria['o'] not in \ ['plone.app.querystring.operation.selection.is', 'plone.app.querystring.operation.list.contains'] \ and criteriaId != 'portal_type': _args[criteriaId] = query[criteriaId] else: items = getCookieItems(request, criteriaId, charset) if items and criteriaId in topicCriteria.keys(): if 'undefined' in items: filters.append({'name': criteriaId, 'values': items}) else: _args[criteriaId] = items else: _args[criteriaId] = query[criteriaId] return _args, filters
def _getCriteriaArgs(self): context, request = self.context, self.request response = request.response listCriteria = context.query query = dict([(key, convert(value)) for key, value in queryparser.parseFormquery( context, listCriteria).items()]) topicCriteria = interfaces.IListCriterias(context)() _args = {} if not query: return ({}, []) props = getToolByName(context, 'portal_properties') charset = props and props.site_properties.default_charset or 'utf-8' if 'Type' in query.keys(): items = getCookieItems(request, 'Type', charset) if items: _args['Type'] = items else: _args['Type'] = query['Type'] filters = [] #reinit cookies if criterions are no more there for cId in [c['i'] for c in listCriteria]: if cId not in topicCriteria.keys(): response.expireCookie(cId) if request.cookies.get('sfqueryDisplay', None) not in topicCriteria.keys(): response.expireCookie('sfqueryDisplay') for criteria in listCriteria: criteriaId = criteria['i'] if criteria['o'] not in \ ['plone.app.querystring.operation.selection.is', 'plone.app.querystring.operation.list.contains'] \ and criteriaId != 'portal_type': _args[criteriaId] = query[criteriaId] else: items = getCookieItems(request, criteriaId, charset) if items and criteriaId in topicCriteria.keys(): if 'undefined' in items: filters.append({'name': criteriaId, 'values': items}) else: _args[criteriaId] = items else: _args[criteriaId] = query[criteriaId] return _args, filters