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