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
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)
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)