Example #1
0
    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
Example #2
0
    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
Example #3
0
 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=[])
Example #4
0
    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)
Example #5
0
 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