Example #1
0
    def apply_keyword_filter(self, queryset, data):

        keyword = data.get('keyword__value')

        if keyword is not None:
            query = prepare_sphinx_query(keyword)
            if query != '':
                ids = cache.get('sphinx_results_for_' + keyword)
                if ids is None:
                    ids = search_for(query, settings.SPHINX_POSTS_INDEX)
                    cache.set('sphinx_results_for_' + keyword, ids)
                queryset = queryset.filter(id__in=ids)

        return queryset
Example #2
0
    def apply_basic_filters(self, queryset, data):

        name = data.get('group_name__value')
        if name is not None:
            query = prepare_sphinx_query(name)
            if query != '':
                ids = cache.get('sphinx_results_for_' + name)
                if ids is None:
                    ids = search_for(query, settings.SPHINX_GROUPS_INDEX)
                    cache.set('sphinx_results_for_' + name, ids)
                queryset = queryset.filter(gid__in=ids)

        members_from = data.get('quantity__from')
        if members_from is not None:
            queryset = queryset.filter(members_count__gte=members_from)

        members_to = data.get('quantity_to')
        if members_to is not None:
            queryset = queryset.filter(members_count__lte=members_to)

        prefix = 'group_privacy__'
        privacy_types = {'public': 0, 'closed': 1, 'private': 2}
        privacy_condition = Q()
        for privacy in privacy_types:
            if data.get(prefix + privacy) is True:
                privacy_condition = privacy_condition | Q(is_closed=privacy_types[privacy])
        queryset = queryset.filter(privacy_condition)

        prefix = 'group_type__'
        group_types = {'group': 1, 'event': 2, 'public': 3}
        group_type_condition = Q()
        for gt in group_types:
            if data.get(prefix + gt) is True:
                group_type_condition = group_type_condition | Q(type=group_types[gt])
        queryset = queryset.filter(group_type_condition)

        return queryset