def selected(self): """Determine selected facets and prepare links to clear them; this assumes that facets are selected using filter queries.""" info = [] facets = param(self, 'facet.field') facet_queries = self.facet_queries() fq = param(self, 'fq') for idx, query in enumerate(fq): field, value = query.split(':', 1) params = self.request.form.copy() params['fq'] = fq[:idx] + fq[idx + 1:] # Facet queries are handled slightly different # (they are not enclosed by double quotes) if field in facet_queries: # Look up a vocabulary to provide a title for this facet vfactory = queryUtility(IFacetTitleVocabularyFactory, name=field) if vfactory is None: # Use the default fallback vfactory = getUtility(IFacetTitleVocabularyFactory) vocabulary = vfactory(self.context) if value in vocabulary: value = vocabulary.getTerm(value).title if isinstance(value, Message): value = translate(value, context=self.request) info.append( dict(title=field, value=value, query=urlencode(params, doseq=True))) continue # Facet fields if field not in facets: params['facet.field'] = facets + [field] if value.startswith('"') and value.endswith('"'): # Look up a vocabulary to provide a title for this facet vfactory = queryUtility(IFacetTitleVocabularyFactory, name=field) if vfactory is None: # Use the default fallback vfactory = getUtility(IFacetTitleVocabularyFactory) vocabulary = vfactory(self.context) value = value[1:-1] if value in vocabulary: value = vocabulary.getTerm(value.decode('utf8')).title if isinstance(value, Message): value = translate(value, context=self.request) info.append( dict(title=field, value=value, query=urlencode(params, doseq=True))) return info
def selected(self): """Determine selected facets and prepare links to clear them; this assumes that facets are selected using filter queries.""" info = [] facets = param(self, 'facet.field') facet_queries = self.facet_queries() or [] fq = param(self, 'fq') for idx, query in enumerate(fq): field, value = query.split(':', 1) params = self.request.form.copy() params['fq'] = fq[:idx] + fq[idx+1:] # Facet queries are handled slightly different # (they are not enclosed by double quotes) if field in facet_queries: # Look up a vocabulary to provide a title for this facet vfactory = queryUtility(IFacetTitleVocabularyFactory, name=field) if vfactory is None: # Use the default fallback vfactory = getUtility(IFacetTitleVocabularyFactory) vocabulary = vfactory(self.context) if value in vocabulary: value = vocabulary.getTerm(value).title if isinstance(value, Message): value = translate(value, context=self.request) info.append(dict(title=field, value=value, query=urlencode(params, doseq=True))) continue # Facet fields if field not in facets: params['facet.field'] = facets + [field] if value.startswith('"') and value.endswith('"'): # Look up a vocabulary to provide a title for this facet vfactory = queryUtility(IFacetTitleVocabularyFactory, name=field) if vfactory is None: # Use the default fallback vfactory = getUtility(IFacetTitleVocabularyFactory) vocabulary = vfactory(self.context) value = value[1:-1] if value in vocabulary: value = vocabulary.getTerm(value.decode('utf8')).title if isinstance(value, Message): value = translate(value, context=self.request) info.append(dict(title=field, value=value, query=urlencode(params, doseq=True))) return info
def hiddenfields(self): """ render hidden fields suitable for inclusion in search forms """ facet_params = facetParameters(self.context, self.request) queries = facets.param(self, 'fq') fields = filter(lambda f: facet_params['types'][f] == 'standard', facet_params['fields']) ranges = filter(lambda f: facet_params['types'][f] == 'range', facet_params['fields']) return self.hidden(facets=fields, ranges=ranges, queries=queries, other=[])
def hiddenfields(self): facets, dependencies = facetParameters(self) facets = list(facets) queries = param(self, 'fq') site_area = self.initial_site_area_filter() if site_area: queries = ['site_area:"%s"' % site_area] if 'site_area' in facets: facets.remove('site_area') return self.hidden(facets=facets, queries=queries)
def selected(self): """ determine selected facets and prepare links to clear them; this assumes that facets are selected using filter queries """ info = [] facets = param(self, 'facet.field') fq = param(self, self.queryparam) fq = [x for x in fq] if self.queryparam == 'fq': fq = filter(lambda x: x.split(':')[0].strip('+') in self.facet_fields, fq) form = self.form for idx, query in enumerate(fq): params = self.form.copy() if self.queryparam == 'fq': field, value = query.split(':', 1) else: field = self.queryparam value = '"%s"' % query params[self.queryparam] = fq[:idx] + fq[idx+1:] if field not in facets: params['facet.field'] = facets + [field] if value.startswith('"') and value.endswith('"'): info.append(dict(title=field, value=value[1:-1], query=make_query(params, doseq=True))) return info