返回顶部
扩大
缩小

Zhang_derek

BBS论坛(三十一)

31.帖子加精和取消加精功能完成

(1)apps/models.py

class HighLight(db.Model):
    __tablename__='highlight_post'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    post_id=db.Column(db.Integer,db.ForeignKey('post.id'))
    create_time=db.Column(db.DateTime,default=datetime.now)

    post=db.relationship('PostModel',backref='highlight')

(2)cms/views.py

@bp.route('/posts/')
@login_required
@permission_required(CMSPermission.POSTER)
def posts():
    context = {
        'posts': PostModel.query.all()
    }
    return render_template('cms/cms_posts.html',**context)


@bp.route('/hpost/',methods=['POST'])
@login_required
@permission_required(CMSPermission.POSTER)
def hpost():
    post_id=request.form.get('post_id')
    if not post_id:
        return restful.params_error(message='请传入帖子id')
    post=PostModel.query.get(post_id)
    if not post:
        return restful.params_error(message='没有这篇帖子')
    highlight=HighLight()
    highlight.post=post
    db.session.add(highlight)
    db.session.commit()
    return restful.success()



@bp.route('/uhpost/',methods=['POST'])
@login_required
@permission_required(CMSPermission.POSTER)
def uhpost():
    post_id = request.form.get('post_id')
    if not post_id:
        return restful.params_error(message='请传入帖子id')
    post = PostModel.query.get(post_id)
    if not post:
        return restful.params_error(message='没有这篇帖子')
    print(post_id)
    highlight=HighLight.query.filter_by(post_id=post_id).first()
    print(highlight)
    db.session.delete(highlight)
    db.session.commit()
    return restful.success()

(3)cms_posts.html

{% extends 'cms/cms_base.html' %}
{% from 'common/_macros.html' import static %}
{% block title %}
    帖子管理
{% endblock %}

{% block head %}
<script src="{{ static('cms/js/posts.js') }}"></script>
{% endblock %}

{% block page_title %}
    {{ self.title() }}
{% endblock %}

{% block main_content %}
    <table class="table table-bordered">
        <thead>
        <tr>
            <th>标题</th>
            <th>发布时间</th>
            <th>版块</th>
            <th>作者</th>
            <th>操作</th>
        </tr>
        </thead>
        <tbody>
        {% for post in posts %}
            <tr data-id={{ post.id }} data-highlight={{ 1 if post.highlight else 0 }}>
                <td><a target="_blank" href="{{ url_for('front.post_detail',post_id=post.id) }}">{{ post.title }}</a>
                </td>
                <td>{{ post.create_time }}</td>
                <td>{{ post.board.name }}</td>
                <td>{{ post.author.username }}</td>
                <td>
                    {% if post.highlight %}
                        <button class="btn btn-info btn-xs highlight-btn">取消加精</button>
                    {% else %}
                        <button class="btn btn-danger btn-xs highlight-btn">加精</button>
                    {% endif %}
                    &nbsp;&nbsp;&nbsp;<button class="btn btn-default btn-xs">移除</button>
                </td>
            </tr>
        {% endfor %}
        </tbody>
    </table>
{% endblock %}

(4)cms/js/posts.js

$(function(){
    $('.highlight-btn').on('click',function(){
       var $this=$(this);
       var tr=$this.parent().parent();
       var post_id=tr.attr('data-id');
       var highlight=parseInt(tr.attr('data-highlight'));
       var url='';
        if(highlight){
           url='/cms/uhpost/'
        }else{
            url='/cms/hpost/'
        }
        zlajax.post({
            'url':url,
            'data':{
                'post_id':post_id
            },
            'success':function(data){
                if(data['code']==200){
                    zlalert.alertSuccessToast('操作成功');
                    setTimeout(function(){
                        window.location.reload();
                    },500);
                }else{
                    zlalert.alertInfo(data['message']);
                }
            }
        })
    });
});

 

posted on 2018-06-11 22:23  zhang_derek  阅读(482)  评论(1编辑  收藏  举报

导航