Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
0
 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)