Esempio n. 1
0
def favourite():
    paste_id = request.form.get('id', None)
    if paste_id:
        try:
            model = Paste.query.get_or_404(int(paste_id))
            user = getUserObject()
        except:
            model, user = None, None
        if model and user:
            if model not in user.favourites:
                user.favourites.append(model)
                db.session.add(user)
                return json.dumps({
                    'result': 'success',
                    'action': 'add',
                    'message': u'收藏成功'
                })
            else:
                user.favourites.remove(model)
                db.session.add(user)
                return json.dumps({
                    'result': 'success',
                    'action': 'del',
                    'message': u'取消收藏'
                })
    return json_response({'result': 'fail', 'message': u'请先登陆!'})
Esempio n. 2
0
def view(paste_id):
    model = Paste.query.get_or_404(paste_id)
    output = request.args.get('output', None)
    if output == 'raw':
        resp = make_response(model.content, 200)
        resp.headers['Content-Type'] = 'text/plain; charset=utf-8'
        return resp
    user = getUserObject()
    form = CommentForm(request.form, csrf_enabled=False)
    if request.method == 'POST':
        if user:
            if form.validate():
                content, users = get_usernames_from_comment(form.content.data)
                comment = PasteComment(user.id, model.id, content)
                model.comment_num = model.comment_num + 1
                if user.id != model.user_id:
                    if user not in model.followers:
                        model.followers.append(user)
                db.session.add(comment)
                mt = MessageTemplate.query.filter_by(
                    used_for='new_comment').first()
                if mt:
                    if model.followers:
                        for to_user in model.followers:
                            if to_user.id != user.id:
                                message = Message(
                                    user.id, to_user.id,
                                    mt.title % model.title,
                                    mt.content % (model.title,
                                                  url_for('pasteview.view',
                                                          paste_id=paste_id)))
                                db.session.add(message)
                mt = MessageTemplate.query.filter_by(
                    used_for='new_comment_has_user').first()
                if mt:
                    if users:
                        for to_user in users:
                            if to_user.id != user.id:
                                message = Message(
                                    user.id, to_user.id, mt.title,
                                    mt.content % url_for('pasteview.view',
                                                         paste_id=paste_id))
                                db.session.add(message)
                return redirect(url_for('pasteview.view', paste_id=paste_id))
    updateViewTimes(model, paste_id)
    lexer = find_lexer_class(model.syntax.name)
    formatter = HtmlFormatter(linenos='table', cssclass="source")
    g.code = highlight(model.content, lexer(stripall=True), formatter)
    g.model = model
    g.user = user
    g.form = form
    g.top_users = User.query.order_by('-paste_num')[:PAGE_SIZE]
    g.top_tags = Tag.query.order_by('-times')[:PAGE_SIZE]
    g.syntax_theme = request.args.get(
        'css', app.config.get('DEFAULT_SYNTAX_CSS_FILE'))
    g.css_file = "/static/css/themes/%s.css" % g.syntax_theme
    #g.syntax_themes = SyntaxTheme.get_all_syntax_themes()
    return render('pasteview/view.html')
Esempio n. 3
0
def delete_comment(comment_id):
    model = PasteComment.query.get_or_404(comment_id)
    user = getUserObject()
    if model.user.id != user.id:
        if not user.check_privilege(5):
            abort(403)
    paste = Paste.query.get_or_404(model.paste_id)
    paste.comment_num = paste.comment_num - 1
    db.session.add(paste)
    db.session.delete(model)
    return redirect(url_for('pasteview.view', paste_id=paste.id))
Esempio n. 4
0
def delete_comment(comment_id):
    model = PasteComment.query.get_or_404(comment_id)
    user = getUserObject()
    if model.user.id != user.id:
        if not user.check_privilege(5):
            abort(403)
    paste = Paste.query.get_or_404(model.paste_id)
    paste.comment_num = paste.comment_num - 1
    db.session.add(paste)
    db.session.delete(model)
    return redirect(url_for('pasteview.view', paste_id=paste.id))
