Add live lesson detail view & perms

remotes/origin/hasaccess
Ivlev Denis 8 years ago
parent a91ad7a601
commit a5a04ab280
  1. 3
      apps/school/urls.py
  2. 31
      apps/school/views.py

@ -1,8 +1,9 @@
from django.urls import path, include
from .views import LiveLessonsView, LiveLessonEditView
from .views import LiveLessonsView, LiveLessonEditView, LiveLessonsDetailView
urlpatterns = [
path('lessons/', LiveLessonsView.as_view(), name='lessons'),
path('lessons/<int:pk>/edit', LiveLessonEditView.as_view(), name='lessons-edit'),
path('lessons/<int:pk>/', LiveLessonsDetailView.as_view(), name='lesson-detail'),
]

@ -1,28 +1,41 @@
from django.contrib.auth.decorators import login_required
from django.contrib.auth import get_user_model
from django.contrib.auth.decorators import login_required, user_passes_test
from django.shortcuts import get_object_or_404
from django.utils.decorators import method_decorator
from django.views.generic import ListView, UpdateView, TemplateView
from django.views.generic import ListView, UpdateView, TemplateView, DetailView
from .models import LiveLesson
User = get_user_model()
def is_admin_or_teacher(function=None, login_url=None):
actual_decorator = user_passes_test(
lambda u: u.role in [User.ADMIN_ROLE, User.TEACHER_ROLE],
login_url=login_url,
)
if function:
return actual_decorator(function)
return actual_decorator
@method_decorator([login_required, is_admin_or_teacher], name='dispatch')
class LiveLessonsView(ListView):
model = LiveLesson
template_name = 'school/livelessons_list.html'
def get(self, request, pk=None):
if request.user.role not in [User.ADMIN_ROLE, User.TEACHER_ROLE]:
raise Http404
return super().get(request)
@method_decorator([login_required, is_admin_or_teacher], name='dispatch')
class LiveLessonsDetailView(DetailView):
model = LiveLesson
template_name = 'school/livelesson_detail.html'
@method_decorator(login_required, name='dispatch')
@method_decorator([login_required, is_admin_or_teacher], name='dispatch')
class LiveLessonEditView(TemplateView):
template_name = 'course/course_edit.html'
def get(self, request, pk=None):
if request.user.role not in [User.ADMIN_ROLE, User.TEACHER_ROLE]:
raise Http404
if pk:
self.object = get_object_or_404(LiveLesson, pk=pk)
else:

Loading…
Cancel
Save