def article(id): article = Article.query.get_or_404(id) if not article.published: abort(403) next = next_article(article) prev = prev_article(article) form = CommentForm(request.form, follow_id=-1) if form.validate_on_submit(): followed_id = int(form.follow_id.data if form.follow_id.data else -1) reply_to = form.follow.data content = form.content.data if reply_to: content = form.content.data.replace("@" + reply_to + " ", "") comment = Comment(article=article, content=content, author_name=form.name.data, author_email=form.email.data) db.session.add(comment) db.session.commit() if followed_id != -1: followed = Comment.query.get_or_404(followed_id) f = Follow(follower=comment, followed=followed) comment.comment_type = 'reply' # comment.reply_to = followed.author_name comment.reply_to = reply_to if reply_to else followed.author_name db.session.add(f) db.session.add(comment) db.session.commit() # flash(u'提交评论成功!', 'success') return redirect(url_for('.article', id=article.id, page=-1)) # if form.errors: # flash(u'发表评论失败', 'danger') page = request.args.get('page', 1, type=int) counts = article.comments.count() if page == -1: page = int((counts - 1) / Comment.PER_PAGE + 1) pagination = article.comments.order_by(Comment.created.asc()).paginate( page, per_page=Comment.PER_PAGE, error_out=False) comments = pagination.items return render_template('article.html', article=article, category_id=article.category_id, next_article=next, prev_article=prev, comments=comments, counts=counts, pagination=pagination, form=form, endpoint='.article', id=article.id)
def contact(): form = CommentForm(request.form, follow_id=-1) if form.validate_on_submit(): followed_id = int(form.follow_id.data if form.follow_id.data else -1) reply_to = form.follow.data content = form.content.data if reply_to: content = form.content.data.replace("@" + reply_to + " ", "") comment = Comment(content=content, author_name=form.name.data, author_email=form.email.data, comment_type='contact') db.session.add(comment) db.session.commit() if followed_id != -1: followed = Comment.query.get_or_404(followed_id) f = Follow(follower=comment, followed=followed) comment.comment_type = 'reply' # comment.reply_to = followed.author_name comment.reply_to = reply_to if reply_to else followed.author_name db.session.add(f) db.session.add(comment) db.session.commit() # flash(u'提交评论成功!', 'success') return redirect(url_for('.contact', page=-1)) page = request.args.get('page', 1, type=int) _query = Comment.query.filter_by(comment_type='contact') counts = _query.count() if page == -1: page = int((counts - 1) / Comment.PER_PAGE + 1) pagination = _query.order_by(Comment.created.asc()).paginate( page, per_page=Comment.PER_PAGE, error_out=False) comments = pagination.items return render_template('contact.html', comments=comments, counts=counts, pagination=pagination, form=form, endpoint='.contact')