проверить работу ссылок на курсы в админке, сделать все ссылки на курсы по slug (менеджмент командой)

remotes/origin/hotfix/courses_slug_url_20-01-19
gzbender 7 years ago
parent 4ddac99775
commit 4541acbaad
  1. 12
      apps/course/models.py
  2. 41
      web/src/components/CourseRedactor.vue
  3. 4
      web/src/js/modules/api.js

@ -124,11 +124,13 @@ class Course(BaseModel, DeactivatedMixin):
def save(self, *args, **kwargs):
if not self.slug:
slug = slugify(unidecode(self.title[:90]))
self.slug = slug
if self.slug:
while Course.objects.filter(slug=self.slug).exclude(id=self.id).exists():
self.slug = slug + str(uuid4())[-4:]
self.slug = slugify(unidecode(self.title[:90]))
if self.slug:
if self.slug.isdigit():
self.slug = 'course%s' % self.slug
slug = self.slug
while Course.objects.filter(slug__iexact=self.slug).exclude(id=self.id).exists():
self.slug = '%s_%s' % (slug, str(uuid4())[-4:])
return super().save()

@ -45,7 +45,7 @@
<div v-if="!live" class="info__field field">
<div class="field__label field__label_gray">ССЫЛКА</div>
<div class="field__wrap">
<input type="text" class="field__input" v-model="course.url" @input="slugChanged = true">
<input type="text" class="field__input" v-model="course.slug" @input="slugChanged = true">
</div>
<div class="field__wrap field__wrap--additional">{{ courseFullUrl }}</div>
</div>
@ -273,6 +273,7 @@
price: null,
old_price: null,
age: 0,
slug: '',
url: '',
coverImage: '',
kit__body: null,
@ -473,8 +474,8 @@
},
onCourseNameInput() {
this.$v.course.title.$touch();
if (!this.slugChanged) {
this.course.url = slugify(this.course.title);
if (!this.slugChanged && !this.$v.course.status) {
this.course.slug = slugify(this.course.title);
}
},
removeLesson(lessonIndex) {
@ -741,24 +742,6 @@
}
},
saveCourseDraft: function (newValue, oldValue) {
//console.log('saveCourseDraft');
// if (!oldValue.id) {
// return;
// }
// if(this.live) {
// if(!this.course.date || this.course.short_description == '' || this.course.title == '') {
// //console.log('live valiedation error');
// return;
// }
// } else {
// if(this.course.short_description == '' || this.course.title == '') {
// //console.log('course validation error');
// return;
// }
// }
if (this.savingDebounceTimeout) {
clearTimeout(this.savingDebounceTimeout);
}
@ -771,13 +754,14 @@
this.courseSaving = true;
this.changeSavingStatus();
const courseObject = this.course;
courseObject.url = (courseObject.url) ? slugify(courseObject.url):courseObject.url;
courseObject.slug = courseObject.slug && slugify(courseObject.slug);
api.saveCourse(courseObject, this.accessToken)
.then((response) => {
this.courseSaving = false;
this.changeSavingStatus(true);
this.courseSyncHook = true;
const courseData = api.convertCourseJson(response.data);
this.course.slug = courseData.slug;
if (this.course.coverImage) {
courseData.coverImage = this.course.coverImage;
}
@ -804,19 +788,11 @@
})
}
});
if (courseData.url) {
this.slugChanged = true;
}
if(courseData.id) {
this.course.id = courseData.id;
}
/*if(this.live && courseData.date) {
this.course.date = _.find(this.scheduleOptions, function(item){
return item.value == courseData.date;
});
}*/
this.$nextTick(() => {
this.courseSyncHook = false;
});
@ -1029,10 +1005,7 @@
}
},
courseFullUrl() {
if (!this.course.url) {
return `https://lil.city/course/${this.course.id}`;
}
let suffix = this.course.url ? this.course.url : 'ваша_ссылка';
let suffix = this.course.slug || this.course.id || 'ваша_ссылка';
return `https://lil.city/course/${suffix}`;
},
},

@ -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.slug,
date: (courseObject.date) ? courseObject.date.value:null,
stream: courseObject.stream,
cover: courseObject.coverImageId ? courseObject.coverImageId : null,
@ -194,7 +194,7 @@ export const api = {
time: deferredTime,
duration: courseJSON.duration,
is_featured: courseJSON.is_featured,
url: courseJSON.slug,
slug: courseJSON.slug,
stream: courseJSON.stream,
coverImageId: courseJSON.cover && courseJSON.cover.id ? courseJSON.cover.id : null,
coverImage: courseJSON.cover && courseJSON.cover.image ? courseJSON.cover.image : null,

Loading…
Cancel
Save