def testFacetDependencies(self): cfg = SolrConnectionConfig() provideUtility(cfg, ISolrConnectionConfig) # dependency info can be set via the configuration utility... cfg.facets = ['foo:bar'] context = Dummy() request = {} view = DummyView(context, request) self.assertEqual(facetParameters(view), (['foo:bar'], dict(foo=['bar']))) # overridden on the context context.facet_fields = ['bar:foo'] self.assertEqual(facetParameters(view), (['bar:foo'], dict(bar=['foo']))) # and via the request request['facet.field'] = ['foo:bar', 'bar:foo'] self.assertEqual( facetParameters(view), (['foo:bar', 'bar:foo'], dict(foo=['bar'], bar=['foo'])) ) # white space shouldn't matter request['facet.field'] = ['foo : bar', 'bar :foo'] self.assertEqual( facetParameters(view), (['foo : bar', 'bar :foo'], dict(foo=['bar'], bar=['foo'])) ) # clean up... getGlobalSiteManager().unregisterUtility(cfg, ISolrConnectionConfig)
def testFacetDependencies(self): cfg = getConfig() # dependency info can be set via the configuration utility... cfg.facets = ['foo:bar'] context = Dummy() request = {} view = DummyView(context, request) self.assertEqual(facetParameters(view), (['foo:bar'], dict(foo=['bar']))) # overridden on the context context.facet_fields = ['bar:foo'] self.assertEqual(facetParameters(view), (['bar:foo'], dict(bar=['foo']))) # and via the request request['facet.field'] = ['foo:bar', 'bar:foo'] self.assertEqual( facetParameters(view), (['foo:bar', 'bar:foo'], dict(foo=['bar'], bar=['foo'])) ) # white space shouldn't matter request['facet.field'] = ['foo : bar', 'bar :foo'] self.assertEqual( facetParameters(view), (['foo : bar', 'bar :foo'], dict(foo=['bar'], bar=['foo'])) ) # XXX: Manually clean up after the test. We should be able to remove # this once our test isolation issues have been dealt with. cfg.facets = []
def facet_parameters(self): """Return the facet parameters to be queried for as an url-encoded string. """ facets, dependencies = facetParameters(self) return urlencode({'facet': 'true', 'facet.field': facets, }, doseq=True)
def facetParameters(context, request): """ determine facet fields to be queried for """ marker = [] fields, dependencies = facets.facetParameters(context, request) ranges = request.get('facet.range', request.get('facet_range', marker)) if isinstance(ranges, basestring): ranges = [ranges] if ranges is marker: ranges = getattr(context, 'facet_ranges', marker) if ranges is marker: ranges = [] if fields is None: fields = [] mgr = component.getUtility(ISolrConnectionManager) schema = mgr.getSchema() for field in fields: if schema[field]['type'] in RANGE_TYPES: fields.remove(field) if field not in ranges: ranges.append(field) types = dict() for f in fields: types.update({f:'standard'}) for r in ranges: types.update({r:'range'}) return dict(fields=tuple(fields) + tuple(ranges), types=types, dependencies=dependencies)
def testFacetParameters(self): context = Dummy() request = {} view = DummyView(context, request) # with nothing set up, no facets will be returned self.assertEqual(facetParameters(view), ([], {})) # setting up the regular config utility should give the default value cfg = getConfig() self.assertEqual(facetParameters(view), ([], {})) # so let's set it... cfg.facets = ["foo"] self.assertEqual(facetParameters(view), (["foo"], {})) # override the setting on the context context.facet_fields = ["bar"] self.assertEqual(facetParameters(view), (["bar"], {})) # and again via the request request["facet.field"] = ["foo", "bar"] self.assertEqual(facetParameters(view), (["foo", "bar"], {}))
def facet_parameters(self): """Return the facet parameters to be queried for as an url-encoded string. """ facets, dependencies = facetParameters(self.context, self.request) return urlencode({ 'facet': 'true', 'facet.field': facets, }, doseq=True)
def testFacetParameters(self): context = Dummy() request = {} view = DummyView(context, request) # with nothing set up, no facets will be returned self.assertEqual(facetParameters(view), ([], {})) # setting up the regular config utility should give the default value cfg = getConfig() self.assertEqual(facetParameters(view), ([], {})) # so let's set it... cfg.facets = ['foo'] self.assertEqual(facetParameters(view), (['foo'], {})) # override the setting on the context context.facet_fields = ['bar'] self.assertEqual(facetParameters(view), (['bar'], {})) # and again via the request request['facet.field'] = ['foo', 'bar'] self.assertEqual(facetParameters(view), (['foo', 'bar'], {}))
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 testFacetParameters(self): context = Dummy() request = {} view = DummyView(context, request) # with nothing set up, no facets will be returned self.assertEqual(facetParameters(view), ([], {})) # setting up the regular config utility should give the default value cfg = SolrConnectionConfig() provideUtility(cfg, ISolrConnectionConfig) self.assertEqual(facetParameters(view), ([], {})) # so let's set it... cfg.facets = ["foo"] self.assertEqual(facetParameters(view), (["foo"], {})) # override the setting on the context context.facet_fields = ["bar"] self.assertEqual(facetParameters(view), (["bar"], {})) # and again via the request request["facet.field"] = ["foo", "bar"] self.assertEqual(facetParameters(view), (["foo", "bar"], {})) # clean up... getGlobalSiteManager().unregisterUtility(cfg, ISolrConnectionConfig)
def _addFacetArgs(self, args): facet_dict = {'use_solr':True, 'facet':'true'} annotations = IAnnotations(self.context) facets = annotations.get('slc.facetedcalendar.facets', None) if facets is None: facets, dependencies = facetParameters(self.context, self.request) for facet in facets: facet_dict['facet.field'] = list(facets) args.update(facet_dict) return args
def testFacetParameters(self): context = Dummy() request = {} # with nothing set up, no facets will be returned self.assertEqual(facetParameters(context, request), ([], {})) # setting up the regular config utility should give the default value cfg = SolrConnectionConfig() provideUtility(cfg, ISolrConnectionConfig) self.assertEqual(facetParameters(context, request), ([], {})) # so let's set it... cfg.facets = ['foo'] self.assertEqual(facetParameters(context, request), (['foo'], {})) # override the setting on the context context.facet_fields = ['bar'] self.assertEqual(facetParameters(context, request), (['bar'], {})) # and again via the request request['facet.field'] = ['foo', 'bar'] self.assertEqual(facetParameters(context, request), (['foo', 'bar'], {})) # clean up... getGlobalSiteManager().unregisterUtility(cfg, ISolrConnectionConfig)
def search_url(self): """Construct the URL that will be used to link cloud terms to a search for that term. Assumes the search term will be appended at the end. """ portal_url = getToolByName(self.context, 'portal_url') base_url = portal_url.getPortalObject().absolute_url() url = "%s/@@search?" % base_url # Add faceting parameters facets, dependencies = facetParameters(self.context, self.request) url += '&facet=true' for facet in facets: url += '&facet.field=%s' % facet url += '&SearchableText=' return url