|
|
|
|
@ -1,8 +1,9 @@ |
|
|
|
|
from django.contrib.auth.decorators import login_required |
|
|
|
|
from django.db.models import Q |
|
|
|
|
from django.http import JsonResponse |
|
|
|
|
from django.shortcuts import get_object_or_404 |
|
|
|
|
from django.template import loader, Context, Template |
|
|
|
|
from django.views.generic import View, CreateView, DetailView, ListView |
|
|
|
|
from django.views.generic import View, CreateView, DetailView, ListView, TemplateView |
|
|
|
|
from django.views.decorators.csrf import csrf_exempt |
|
|
|
|
from django.views.decorators.http import require_http_methods |
|
|
|
|
from .models import Course, Like, Lesson, CourseComment, LessonComment |
|
|
|
|
@ -136,6 +137,19 @@ def lessoncomment(request, lesson_id): |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class CourseEditView(TemplateView): |
|
|
|
|
template_name = 'course/course_edit.html' |
|
|
|
|
|
|
|
|
|
def get(self, request, pk=None): |
|
|
|
|
self.object = get_object_or_404(Course, pk=pk) |
|
|
|
|
return super().get(request) |
|
|
|
|
|
|
|
|
|
def get_context_data(self): |
|
|
|
|
context = super().get_context_data() |
|
|
|
|
context['course'] = self.object |
|
|
|
|
return context |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class CourseView(DetailView): |
|
|
|
|
model = Course |
|
|
|
|
context_object_name = 'course' |
|
|
|
|
@ -166,12 +180,17 @@ class CoursesView(ListView): |
|
|
|
|
if request.is_ajax(): |
|
|
|
|
context = self.get_context_data() |
|
|
|
|
template_name = self.get_template_names() |
|
|
|
|
html = loader.render_to_string(template_name, context, request=request) |
|
|
|
|
html = loader.render_to_string( |
|
|
|
|
template_name, context, request=request) |
|
|
|
|
is_paginated = context.get('is_paginated') |
|
|
|
|
if is_paginated: |
|
|
|
|
page_obj = context.get('page_obj') |
|
|
|
|
prev_url = request.path + '?page=' + str(page_obj.previous_page_number()) if page_obj.has_previous() else None |
|
|
|
|
next_url = request.path + '?page=' + str(page_obj.next_page_number()) if page_obj.has_next() else None |
|
|
|
|
prev_url = request.path + '?page=' + \ |
|
|
|
|
str(page_obj.previous_page_number() |
|
|
|
|
) if page_obj.has_previous() else None |
|
|
|
|
next_url = request.path + '?page=' + \ |
|
|
|
|
str(page_obj.next_page_number() |
|
|
|
|
) if page_obj.has_next() else None |
|
|
|
|
else: |
|
|
|
|
prev_url = None |
|
|
|
|
next_url = None |
|
|
|
|
@ -218,7 +237,8 @@ class SearchView(CoursesView): |
|
|
|
|
search_query = self.request.GET.get('q', None) |
|
|
|
|
queryset = super().get_queryset() |
|
|
|
|
if search_query: |
|
|
|
|
query = Q(title__icontains=search_query) | Q(short_description__icontains=search_query) |
|
|
|
|
query = Q(title__icontains=search_query) | Q( |
|
|
|
|
short_description__icontains=search_query) |
|
|
|
|
queryset = queryset.filter(query) |
|
|
|
|
else: |
|
|
|
|
queryset = queryset.none() |
|
|
|
|
@ -231,7 +251,8 @@ class SearchView(CoursesView): |
|
|
|
|
if 'is_paginated' in context and context['is_paginated']: |
|
|
|
|
page_obj = context.get('page_obj') |
|
|
|
|
context['page'] = page_obj.number |
|
|
|
|
context['next_page'] = str(page_obj.next_page_number()) if page_obj.has_next() else None |
|
|
|
|
context['next_page'] = str( |
|
|
|
|
page_obj.next_page_number()) if page_obj.has_next() else None |
|
|
|
|
else: |
|
|
|
|
context['page'] = 1 |
|
|
|
|
context['next_page'] = None |
|
|
|
|
|