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)
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)
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)