|
|
|
|
@ -200,6 +200,32 @@ class CourseView(DetailView): |
|
|
|
|
# ((self.object.status != Course.PUBLISHED and request.user.role != User.ADMIN_ROLE) or |
|
|
|
|
# (self.object.status != Course.PUBLISHED and request.user.role != User.AUTHOR_ROLE and self.object.author != request.user)): |
|
|
|
|
|
|
|
|
|
def get_object(self, queryset=None): |
|
|
|
|
if queryset is None: |
|
|
|
|
queryset = self.get_queryset() |
|
|
|
|
|
|
|
|
|
pk = self.kwargs.get(self.pk_url_kwarg) |
|
|
|
|
slug = self.kwargs.get(self.slug_url_kwarg) |
|
|
|
|
if pk is not None: |
|
|
|
|
queryset = queryset.filter(pk=pk) |
|
|
|
|
|
|
|
|
|
if slug is not None and (pk is None or self.query_pk_and_slug): |
|
|
|
|
slug_field = self.get_slug_field() |
|
|
|
|
queryset = queryset.filter(**{'%s__iexact' % slug_field: slug}) |
|
|
|
|
|
|
|
|
|
if pk is None and slug is None: |
|
|
|
|
raise AttributeError("Generic detail view %s must be called with " |
|
|
|
|
"either an object pk or a slug." |
|
|
|
|
% self.__class__.__name__) |
|
|
|
|
|
|
|
|
|
try: |
|
|
|
|
# Get the single item from the filtered queryset |
|
|
|
|
obj = queryset.get() |
|
|
|
|
except queryset.model.DoesNotExist: |
|
|
|
|
raise Http404(_("No %(verbose_name)s found matching the query") % |
|
|
|
|
{'verbose_name': queryset.model._meta.verbose_name}) |
|
|
|
|
return obj |
|
|
|
|
|
|
|
|
|
def get_context_data(self, **kwargs): |
|
|
|
|
context = super().get_context_data(**kwargs) |
|
|
|
|
if self.request.user.is_authenticated: |
|
|
|
|
|