Esempio n. 1
0
    def paged_query_or_search(cls, app_config, user, query, search_query, filter, limit=None, page=0, sort=None, **kw):
        """Switch between paged_query and paged_search based on filter.

        query - query in mongo syntax
        search_query - query in solr syntax
        """
        solr_sort = None
        if sort:
            from forgetracker.tracker_main import _mongo_col_to_solr_col

            sort_split = sort.split(" ")
            solr_col = _mongo_col_to_solr_col(sort_split[0])
            solr_sort = "%s %s" % (solr_col, sort_split[1])
        if not filter:
            result = cls.paged_query(app_config, user, query, sort=sort, limit=limit, page=page, **kw)
            t = cls.query.find().first()
            if t:
                search_query = cls.translate_query(search_query, t.index())
            result["filter_choices"] = tsearch.query_filter_choices(search_query)
        else:
            result = cls.paged_search(
                app_config, user, search_query, filter=filter, sort=solr_sort, limit=limit, page=page, **kw
            )

        result["sort"] = sort
        result["url_sort"] = solr_sort if solr_sort else ""
        return result
Esempio n. 2
0
def test_query_filter_choices(c, search):
    hit, expected = hit_mock()
    search.return_value = hit
    result = query_filter_choices()
    params = {
        'short_timeout':
        True,
        'fq': [
            'project_id_s:%s' % c.project._id,
            'mount_point_s:%s' % c.app.config.options.mount_point,
            'type_s:Ticket'
        ],
        'rows':
        0,
        'facet':
        'true',
        'facet.field':
        ['_milestone_s', 'status_s', 'assigned_to_s', 'reported_by_s'],
        'facet.limit':
        -1,
        'facet.sort':
        'index',
        'facet.mincount':
        1
    }
    search.assert_called_once_with(None, **params)
    assert_equal(result, expected)
Esempio n. 3
0
def test_query_filter_choices(c, search):
    hit, expected = hit_mock()
    search.return_value = hit
    result = query_filter_choices()
    params = {'short_timeout': True,
              'fq': ['project_id_s:%s' % c.project._id,
                     'mount_point_s:%s' % c.app.config.options.mount_point,
                     'type_s:Ticket'],
              'rows': 0,
              'facet': 'true',
              'facet.field': ['_milestone_s', 'status_s',
                              'assigned_to_s', 'reported_by_s'],
              'facet.limit': -1,
              'facet.sort': 'index',
              'facet.mincount': 1}
    search.assert_called_once_with(None, **params)
    assert_equal(result, expected)