def display(topic): specs = { 'recent_datasets': topic_search_for(topic, DatasetSearch, sort='-created', page_size=9), 'featured_reuses': topic_search_for(topic, ReuseSearch, featured=True, page_size=6), } keys, queries = zip(*specs.items()) results = search.multisearch(*queries) return theme.render( 'topic/display.html', topic=topic, datasets=[d for d in topic.datasets if hasattr(d, 'pk')], **dict(zip(keys, results)) )
def render_search(): params = multi_to_dict(request.args) params['facets'] = True # We only fetch relevant data for the given filter. if 'tag' in params: types = ['datasets', 'reuses'] elif 'badge' in params: types = ['datasets', 'organizations'] else: types = ['datasets', 'reuses', 'organizations'] models = [MAPPING[typ] for typ in types] results = search.multisearch(*models, **params) context = dict(zip(types, results)) territories = check_for_territories(params.get('q')) context['territories'] = territories return theme.render('search.html', **context)
def render_search(): # We only fetch relevant data for the given filter. # To do so, we parse query for each type # and we only keep types supporting all parameters adapters = {t: search.adapter_for(m) for t, m in MAPPING.items()} type_args = { t: not_none_dict(a.as_request_parser().parse_args()) for t, a in adapters.items() } all_args = set.union(*[set(args.keys()) for args in type_args.values()]) types = [ typ for typ, args in type_args.items() if set(args.keys()) == all_args ] params = type_args[types[0]] params['facets'] = True models = [MAPPING[typ] for typ in types] results = search.multisearch(*models, **params) context = dict(zip(types, results)) territories = check_for_territories(params.get('q')) context['territories'] = territories return theme.render('search.html', **context)
def render_search(): # We only fetch relevant data for the given filter. # To do so, we parse query for each type # and we only keep types supporting all parameters adapters = {t: search.adapter_for(m) for t, m in MAPPING.items()} type_args = { t: not_none_dict(a.as_request_parser().parse_args()) for t, a in adapters.items() } all_args = set.union(*[ set(args.keys()) for args in type_args.values() ]) types = [ typ for typ, args in type_args.items() if set(args.keys()) == all_args ] params = type_args[types[0]] params['facets'] = True models = [MAPPING[typ] for typ in types] results = search.multisearch(*models, **params) context = dict(zip(types, results)) territories = check_for_territories(params.get('q')) context['territories'] = territories return theme.render('search.html', **context)