|
|
|
|
@ -1,4 +1,6 @@ |
|
|
|
|
from django.http import JsonResponse |
|
|
|
|
from django.views.generic import ListView |
|
|
|
|
from django.template import loader |
|
|
|
|
|
|
|
|
|
from .models import Course |
|
|
|
|
from .filters import CourseFilter |
|
|
|
|
@ -6,9 +8,33 @@ from .filters import CourseFilter |
|
|
|
|
|
|
|
|
|
class CoursesView(ListView): |
|
|
|
|
model = Course |
|
|
|
|
context_object_name = "course_items" |
|
|
|
|
context_object_name = 'course_items' |
|
|
|
|
paginate_by = 6 |
|
|
|
|
|
|
|
|
|
def get(self, request, *args, **kwargs): |
|
|
|
|
self.object_list = self.get_queryset() |
|
|
|
|
allow_empty = self.get_allow_empty() |
|
|
|
|
if request.is_ajax(): |
|
|
|
|
context = self.get_context_data() |
|
|
|
|
template_name = self.get_template_names() |
|
|
|
|
html = loader.render_to_string(template_name, context) |
|
|
|
|
is_paginated = context.get('is_paginated') |
|
|
|
|
if is_paginated: |
|
|
|
|
page_obj = context.get('page_obj') |
|
|
|
|
prev_url = '?page=' + str(page_obj.previous_page_number()) if page_obj.has_previous() else None |
|
|
|
|
next_url = '?page=' + str(page_obj.next_page_number()) if page_obj.has_next() else None |
|
|
|
|
else: |
|
|
|
|
prev_url = None |
|
|
|
|
next_url = None |
|
|
|
|
return JsonResponse({ |
|
|
|
|
'success': True, |
|
|
|
|
'content': html, |
|
|
|
|
'prev_url': prev_url, |
|
|
|
|
'next_url': next_url, |
|
|
|
|
}) |
|
|
|
|
else: |
|
|
|
|
return super().get(request, args, kwargs) |
|
|
|
|
|
|
|
|
|
def get_queryset(self): |
|
|
|
|
queryset = super().get_queryset() |
|
|
|
|
filtered = CourseFilter(self.request.GET, queryset=queryset) |
|
|
|
|
@ -17,4 +43,4 @@ class CoursesView(ListView): |
|
|
|
|
def get_template_names(self): |
|
|
|
|
if self.request.is_ajax(): |
|
|
|
|
return 'course/course_items.html' |
|
|
|
|
return "course/courses.html" |
|
|
|
|
return 'course/courses.html' |
|
|
|
|
|