|
|
|
|
@ -167,7 +167,7 @@ class CourseEditView(TemplateView): |
|
|
|
|
self.object = Course.objects.create( |
|
|
|
|
author=request.user, |
|
|
|
|
) |
|
|
|
|
if request.user != self.object.author and request.user.role not in [User.ADMIN_ROLE, User.AUTHOR_ROLE]: |
|
|
|
|
if request.user != self.object.author and request.user.role < User.AUTHOR_ROLE: |
|
|
|
|
raise Http404 |
|
|
|
|
return super().get(request) |
|
|
|
|
|
|
|
|
|
@ -178,34 +178,6 @@ class CourseEditView(TemplateView): |
|
|
|
|
return context |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@method_decorator(login_required, name='dispatch') |
|
|
|
|
class CourseLiveEditView(TemplateView): |
|
|
|
|
template_name = 'course/course_edit.html' |
|
|
|
|
|
|
|
|
|
def get(self, request, pk=None): |
|
|
|
|
drafts = Course.objects.filter( |
|
|
|
|
author=request.user, status=Course.DRAFT |
|
|
|
|
) |
|
|
|
|
if pk: |
|
|
|
|
self.object = get_object_or_404(Course, pk=pk) |
|
|
|
|
elif drafts.exists(): |
|
|
|
|
self.object = drafts.last() |
|
|
|
|
else: |
|
|
|
|
self.object = Course.objects.create( |
|
|
|
|
author=request.user, |
|
|
|
|
) |
|
|
|
|
if request.user != self.object.author and request.user.role not in [User.ADMIN_ROLE, User.AUTHOR_ROLE]: |
|
|
|
|
raise Http404 |
|
|
|
|
return super().get(request) |
|
|
|
|
|
|
|
|
|
def get_context_data(self): |
|
|
|
|
context = super().get_context_data() |
|
|
|
|
context['live'] = 'true' |
|
|
|
|
if self.object: |
|
|
|
|
context['object'] = self.object |
|
|
|
|
return context |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# @method_decorator(login_required, name='dispatch') |
|
|
|
|
class CourseView(DetailView): |
|
|
|
|
model = Course |
|
|
|
|
@ -217,7 +189,7 @@ class CourseView(DetailView): |
|
|
|
|
response = super().get(request, *args, **kwargs) |
|
|
|
|
context = self.get_context_data() |
|
|
|
|
if (not request.user.is_authenticated and self.object.status != Course.PUBLISHED) or\ |
|
|
|
|
(request.user.is_authenticated and request.user.role not in [User.AUTHOR_ROLE, User.ADMIN_ROLE] and self.object.author != request.user and self.only_lessons and not context['paid']): |
|
|
|
|
(request.user.is_authenticated and request.user.role < User.AUTHOR_ROLE and self.object.author != request.user and self.only_lessons and not context['paid']): |
|
|
|
|
raise Http404 |
|
|
|
|
return response |
|
|
|
|
|
|
|
|
|
@ -318,7 +290,7 @@ class LessonView(DetailView): |
|
|
|
|
def get(self, request, *args, **kwargs): |
|
|
|
|
response = super().get(request, *args, **kwargs) |
|
|
|
|
if (self.object.course.status != Course.PUBLISHED and |
|
|
|
|
(request.user.role not in [User.AUTHOR_ROLE, User.ADMIN_ROLE] or |
|
|
|
|
(request.user.role < User.AUTHOR_ROLE or |
|
|
|
|
self.object.course.author != request.user)): |
|
|
|
|
raise Http404 |
|
|
|
|
return response |
|
|
|
|
|