示例#1
0
 def _make_browser(self):
     url = url_for(controller='dimension', action='entries',
             dataset=c.dataset.name,
             dimension=c.dimension,
             name=c.member['name'])
     c.browser = Browser(c.dataset, request.params, url=url)
     c.browser.filter_by("+%s:\"%s\"" % (c.dimension, c.member['name']))
     c.browser.facet_by_dimensions()
示例#2
0
def count(dataset_name=None, **query):
    '''Count the number of element that are in the *dataset_name*
    and match the ***query*.

    ``dataset``
        A dataset name or a :class:`openspending.model.Dataset` object
    ``**query``
        Parameters for an *AND* query. Only the *key* values objects
        matching these queries will be counted.

    Returns: The count as an int.
    '''

    browser = Browser({})

    # we don't want any docs. Facets listed in the Response
    browser.limit(0)
    if dataset_name is not None:
        browser.filter_by('+dataset:%s' % dataset_name)

    for (key, value) in query.items():
        if isinstance(value, bool):
            if value:
                value = 'true'
            else:
                value = 'false'
        filter_ = '+%s:%s' % (key, value)
        browser.filter_by(filter_)

    return browser.num_results
示例#3
0
def facets_for_fields(facet_fields, dataset_name=None, **query):
    '''Get the facets for the fields *facet_fields* for all elements
    that are part of the dataset *dataset_name* and that
    match ***query*.

    ``facet_fields``
         A ``list`` of field names
    ``dataset``
        A dataset name or a :class:`openspending.model.Dataset` object
    ``**query``
        Parameters for an *AND* query. Only the *key* values objects
        matching these queries will be counted.

    Returns: A ``dict`` where the keys are the names in the
    facet_fields list and the values are dictionaries with
    "<facet value>:<count>" items.
    '''
    # browser with no limit for facets.
    browser = Browser({'facet_limit': -1})
    browser.facet_by(*facet_fields)

    # we don't want any docs. Facets listed in the Response
    browser.limit(0)
    if dataset_name is not None:
        browser.filter_by('+dataset:%s' % dataset_name)

    for (key, value) in query.items():
        if isinstance(value, bool):
            if value:
                value = 'true'
            else:
                value = 'false'
        filter_ = '+%s:%s' % (key, value)
        browser.filter_by(filter_)

    return dict([(f, browser.facet_values(f)) for f in facet_fields])