Esempio n. 1
0
 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 = []
Esempio n. 3
0
 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)
Esempio n. 4
0
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)
Esempio n. 5
0
 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"], {}))
Esempio n. 6
0
 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)
Esempio n. 7
0
 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'], {}))
Esempio n. 8
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)
 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)
Esempio n. 10
0
    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
Esempio n. 11
0
 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)
Esempio n. 12
0
    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