Example #1
0
def _get_map_results(query):
    q = extension.map_query(query)

    q = _filter_security(q, query.user, Map, 'view_map')

    if query.owner:
        q = q.filter(owner__username=query.owner)

    if query.extent:
        q = filter_by_extent(Map, q, query.extent)

    if query.added:
        q = q.filter(last_modified__gte=query.added)

    if query.period:
        q = filter_by_period(Map, q, *query.period)

    if query.kw:
        # this is a somewhat nested query but it performs way faster than
        # other approaches
        layers_with_kw = Layer.objects.filter(_build_kw_only_query(query.kw)).values('typename')
        map_layers_with = MapLayer.objects.filter(name__in=layers_with_kw).values('map')
        q = q.filter(id__in=map_layers_with)

    if query.query:
        q = _build_map_layer_text_query(q, query, query_keywords=True)
        rules = _rank_rules(Map,
            ['title',10, 5],
            ['abstract',5, 2],
        )
        q = _safely_add_relevance(q, query, rules)

    return q.distinct()
Example #2
0
def _get_map_results(query):
    q = extension.map_query(query)

    q = _filter_security(q, query.user, Map, 'view_map')

    if query.owner:
        q = q.filter(owner__username=query.owner)

    if query.extent:
        q = filter_by_extent(Map, q, query.extent)

    if query.added:
        q = q.filter(last_modified__gte=query.added)

    if query.period:
        q = filter_by_period(Map, q, *query.period)

    if query.kw:
        q = q.filter(_build_kw_only_query(query.kw))

    if query.exclude:
        q = q.exclude(reduce(operator.or_, [Q(title__contains=ex) for ex in query.exclude]))

    if query.categories:
        q = _filter_category(q, query.categories)

    if query.query:
        q = _build_map_layer_text_query(q, query, query_keywords=True)
        rules = _rank_rules(ResourceBase,
            ['title',10, 5],
            ['abstract',5, 2],
        )
        q = _safely_add_relevance(q, query, rules)

    return q.distinct()
Example #3
0
def _get_map_results(query):
    q = extension.map_query(query)

    q = _filter_security(q, query.user, Map, 'view_map')

    if query.owner:
        q = q.filter(owner__username=query.owner)

    if query.extent:
        q = filter_by_extent(Map, q, query.extent)

    if query.added:
        q = q.filter(last_modified__gte=query.added)

    if query.period:
        q = filter_by_period(Map, q, *query.period)

    if query.kw:
        q = q.filter(_build_kw_only_query(query.kw))

    if query.exclude:
        q = q.exclude(reduce(operator.or_, [Q(title__contains=ex) for ex in query.exclude]))

    if query.categories:
        q = _filter_category(q, query.categories)

    if query.query:
        q = _build_map_layer_text_query(q, query, query_keywords=True)
        rules = _rank_rules(ResourceBase,
            ['title',10, 5],
            ['abstract',5, 2],
        )
        q = _safely_add_relevance(q, query, rules)

    return q.distinct()