diff --git a/apps/course/views.py b/apps/course/views.py index b11a2928..1b79be28 100644 --- a/apps/course/views.py +++ b/apps/course/views.py @@ -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 diff --git a/project/urls.py b/project/urls.py index 5fd683fc..a0754311 100644 --- a/project/urls.py +++ b/project/urls.py @@ -21,7 +21,7 @@ from django.conf import settings from apps.course.views import ( CoursesView, likes, coursecomment, CourseView, LessonView, SearchView, - lessoncomment, + lessoncomment, CourseEditView, ) from apps.course.models import Course from apps.user.views import UserView, UserEditView @@ -33,6 +33,7 @@ urlpatterns = [ path('course//', CourseView.as_view(), name='course'), path('course//', CourseView.as_view(), name='course'), path('course//like', likes, name='likes'), + path('course//edit', CourseEditView.as_view(), name='course-edit'), path('course//comment', coursecomment, name='coursecomment'), path('lesson//', LessonView.as_view(), name='lesson'), path('lesson//comment', lessoncomment, name='lessoncomment'),