remotes/origin/feature/LIL-712
gzbender 7 years ago
parent 95e6f8e22b
commit 2165c4fc0f
  1. 2
      apps/course/models.py
  2. 26
      apps/course/views.py
  3. 2
      web/src/components/CourseRedactor.vue
  4. 2
      web/src/js/modules/api.js

@ -136,7 +136,7 @@ class Course(BaseModel, DeactivatedMixin):
return self.get_absolute_url()
def get_absolute_url(self):
return reverse_lazy('course', args=[self.slug or self.id])
return reverse_lazy('course', args=[self.slug.lower() if self.slug else self.id])
@property
def is_free(self):

@ -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:

@ -474,7 +474,7 @@
onCourseNameInput() {
this.$v.course.title.$touch();
if (!this.slugChanged) {
this.course.url = slugify(this.course.title);
this.course.url = (slugify(this.course.title) || '').toLowerCase();
}
},
removeLesson(lessonIndex) {

@ -113,7 +113,7 @@ export const api = {
deferred_start_at: deferredStart,
duration: courseObject.duration || 0,
is_featured: courseObject.is_featured,
slug: courseObject.url,
slug: (courseObject.url || '').toLowerCase(),
date: (courseObject.date) ? courseObject.date.value:null,
stream: courseObject.stream,
cover: courseObject.coverImageId ? courseObject.coverImageId : null,

Loading…
Cancel
Save