Exemple #1
0
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)
Exemple #2
0
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')