from django.views.generic import ListView from django.shortcuts import render from django.urls import reverse from judge.utils.infinite_paginator import InfinitePaginationMixin class FeedView(InfinitePaginationMixin, ListView): def get_feed_context(selfl, object_list): return {} def get(self, request, *args, **kwargs): only_content = request.GET.get("only_content", None) if only_content and self.feed_content_template_name: queryset = self.get_queryset() paginator, page, object_list, _ = self.paginate_queryset( queryset, self.paginate_by ) context = { self.context_object_name: object_list, "has_next_page": page.has_next(), } context.update(self.get_feed_context(object_list)) return render(request, self.feed_content_template_name, context) return super(FeedView, self).get(request, *args, **kwargs) def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context["has_next_page"] = context["page_obj"].has_next() try: context["feed_content_url"] = reverse(self.url_name) except Exception as e: context["feed_content_url"] = self.request.path return context