35 lines
1.3 KiB
Python
35 lines
1.3 KiB
Python
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
|