Esempio n. 5
0
def view(paste_id):
    model = Paste.query.get_or_404(paste_id)
    output = request.args.get('output', None)
    if output == 'raw':
        resp = make_response(model.content, 200)
        resp.headers['Content-Type'] = 'text/plain; charset=utf-8'
        return resp
    user = getUserObject()
    form = CommentForm(request.form, csrf_enabled=False)
    if request.method == 'POST':
        if user:
            if form.validate():
                content, users = get_usernames_from_comment(form.content.data)
                comment = PasteComment(user.id, model.id, content)
                model.comment_num = model.comment_num + 1
                if user.id != model.user_id:
                    if user not in model.followers:
                        model.followers.append(user)
                db.session.add(comment)
                mt = MessageTemplate.query.filter_by(used_for='new_comment').first()
                if mt:
                    if model.followers:
                        for to_user in model.followers:
                            if to_user.id != user.id:
                                message = Message(user.id,
                                                  to_user.id,
                                                  mt.title % model.title,
                                                  mt.content % (model.title, url_for('pasteview.view', paste_id=paste_id)))
                                db.session.add(message)
                mt = MessageTemplate.query.filter_by(used_for='new_comment_has_user').first()
                if mt:
                    if users:
                        for to_user in users:
                            if to_user.id != user.id:
                                message = Message(user.id,
                                                  to_user.id,
                                                  mt.title,
                                                  mt.content % url_for('pasteview.view', paste_id=paste_id))
                                db.session.add(message)
                return redirect(url_for('pasteview.view', paste_id=paste_id))
    updateViewTimes(model, paste_id)
    lexer = find_lexer_class(model.syntax.name)
    formatter = HtmlFormatter(linenos='table', cssclass="source")
    g.code = highlight(model.content, lexer(stripall=True), formatter)
    g.model = model
    g.user = user
    g.form = form
    g.top_users = User.query.order_by('-paste_num')[:PAGE_SIZE]
    g.top_tags = Tag.query.order_by('-times')[:PAGE_SIZE]
    g.syntax_theme = request.args.get('css', app.config.get('DEFAULT_SYNTAX_CSS_FILE'))
    g.css_file = "/static/css/themes/%s.css" % g.syntax_theme
    #g.syntax_themes = SyntaxTheme.get_all_syntax_themes()
    return render('pasteview/view.html')
Esempio n. 6
0
def delete(paste_id):
    model = Paste.query.get_or_404(paste_id)
    user = getUserObject()
    if model.user.id != user.id:
        if not user.check_privilege(5):
            abort(403)
    user.paste_num = user.paste_num - 1
    if user.paste_num < 0:
        user.paste_num = 0
    db.session.add(user)
    model.is_delete = True
    db.session.add(model)
    return redirect('/')
Esempio n. 7
0
def delete(paste_id):
    model = Paste.query.get_or_404(paste_id)
    user = getUserObject()
    if model.user.id != user.id:
        if not user.check_privilege(5):
            abort(403)
    user.paste_num = user.paste_num - 1
    if user.paste_num < 0:
        user.paste_num = 0
    db.session.add(user)
    model.is_delete = True
    db.session.add(model)
    return redirect('/')
Esempio n. 8
0
def favorite():
    state = ''
    if 'user' not in session:
        return json_response({'result': 'fail', 'message': u'请先登陆!'})
    object_id = request.args.get('id', None)
    if object_id:
        paste = Paste.query.get_or_404(object_id)
        user = getUserObject()
        if paste in user.favorites:
            user.favorites.remove(paste)
            state = 'unfavorite'
        else:
            user.favorites.append(paste)
            state = 'favorite'
        db.session.add(user)
        return json_response({'result': 'success', 'message': u'操作成功', 'state': state})
Esempio n. 9
0
def follow():
    state = ''
    if 'user' not in session:
        return json_response({'result': 'fail', 'message': u'请先登陆!'})
    object_id = request.args.get('id', None)
    if object_id:
        paste = Paste.query.get_or_404(object_id)
        user = getUserObject()
        if user not in paste.followers:
            paste.followers.append(user)
            state = 'follow'
        else:
            paste.followers.remove(user)
            state = 'unfollow'
        db.session.add(paste)
        return json_response({'result': 'success', 'message': u'操作成功', 'state': state})
Esempio n. 10
0
def favourite():
    paste_id = request.form.get('id', None)
    if paste_id:
        try:
            model = Paste.query.get_or_404(int(paste_id))
            user = getUserObject()
        except:
            model, user = None, None
        if model and user:
            if model not in user.favourites:
                user.favourites.append(model)
                db.session.add(user)
                return json.dumps({'result':'success', 'action':'add', 'message': u'收藏成功'})
            else:
                user.favourites.remove(model)
                db.session.add(user)
                return json.dumps({'result':'success', 'action':'del', 'message': u'取消收藏'})
    return json_response({'result':'fail', 'message': u'请先登陆!'})
