def post(self, request): form = SearchPostsForm(data=request.body or '{}') if form.is_valid() is False: return dict(errors=get_all_form_errors(form)) data = form.cleaned_data results_per_page = settings.RESULTS_PER_PAGE page = self.get_page(data) column = self.get_order_by_column(data) posts_queryset = Post.objects posts_queryset = self.apply_keyword_filter(posts_queryset, data) posts_queryset = self.apply_like_filters(posts_queryset, data) posts_queryset = posts_queryset.order_by(column) #posts_queryset = posts_queryset.distinct() offset = self.get_offset(data) posts_queryset = posts_queryset.values() posts = list(posts_queryset[offset:offset + results_per_page]) posts = self.format_posts(posts) count = posts_queryset.count() max_page = (count / results_per_page) + 1 return dict( posts=posts, page=page, count=posts_queryset.count(), maxPage=max_page )
def post(self, request): form = SearchGroupsForm(data=request.body) if form.is_valid() is False: return dict(errors=get_all_form_errors(form)) data = form.cleaned_data results_per_page = settings.RESULTS_PER_PAGE offset = self.get_offset(data) column = self.get_order_by_column(data) gids_queryset = Group.objects gids_queryset = self.apply_basic_filters(gids_queryset, data) gids_queryset = self.apply_audience_filters(gids_queryset, data) gids_queryset = self.apply_region_filters(gids_queryset, data) gids_queryset = gids_queryset.order_by(column) gids_queryset = gids_queryset.distinct() gids_queryset = gids_queryset.values_list('gid', flat=True) gids = list(gids_queryset[offset:offset + results_per_page]) fields = self.get_related_field_names(Group, False) fields.extend(self.get_related_field_names(Audience)) groups = list( Group.objects.filter(gid__in=gids).select_related('audience').order_by(column).values(*fields) ) city_traffic = self.get_city_traffic(gids, data) country_traffic = self.get_country_traffic(gids, data) for group in groups: group['country_traffic'] = country_traffic.get(group['gid']) group['city_traffic'] = city_traffic.get(group['gid']) return dict( groups=groups, count=len(groups) )