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.contrib.auth.decorators import login_required
from django.db.models import Q from django.db.models import Q
from django.http import JsonResponse from django.http import JsonResponse
from django.shortcuts import get_object_or_404
from django.template import loader, Context, Template 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.csrf import csrf_exempt
from django.views.decorators.http import require_http_methods from django.views.decorators.http import require_http_methods
from .models import Course, Like, Lesson, CourseComment, LessonComment 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): class CourseView(DetailView):
model = Course model = Course
context_object_name = 'course' context_object_name = 'course'
@ -166,12 +180,17 @@ class CoursesView(ListView):
if request.is_ajax(): if request.is_ajax():
context = self.get_context_data() context = self.get_context_data()
template_name = self.get_template_names() 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') is_paginated = context.get('is_paginated')
if is_paginated: if is_paginated:
page_obj = context.get('page_obj') page_obj = context.get('page_obj')
prev_url = request.path + '?page=' + str(page_obj.previous_page_number()) if page_obj.has_previous() else None prev_url = request.path + '?page=' + \
next_url = request.path + '?page=' + str(page_obj.next_page_number()) if page_obj.has_next() else None 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: else:
prev_url = None prev_url = None
next_url = None next_url = None
@ -218,7 +237,8 @@ class SearchView(CoursesView):
search_query = self.request.GET.get('q', None) search_query = self.request.GET.get('q', None)
queryset = super().get_queryset() queryset = super().get_queryset()
if search_query: 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) queryset = queryset.filter(query)
else: else:
queryset = queryset.none() queryset = queryset.none()
@ -231,7 +251,8 @@ class SearchView(CoursesView):
if 'is_paginated' in context and context['is_paginated']: if 'is_paginated' in context and context['is_paginated']:
page_obj = context.get('page_obj') page_obj = context.get('page_obj')
context['page'] = page_obj.number 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: else:
context['page'] = 1 context['page'] = 1
context['next_page'] = None context['next_page'] = None

@ -21,7 +21,7 @@ from django.conf import settings
from apps.course.views import ( from apps.course.views import (
CoursesView, likes, coursecomment, CoursesView, likes, coursecomment,
CourseView, LessonView, SearchView, CourseView, LessonView, SearchView,
lessoncomment, lessoncomment, CourseEditView,
) )
from apps.course.models import Course from apps.course.models import Course
from apps.user.views import UserView, UserEditView from apps.user.views import UserView, UserEditView
@ -33,6 +33,7 @@ urlpatterns = [
path('course/<int:pk>/', CourseView.as_view(), name='course'), path('course/<int:pk>/', CourseView.as_view(), name='course'),
path('course/<str:slug>/', 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: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('course/<int:course_id>/comment', coursecomment, name='coursecomment'),
path('lesson/<int:pk>/', LessonView.as_view(), name='lesson'), path('lesson/<int:pk>/', LessonView.as_view(), name='lesson'),
path('lesson/<int:lesson_id>/comment', lessoncomment, name='lessoncomment'), path('lesson/<int:lesson_id>/comment', lessoncomment, name='lessoncomment'),

Loading…
Cancel
Save