Beispiel #1
0
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))
    )
Beispiel #2
0
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))
    )
Beispiel #3
0
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)
Beispiel #4
0
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)
Beispiel #5
0
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)