LIL-227. Add course edit view

remotes/origin/hasaccess
Ivlev Denis 8 years ago
parent ba0dacfa24
commit a8a9d9ddfa
  1. 33
      apps/course/views.py
  2. 3
      project/urls.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

@ -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/<int:pk>/', CourseView.as_view(), name='course'),
path('course/<str:slug>/', CourseView.as_view(), name='course'),
path('course/<int:course_id>/like', likes, name='likes'),
path('course/<int:pk>/edit', CourseEditView.as_view(), name='course-edit'),
path('course/<int:course_id>/comment', coursecomment, name='coursecomment'),
path('lesson/<int:pk>/', LessonView.as_view(), name='lesson'),
path('lesson/<int:lesson_id>/comment', lessoncomment, name='lessoncomment'),

Loading…
Cancel
Save