Beispiel #1
0
def new_review(course_id):
    course = Course.query.get(course_id)
    if not course:
        abort(404)
    user = current_user
    review = Review.query.filter_by(course=course, author=user).first()
    if not review:
        review = Review()
        review.course = course
        review.author = user
        is_new = True
    else:
        is_new = False

    message = ''
    form = ReviewForm(request.form)
    if request.method == 'POST':
        if form.validate_on_submit():
            # check validity of term
            if str(form.term.data) not in course.term_ids:
                abort(404)

            if form.is_mobile.data:
                form.content.data = markdown.markdown(form.content.data)
            form.content.data, mentioned_users = editor_parse_at(form.content.data)
            form.content.data = sanitize(form.content.data)
            form.populate_obj(review)

            if is_new:
                review.add()
                for user in set(current_user.followers + course.followers + course.joined_users):
                    user.notify('review', review, ref_display_class='Course')
                # users can only receive @ notifications for new reviews
                for user in mentioned_users:
                    user.notify('mention', review)
            else:
                review.save()
            return redirect(url_for('course.view_course',course_id=course_id))
        else: # invalid submission, try again
            if form.content.data:
                review.content = sanitize(form.content.data)
            if form.difficulty.data:
                review.difficulty = form.difficulty.data
            if form.homework.data:
                review.homework = form.homework.data
            if form.gain.data:
                review.gain = form.gain.data
            if form.rate.data:
                review.rate = form.rate.data
            message = '提交失败,请编辑后重新提交!'

    polls = [
        {'name': 'difficulty', 'display': '课程难度', 'options': ['简单', '中等', '困难'] },
        {'name': 'homework', 'display': '作业多少', 'options': ['不多', '中等', '超多'] },
        {'name': 'grading', 'display': '给分好坏', 'options': ['超好', '厚道', '杀手'] },
        {'name': 'gain', 'display': '收获多少', 'options': ['很多', '一般', '没有'] },
    ]
    return render_template('new-review.html', form=form, course=course, review=review, polls=polls, message=message, is_new=is_new)
Beispiel #2
0
def review_new_comment():
    form = ReviewCommentForm(formdata=request.form)
    if form.validate_on_submit():
        review_id = request.form.get('review_id')
        if review_id:
            review = Review.query.get(review_id)
            comment = ReviewComment()
            content = request.form.get('content')
            if len(content) > 500:
                return jsonify(ok=False, message="评论太长了,不能超过 500 字哦")
            content = Markup(content).striptags()
            content, mentioned_users = editor_parse_at(content)
            ok, message = comment.add(review, content)
            if ok:
                for user in set(current_user.followers + [review.author]):
                    user.notify('comment', review)
                for user in mentioned_users:
                    user.notify('mention', comment)
            return jsonify(ok=ok, message=message, content=content)
        else:
            return jsonify(ok=False, message="The review doesn't exist.")
    else:
        return jsonify(ok=False, message=form.errors)
Beispiel #3
0
def review_new_comment():
    form = ReviewCommentForm(request.form)
    if form.validate_on_submit():
        review_id = request.form.get('review_id')
        if review_id:
            review = Review.query.get(review_id)
            comment = ReviewComment()
            content = request.form.get('content')
            if len(content) > 500:
                return jsonify(ok=False,message="评论太长了,不能超过 500 字哦")
            content = Markup(content).striptags()
            content, mentioned_users = editor_parse_at(content)
            ok,message = comment.add(review,content)
            if ok:
                for user in set(current_user.followers + [review.author]):
                    user.notify('comment', review)
                for user in mentioned_users:
                    user.notify('mention', comment)
            return jsonify(ok=ok,message=message,content=content)
        else:
            return jsonify(ok=False,message="The review doesn't exist.")
    else:
        return jsonify(ok=False,message=form.errors)