Esempio n. 11
0
def favorite():
    state = ''
    if 'user' not in session:
        return json_response({'result': 'fail', 'message': u'请先登陆!'})
    object_id = request.args.get('id', None)
    if object_id:
        paste = Paste.query.get_or_404(object_id)
        user = getUserObject()
        if paste in user.favorites:
            user.favorites.remove(paste)
            state = 'unfavorite'
        else:
            user.favorites.append(paste)
            state = 'favorite'
        db.session.add(user)
        return json_response({
            'result': 'success',
            'message': u'操作成功',
            'state': state
        })
Esempio n. 12
0
def follow():
    state = ''
    if 'user' not in session:
        return json_response({'result': 'fail', 'message': u'请先登陆!'})
    object_id = request.args.get('id', None)
    if object_id:
        paste = Paste.query.get_or_404(object_id)
        user = getUserObject()
        if user not in paste.followers:
            paste.followers.append(user)
            state = 'follow'
        else:
            paste.followers.remove(user)
            state = 'unfollow'
        db.session.add(paste)
        return json_response({
            'result': 'success',
            'message': u'操作成功',
            'state': state
        })
Esempio n. 13
0
def edit(paste_id):
    model = Paste.query.get_or_404(paste_id)
    user = getUserObject()
    g.syntax = Syntax.get_syntax_list()
    if (model.user.id != user.id) and (not user.check_privilege(4)):
        abort(403)
    form = PasteForm(request.form, csrf_enabled=False)
    if request.method == 'GET':
        form.title.data = model.title
        form.content.data = model.content
        form.syntax.data = str(model.syntax_id)
        form.tag.data = ' '.join([tag.name for tag in model.tags])
    elif request.method == 'POST' and form.validate():
        model.title = form.title.data
        model.content = form.content.data
        if form.description.data:
            model.description = form.description.data
        syntax = Syntax.query.filter_by(id=form.syntax.data).first()
        model.syntax_id = syntax.id
        model.modified_time = datetime.now()
        if form.is_private.data:
            model.is_private = True
        tags = form.tag.data.strip().split()
        Tag.updateTags(model, set(tags))
        db.session.add(model)
        if user.followers:
            mt = MessageTemplate.query.filter_by(
                used_for='update_paste').first()
            if mt:
                for to_user in user.followers:
                    message = Message(
                        user.id, to_user.id, mt.title % model.title,
                        mt.content %
                        (model.title,
                         url_for('pasteview.view', paste_id=model.id)))
                    db.session.add(message)
        return redirect(url_for('pasteview.view', paste_id=model.id))
    g.model = model
    g.form = form
    #g.syntax = Syntax.get_syntax_list()
    return render('pasteview/edit.html')
Esempio n. 14
0
def edit(paste_id):
    model = Paste.query.get_or_404(paste_id)
    user = getUserObject()
    g.syntax = Syntax.get_syntax_list()
    if (model.user.id != user.id) and (not user.check_privilege(4)):
        abort(403)
    form = PasteForm(request.form, csrf_enabled=False)
    if request.method == 'GET':
        form.title.data = model.title
        form.content.data = model.content
        form.syntax.data = str(model.syntax_id)
        form.tag.data = ' '.join([tag.name for tag in model.tags])
    elif request.method == 'POST' and form.validate():
        model.title = form.title.data
        model.content = form.content.data
        if form.description.data:
            model.description = form.description.data
        syntax = Syntax.query.filter_by(id=form.syntax.data).first()
        model.syntax_id = syntax.id
        model.modified_time = datetime.now()
        if form.is_private.data:
            model.is_private = True
        tags = form.tag.data.strip().split()
        Tag.updateTags(model, set(tags))
        db.session.add(model)
        if user.followers:
            mt = MessageTemplate.query.filter_by(used_for='update_paste').first()
            if mt:
                for to_user in user.followers:
                    message = Message(user.id,
                                      to_user.id,
                                      mt.title % model.title,
                                      mt.content % (model.title, url_for('pasteview.view', paste_id=model.id)))
                    db.session.add(message)
        return redirect(url_for('pasteview.view', paste_id=model.id))
    g.model = model
    g.form = form
    #g.syntax = Syntax.get_syntax_list()
    return render('pasteview/edit.html')