def edit_course_basic(alias): course = models.get_course_by_link(alias) if course is None: abort(404) state.current_course_key = course.key.urlsafe() form = forms.CourseBasic(request.form, obj=course) if form.validate_on_submit(): course.name = form.name.data course.desc = form.desc.data course.univ = form.univ.data course.link = form.link.data if not course.link: course.link = course.key.urlsafe() course.put() flash('New course basic data saved', 'success') return redirect(url_for('edit_course_basic', alias=course.link)) return render_template('course-edit-basic.html', course=course, form=form)
def edit_course_content(alias): course = models.get_course_by_link(alias) if course is None: abort(404) form = forms.CourseContents(request.form) json_data = course.content if form.validate_on_submit(): try: content = json.loads(form.json_data.data) except ValueError: abort(400) json_data = content if models.validate_content(content): course.content = content course.put() flash('Content successfully updated', 'success') return redirect(url_for('course_preview', alias=course.link)) else: flash('There were problems with your input', 'error') return redirect(url_for('course_edit_content', alias=course.link)) json_data = json.dumps(json_data) return render_template('course-edit-content.html', course=course, json_data=json_data, form=form)
def course_page(alias): course = models.get_course_by_link(alias) if course is None: abort(404) if not course.published: return redirect(url_for('edit_course_content', alias=alias)) form = forms.CoursePublish(request.form) if form.validate_on_submit(): course.published = False course.put() flash('Course is moved to drafts', 'warning') return redirect(url_for('course_preview', alias=alias)) return render_template('course-page.html', form=form, course=course)
def course_preview(alias): course = models.get_course_by_link(alias) if course is None: abort(404) if course.published: return redirect(url_for('course_page', alias=alias)) form = forms.CoursePublish(request.form) if form.validate_on_submit(): course.published = True course.put() flash('Course is published', 'success') return redirect(url_for('course_page', alias=alias)) return render_template('course-page.html', form=form, course=course)
def __call__(self, form, field): link = field.data.lower() course = models.get_course_by_link(link) if course is not None and course.key.urlsafe() != \ state.current_course_key: raise ValidationError(self.message)