def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) ngo = kwargs.get("ngo", context.get("ngo")) if not ngo: return context donations_page = self.request.GET.get("donations_page") # Donations paginator. ngo_donations = ngo.get_funders() donations_paginator = paginator.Paginator( ngo_donations.order_by("-created"), DONATIONS_PER_PAGE) try: donations_page_obj = donations_paginator.page(donations_page) except (paginator.PageNotAnInteger, paginator.EmptyPage): donations_page_obj = donations_paginator.page(1) context["donations_page_obj"] = donations_page_obj report_item_page = self.request.GET.get("report_items_page") # Report items paginator. ngo_report_items = ngo.report_items.all() report_items_paginator = paginator.Paginator( ngo_report_items.order_by("-created"), DONATIONS_PER_PAGE) try: report_items_page_obj = report_items_paginator.page( report_item_page) except (paginator.PageNotAnInteger, paginator.EmptyPage): report_items_page_obj = report_items_paginator.page(1) context["report_items_page_obj"] = report_items_page_obj return context
def index(req): ctx = { 'my_tools': [], 'query': req.GET.get('q', ''), } if not req.user.is_anonymous(): # TODO: do we need to paginate the user's tools too? Magnus has 60! ctx['my_tools'] = Tool.objects.filter( maintainer_ids__contains=req.user.ldap_dn).order_by('group_name') page = req.GET.get('p') if ctx['query'] == '': tool_list = Tool.objects.all() else: tool_list = Tool.objects.filter(group_name__icontains=ctx['query']) tool_list = tool_list.order_by('group_name') pager = paginator.Paginator(tool_list, 10) try: tools = pager.page(page) except paginator.PageNotAnInteger: tools = pager.page(1) except paginator.EmptyPage: tools = pager.page(pager.num_pages) ctx['all_tools'] = tools return shortcuts.render(req, 'tools/index.html', ctx)
def get_collection_response(conf, querystring, collection_serializer, page_access_check=None): page = querystring.get("page") if page is None: data = collection_serializer.data else: if page_access_check and not page_access_check(): raise exceptions.AuthenticationFailed( "You do not have access to this resource") try: page_number = int(page) except Exception: return response.Response({"page": ["Invalid page number"]}, status=400) conf["page_size"] = preferences.get("federation__collection_page_size") p = paginator.Paginator(conf["items"], conf["page_size"]) try: page = p.page(page_number) conf["page"] = page serializer = serializers.CollectionPageSerializer(conf) data = serializer.data except paginator.EmptyPage: return response.Response(status=404) return response.Response(data)
def __process__(self): queryset = self._get_queryset() title = self.cleaned_data['title'] message = self.cleaned_data['message'] url = self.cleaned_data['url'] icon_url = "https://www.portalgsti.com.br/static/images/favicon-96x96.png" icon_url = generate_url(icon_url, width=60, height=60) per_page = 25 seconds = 0 batch = 3 paginated = paginator.Paginator(queryset, per_page) for index, page in enumerate(paginated.page_range): send_queryset = self._get_queryset() id_list = [item.id for item in paginated.page(page).object_list] send_queryset = send_queryset.filter(id__in=id_list) extra = {'click_action': url, "icon": icon_url} send_push_async.apply_async( args=[send_queryset, title, message, extra], countdown=seconds) if index % batch == 0: seconds += 1 return queryset
def page_or_404(objects, page): try: return paginator.Paginator(objects, 50).page(page) except paginator.PageNotAnInteger: raise Http404 except paginator.EmptyPage: raise Http404
def get(self, request): # # 查询文章分类导航 # cates = Category.objects.all()[:5] # # 热门推荐,根据推荐字典取R02 # reco2_articals = Artical.objects.filter(recom__code='R02').order_by('-create_time')[:4] # # 所有标签 # tags = Tag.objects.all() # 获取关键字 keywords = request.GET.get('keywords', '') if keywords: search_articles = Artical.objects.filter( Q(title__icontains=keywords) | Q(body__icontains=keywords)) else: search_articles = Artical.objects.order_by('-create_time') # 分页 pn = paginator.Paginator(search_articles, 4) # 实例化分页器对象 page_num = request.GET.get('page') # 获取当前页码 try: page_list_obj = pn.page(page_num) # 分页,返回数据列表 except paginator.PageNotAnInteger: page_list_obj = pn.page(1) except paginator.InvalidPage: page_list_obj = pn.page(pn.num_pages) context = locals() context.update(get_globalvars(request)) return render(request, template_name='blogapp/search.html', context=context)
def get_context_data(self, **kwargs): context = super(BasePaginationListView, self).get_context_data(**kwargs) queryset = self.get_queryset() if not queryset.ordered: queryset = queryset.order_by("id") recordings_by_page = base_conf.ITEMS_BY_PAGE pager = paginator.Paginator(queryset, recordings_by_page) page = self.request.GET.get('page', 1) try: recordings = pager.page(page) start_index = max(1, recordings.number-3) end_index = min(recordings.number+3, (len(queryset)//recordings_by_page)+1) context['range'] = range(start_index, end_index+1) context[self.context_object_name] = recordings except paginator.PageNotAnInteger: context[self.context_object_name] = pager.page(1) except paginator.EmptyPage: context[self.context_object_name] = pager.page(pager.num_pages) if len(self.get_queryset()) > 0: context['model_name'] = self.get_queryset()[0]._meta.verbose_name.title() context['model_name_plural'] = self.get_queryset()[0]._meta.verbose_name_plural.title() return context
def list_handle(request,type,page,sort): # type 商品的类别 # sort 商品排序的依据 1为默认,2为价格,3为点击量 # page 商品列表的页码,每页10条数据 goodslist = GoodsInfo.objects.filter(gtype=type) sort = int(sort) page = int(page) if sort == 1: goodslist = goodslist elif sort == 2: goodslist = goodslist.order_by('gprice') elif sort == 3: goodslist = goodslist.order_by('-gclick') # 新品推荐的两个商品 newlist = goodslist.order_by('-id')[0:2] # 商品列表页的10个商品 pagi = paginator.Paginator(goodslist, 10) pagelist = pagi.page(page) # 查询该用户购物车的商品类数量 amount = models.CartInfo.objects.filter(user_id=request.session.get('user_id', '')).count() context = {'title':'商品列表','goods':'yes', 'sort':sort, 'pagelist':pagelist, 'new':newlist, 'page':page, 'type':type, 'status':amount, } return render(request, 'df_goods/list.html', context)
def callback(user): # start from page 2 query = utils.get_status_queryset(user=user) page = int(request.GET.get('page', 1)) if query.count() > 1: int(request.GET.get('page', 2)) paginate = paginator.Paginator(query, 10) try: query = paginate.page(page) except paginator.PageNotAnInteger: query = paginate.page(1) except paginator.EmptyPage: query = paginate.page(paginator.num_pages) BASE_URL = reverse('api-status:get-status') next_url = '' if query.has_next(): next_url = BASE_URL + '?page={}'.format(query.next_page_number()) previous_url = '' if query.has_previous(): previous_url = BASE_URL + '?page={}'.format( query.previous_page_number()) result = { 'username': user.username, 'result': [utils.serialize_status(st) for st in query], 'next_page': next_url, 'previous_page': previous_url, } return result
def get(self, request, cid=1, num=1): cid = int(cid) num = int(num) # 查询当前类 category = Category.objects.all().order_by('id') # 查询当前类别下的商品 goodsList = Goods.objects.filter(category_id=cid).order_by('id') # 分页查询(每页8条记录) pager = paginator.Paginator(object_list=goodsList, per_page=8) goods_pageList = pager.page(num) # 页码数越界限制 begin = (num - int(math.ceil(10.0/2))) if num < 1: begin = 1 end = begin + 9 if end > pager.num_pages: end = pager.num_pages if end <= 10: begin = 1 else: begin = end - 9 pageList = range(begin, end+1) return render(request, 'index.html', {'category': category, 'cur_Cateid': cid, 'goodsList': goods_pageList, 'pageList': pageList, 'cur_Page': num})
def my_task(request, index): user = request.session.get('user') print(user) print(type(user)) user_tel = request.session.get('user_tel') if user_tel != '': if user != '': user_info = User.objects.get(username=user_tel) user_id = user_info.id demand2 = Demand.objects.filter(Q(personal_center__user_id=user_id) & Q(review=2)).\ values('title','date','id','details','bounty','add_service','image') demand1 = Demand.objects.filter(Q(personal_center__user_id=user_id) & Q(review=1)). \ values('title', 'date', 'id', 'details', 'bounty', 'add_service','image') demand3 = Demand.objects.filter(Q(personal_center__user_id=user_id) & Q(review=3)). \ values('title', 'date', 'id', 'details', 'bounty', 'add_service','image') pag = paginator.Paginator(demand2, 4) if index == '': index = 1 page = pag.page(index) context = { 'user_tel': user_tel, 'user': user, 'demand1': demand1, 'page': page, 'demand3': demand3, 's': 5, } return render(request, 'personal_center/task.html', context) else: return HttpResponse('请先设置个人信息!') else: return render(request, 'login.html')
def goods_list(request, type, page, sorted): # type为0时取出所有商品 if type == '0': goods_list = Goods.gmanager.all() type_name = None else: # 取出对应类的所有商品 type_name = TypeInfo.objects.get(pk=type).goods_type goods_list = Goods.gmanager.filter(gtype_id=type) result = '' # 对取出的商品进行排序 if sorted == '1': # 排序为1就是按时间排序 result = goods_list.order_by('id') if sorted == '2': # 排序为2就是按点击率排名 result = goods_list.order_by('price') if sorted == '3': # 排序为3就是按点击率排名 result = goods_list.order_by('gclick') # 推荐商品 adv_list = result[: 2] # 将结果进行分页 pages = paginator.Paginator(result, 14) goods_list = pages.page(page) context = { 'type': type_name, 'goods_list': goods_list, 'adv_list': adv_list, 'sorted': sorted, 'type_id': type } return render(request, 'df_goods/list.html', context)
def paginate(request, queryset, per_page=20, count=None): """ Get a Paginator, abstracting some common paging actions. If you pass ``count``, that value will be used instead of calling ``.count()`` on the queryset. This can be good if the queryset would produce an expensive count query. """ p = paginator.Paginator(queryset, per_page) if count is not None: p._count = count # Get the page from the request, make sure it's an int. try: page = int(request.GET.get('page', 1)) except ValueError: page = 1 # Get a page of results, or the first page if there's a problem. try: paginated = p.page(page) except (paginator.EmptyPage, paginator.InvalidPage): paginated = p.page(1) base = request.build_absolute_uri(request.path) paginated.url = u'%s?%s' % (base, request.GET.urlencode()) return paginated
def getproduct(request, index): context = {} # list = [['1','/static/images/pic13.jpg', 'a', 'aa', '100'], ['2','/static/images/pic13.jpg', 'b', 'bb', '200'], ['3','/static/images/pic13.jpg', 'b', 'bb', '200'], ['4','/static/images/pic13.jpg', 'b', 'bb', '200'], ['5','/static/images/pic13.jpg', 'b', 'bb', '200'], ['6','/static/images/pic13.jpg', 'b', 'bb', '200'], ['7','/static/images/pic13.jpg', 'b', 'bb', '200'], ['8','/static/images/pic13.jpg', 'b', 'bb', '200']] list = [] username = request.session.get('username') aa = getalllist() print(request.session.get('username')) for a in aa: list2 = [] list2.append(a.name) list2.append(a.key) list2.append(a.imgurl) if request.session.get('username') != None: list2.append(a.price) else: list2.append(a.price0) list2.append(a.id) list.append(list2) print(username) print(list2) count = len(list) pag = paginator.Paginator(list, 6) if index == '': index = 1 # 返回指定(index)页的数据,用于呈现在指定页上 page = pag.page(index) # 构造上下文,以便html文件中能调用对应页的数据 context = {'page': page, 'count': count, "username": username} return render(request, 'product.html', context)
def get(self, request, albums_id): album = models.Album.objects.get(id=albums_id) photos = album.photo_set.all() photo_sum = photos.count() # 分页 page = int(request.GET.get('page', 1)) per_page = int(request.GET.get('per_page', 9)) paginater = paginator.Paginator(object_list=photos, per_page=per_page) try: page_obj = paginater.page(page) except paginator.PageNotAnInteger: page_obj = paginater.page(1) # 首次进入给第一页 page = 1 except paginator.EmptyPage: page_obj = paginater.page(paginater.num_pages) # 空页给最后一页 page = paginater.num_pages start, end = utils.custom_paginator(current_page=int(page), total_pages=paginater.num_pages, max_page=10) context = { "page_obj": page_obj, "page": page, "page_range": range(int(start), int(end) + 1), "per_page": per_page, "total": paginater.count, "is_paginated": page_obj.has_other_pages() } return render(request, "photo/album_detail.html", context=context)
def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context["current_kind"] = self.request.GET.get("kind") if not self.request.GET.get("q"): context["current_kind"] = context["current_kind"] or KIND.default() ngo = kwargs.get("ngo", context.get("ngo")) if not ngo: return context needs = ngo.needs.filter(resolved_on=None) if "need" in kwargs: needs = needs.exclude(pk=kwargs["need"].pk) context["current_need"] = kwargs["need"] for kind in KIND.to_list(): kind_needs = needs.filter(kind=kind) needs_paginator = paginator.Paginator(kind_needs, NEEDS_PER_PAGE) page = self.request.GET.get(f"{kind}_page") # Catch invalid page numbers try: needs_page_obj = needs_paginator.page(page) except (paginator.PageNotAnInteger, paginator.EmptyPage): needs_page_obj = needs_paginator.page(1) context[f"{kind}_page_obj"] = needs_page_obj return context
def view_posts_by_date(self, request, year, month=None, day=None): title = f"Posts for {year}" filtered_posts = self.get_posts().filter(date__year=year, ) if month: title = f"Posts for {datetime.datetime.strptime(month, '%b').strftime('%B')} {year}" filtered_posts = filtered_posts.filter( date__month=datetime.datetime.strptime(month, "%b").month, ) if day: title = f"Posts for {int(day)} {datetime.datetime.strptime(month, '%b').strftime('%B')} {year}" filtered_posts = filtered_posts.filter( date__month=datetime.datetime.strptime(month, "%b").month, ) post_paginator = paginator.Paginator(filtered_posts, 5) posts_page = request.GET.get("page") try: posts = post_paginator.page(posts_page) except paginator.PageNotAnInteger: # If page is not an integer, deliver first page. posts = post_paginator.page(1) except paginator.EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. posts = post_paginator.page(post_paginator.num_pages) return self.render(request, context_overrides={ "title": title, "posts": posts, })
def get(self, request): # parsing query params from request search_query = request.GET.get("q") limit = request.GET.get("limit") offset = request.GET.get("offset") if search_query is None: return Response({ "error": True, "query": "Null" }, status=status.HTTP_400_BAD_REQUEST) if limit is None: limit = 5 if offset is None: offset = 1 context = {"error": False} try: branches = Branches.objects.filter( branch_vector=str(search_query).lower()).order_by('ifsc') branches_limited = paginator.Paginator(branches, limit) branches_offsetted = branches_limited.get_page(offset) serializer = BranchSerializer(branches_offsetted, many=True) context["result"] = serializer.data return Response(context, status=status.HTTP_200_OK) except Exception as e: print(e) context["error"] = True context["result"] = [] return Response(context, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
def paginate(request, queryset, per_page=20): """Get a Paginator, abstracting some common paging actions.""" p = paginator.Paginator(queryset, per_page) # Get the page from the request, make sure it's an int. try: page = int(request.GET.get('page', 1)) except ValueError: page = 1 # Get a page of results, or the first page if there's a problem. try: paginated = p.page(page) except (paginator.EmptyPage, paginator.InvalidPage): paginated = p.page(1) base = request.build_absolute_uri(request.path) items = [(k, v) for k in request.GET if k != 'page' for v in request.GET.getlist(k) if v] qsa = urlencode(items) paginated.url = u'%s?%s' % (base, qsa) return paginated
def topmovies(request): index = request.GET.get('index') sort_option = request.GET.get('sort') genres_option = request.GET.get('genres') if index is None: index = 1 if sort_option is None: sort_option = '1' if genres_option is None: genres_option = '1' genres = utilities.get_genres_type(genres_option) if sort_option == '1': movie_list = models.Movie.objects.all().order_by('-rating').filter(rating_count__gt=20, genres__contains=genres) elif sort_option == '2': movie_list = models.Movie.objects.all().order_by('rating').filter(rating_count__gt=20, genres__contains=genres) elif sort_option == '3': movie_list = models.Movie.objects.all().order_by('-popularity').filter(rating_count__gt=20, genres__contains=genres) elif sort_option == '4': movie_list = models.Movie.objects.all().order_by('popularity').filter(rating_count__gt=20, genres__contains=genres) else: movie_list = models.Movie.objects.all().order_by('-rating').filter(rating_count__gt=20, genres__contains=genres) if len(movie_list) >= 250: movie_list = movie_list[0:250] else: movie_list = movie_list[0:len(movie_list)] pag = paginator.Paginator(movie_list, 20) if index == '': index = 1 page = pag.page(index) context = { 'page': page, 'sort_selected': sort_option, 'genres_selected': genres_option, } return render(request, 'topmovies.html', context)
def get(self, request, tagcode): # # 查询文章分类导航 # cates = Category.objects.all()[:5] # # 热门推荐,根据推荐字典取R02 # reco2_articals = Artical.objects.filter(recom__code='R02').order_by('-create_time')[:4] # # 所有标签 # tags = Tag.objects.all() # 根据标签查询文章列表 tag_articals = Artical.objects.filter( tags__code=tagcode).order_by('-create_time') # 获取标签名 tag_name = Tag.objects.get(code=tagcode) # 分页 pn = paginator.Paginator(tag_articals, 2) # 实例化分页器对象 page_num = request.GET.get('page') # 获取当前页码 try: page_list_obj = pn.page(page_num) # 进行分页,返回数据列表(将之传给模板) except paginator.PageNotAnInteger: page_list_obj = pn.page(1) except paginator.InvalidPage: page_list_obj = pn.page(pn.num_pages) context = locals() context.update(get_globalvars(request)) return render(request=request, template_name='blogapp/tags.html', context=context)
def get_context_data(self, **kwargs): context = super(BusquedaGrabacionFormView, self).get_context_data( **kwargs) listado_de_grabaciones = [] if 'listado_de_grabaciones' in context: listado_de_grabaciones = context['listado_de_grabaciones'] qs = listado_de_grabaciones # ----- <Paginate> ----- page = self.kwargs['pagina'] if context['pagina']: page = context['pagina'] result_paginator = django_paginator.Paginator(qs, 40) try: qs = result_paginator.page(page) except django_paginator.PageNotAnInteger: qs = result_paginator.page(1) except django_paginator.EmptyPage: qs = result_paginator.page(result_paginator.num_pages) # ----- </Paginate> ----- context['listado_de_grabaciones'] = qs context['calificaciones'] = self._get_calificaciones(qs) context['base_url'] = "%s://%s" % (self.request.scheme, self.request.get_host()) return context
def get_posts_responding_to(url, current_page, post): post_objs = Post.objects.filter(url=url, responding_to=post).order_by('-created_on') count = len(post_objs) page_number = 1 if current_page <= 0 else current_page + 1 post_objs_paginator = paginator.Paginator(post_objs, 10) number_of_pages = post_objs_paginator.num_pages post_objs = post_objs_paginator.get_page(page_number) posts_json = json.loads(serializers.serialize('json', post_objs)) for post_json, post_obj in zip(posts_json, post_objs): set_post_properties(post_json, post_obj) replies = post_obj.comments replies_json = json.loads(serializers.serialize('json', replies)) for reply_json, reply_obj in zip(replies_json, replies): set_post_properties(reply_json, reply_obj) post_json.setdefault('replies', replies_json) response = { 'posts': posts_json, 'count': count, 'page_number': page_number, 'number_of_pages': number_of_pages, } return response
def get_context_data(self, *args, **kwargs) -> dict: context = super().get_context_data(*args, **kwargs) context['form'].initial = { 'bio': self.request.user.profile.bio, 'image_file': self.request.user.profile.image_file, 'shop_web_address': self.request.user.profile.shop_web_address, 'outlets': self.request.user.profile.outlets, 'listed_member': self.request.user.profile.listed_member, 'display_personal_page': self.request.user.profile.display_personal_page } context['avatar'] = (artisan_models.ArtisanForumProfile.objects.get( profile_user=self.request.user).avatar) queryset = (artisan_models.Post.objects.select_related( 'author').select_related('author__profile').filter( author=self.request.user)) paginator = pagination.Paginator(queryset, 6) page_number = self.request.GET.get('page') page_obj = paginator.get_page(page_number) context['page_obj'] = page_obj context['site_url'] = ('https' if self.request.is_secure() else 'http') + '://' + conf.settings.SITE_DOMAIN return context
def get_context_data(self, **kwargs): context = super(ArticleDetail, self).get_context_data(**kwargs) context['prev_article'] = self.get_prev_object(self.queryset, self.object) context['next_article'] = self.get_next_object(self.queryset, self.object) # Custom original_slug = self.request.GET.get("original_slug", None) if not original_slug: original_slug = self.object.slug original = Article.objects.get(translations__slug=original_slug) similar_article_set = Article.objects.published().filter( categories__in=original.categories.all()).exclude( pk=original.pk).exclude( categories__translations__slug='price-analysis').distinct( ).order_by('-publishing_date') similar_page = self.request.GET.get("page") similar_paginator = paginator.Paginator(similar_article_set, self.related_paginate_by) try: similar_page_obj = similar_paginator.page(similar_page) except (paginator.PageNotAnInteger, paginator.EmptyPage): similar_page_obj = None context["similar_page_obj"] = similar_page_obj context["original_slug"] = original_slug return context
def get_context_data(self, *args, **kwargs): context_data = super().get_context_data(*args, **kwargs) context_data['book'] = self.object context_data['action'] = 'Add' # paginate related objects - param: ?ro_page=<x> ro_page = self.request.GET.get('ro_page') bookinstances = self.object.bookinstance_set.all() bookinstances_paginator = paginator.Paginator( bookinstances, self.bookinstances_paginate_by) # Catch invalid page numbers try: bookinstances_page_obj = bookinstances_paginator.page(ro_page) except (paginator.PageNotAnInteger, paginator.EmptyPage): bookinstances_page_obj = bookinstances_paginator.page(1) print(f"bookinstances_page_obj: {bookinstances_page_obj}") print( f"bookinstances_page_obj.has_other_pages: {bookinstances_page_obj.has_other_pages()}" ) print( f"bookinstances_paginator.num_pages: {bookinstances_paginator.num_pages}" ) context_data['related_page_obj'] = bookinstances_page_obj return context_data
def get_user_blogs(request): r_userid = request.META.get("HTTP_USERID") pageNum = 1 if request.method == 'POST': pageNum = request.POST.get("page", '1') if request.method == 'GET': pageNum = request.GET.get("page", '1') if pageNum == 0: pageNum = 1 qr = MicroBlog.objects.all().filter(authorId=r_userid).filter(isDeleted=0).order_by( "-createTime") pt = paginator.Paginator(qr, 50) try: pages = pt.page(pageNum) tmp_pride = Pride.objects.filter(authorId=r_userid) tmp_col = Collect.objects.filter(authorId=r_userid) for d in pages: if isinstance(d, MicroBlog): if len(tmp_pride.filter(blogId=d.blogId)) > 0: d.isPrided = MicroBlog.HAVE if len(tmp_col.filter(itemId=d.blogId)) > 0: d.isCollected = MicroBlog.HAVE return JsonResponse(common.build_model_list(pages), safe=False) except: return JsonResponse(common.build_result(CLIENT_ERROR, "没有更多数据"), safe=False)
def get_context_data(self, **kwargs): context = super(AuditarCalificacionesFormView, self).get_context_data( **kwargs) listado_de_calificaciones = [] if 'listado_de_calificaciones' in [key for key in context.keys()]: listado_de_calificaciones = context['listado_de_calificaciones'] qs = listado_de_calificaciones.select_related('opcion_calificacion__campana', 'contacto') # ----- <Paginate> ----- page = self.kwargs['pagina'] if context.get('pagina', False): page = context.get('pagina', False) result_paginator = django_paginator.Paginator(qs, 40) try: qs = result_paginator.page(page) except django_paginator.PageNotAnInteger: qs = result_paginator.page(1) except django_paginator.EmptyPage: qs = result_paginator.page(result_paginator.num_pages) # ----- </Paginate> ----- context['calificaciones'] = qs return context
def get_channel_outbox_response(self, request, channel): conf = { "id": channel.actor.outbox_url, "actor": channel.actor, "items": channel.library.uploads.for_federation().order_by( "-creation_date").prefetch_related("library__channel__actor", "track__artist"), "item_serializer": serializers.ChannelCreateUploadSerializer, } page = request.GET.get("page") if page is None: serializer = serializers.ChannelOutboxSerializer(channel) data = serializer.data else: try: page_number = int(page) except Exception: return response.Response({"page": ["Invalid page number"]}, status=400) conf["page_size"] = preferences.get( "federation__collection_page_size") p = paginator.Paginator(conf["items"], conf["page_size"]) try: page = p.page(page_number) conf["page"] = page serializer = serializers.CollectionPageSerializer(conf) data = serializer.data except paginator.EmptyPage: return response.Response(status=404) return response.Response(data)
def donationindex(request,event=None): event = viewutil.get_event(event) orderdict = { 'amount' : ('amount', ), 'time' : ('timereceived', ), } page = request.GET.get('page', 1) sort = request.GET.get('sort', 'time') try: order = int(request.GET.get('order', -1)) except ValueError: order = -1 donations = Donation.objects.filter(transactionstate='COMPLETED') if event.id: donations = donations.filter(event=event) donations = views_common.fixorder(donations, orderdict, sort, order) agg = donations.aggregate(amount=Sum('amount'), count=Count('amount'), max=Max('amount'), avg=Avg('amount')) donations = donations.select_related('donor') pages = paginator.Paginator(donations,50) try: pageinfo = pages.page(page) except paginator.PageNotAnInteger: pageinfo = pages.page(1) except paginator.EmptyPage: pageinfo = pages.page(pages.num_pages) page = pages.num_pages donations = pageinfo.object_list return views_common.tracker_response(request, 'tracker/donationindex.html', { 'donations' : donations, 'pageinfo' : pageinfo, 'page' : page, 'agg' : agg, 'sort' : sort, 'order' : order, 'event': event })