Пример #1
0
def blog_edit():
    if request.method == 'GET':
        tags = get_tags()
        tags = map(lambda x: x['name'], tags)
        blog = None
        _id = request.args.get('id', '')
        if _id:
            blog = Blog.objects.with_id(_id)
            for tag in blog.tags:
                if tag in tags:
                    tags.remove(tag)
        tag_list = tags
        tags = json.dumps(tags)
        if blog:
            return render_template('home/blog_edit2.html', blog=blog, data=json.dumps(blog.as_dict()), tags=tags,
                                   tag_list=tag_list)
        else:
            return render_template('home/blog_edit2.html', blog=None, data=json.dumps({}), tags=tags, tag_list=tag_list)
    else:
        _id = request.form.get('id', '').strip()
        if _id:
            blog = Blog.objects.with_id(_id)
        else:
            blog = Blog()
        title = request.form.get('title', '').strip()
        content = request.form.get('content', '').strip()
        visible = request.form.get('visible', 1, int)
        tags = request.form.getlist('tags[]')
        blog.title = title
        blog.content = content
        blog.author = current_user.id
        blog.visible = visible
        blog.tags = tags
        if _id:
            blog.update_time = now_lambda()
        else:
            blog.create_time = now_lambda()
            blog.update_time = blog.create_time
        try:
           blog.save()
        except ValidationError, e:
            return jsonify(success=False, error='save failed %s' % e)

        # 保存tag
        for tag in tags:
            blog_tag = BlogTag.objects(name=tag).first()
            if not blog_tag:
                blog_tag = BlogTag(name=tag, count=1, last_use_time=now_lambda(), create_time=now_lambda())
                blog_tag.save()
            else:
                blog_tag.update_time = now_lambda()
                blog_tag.last_use_time = now_lambda()
                blog_tag.count += 1
                blog_tag.save()
        return jsonify(success=True, error='提交成功', blog=blog.reload().as_dict())
Пример #2
0
def login():
    username = request.form.get('username')
    password = request.form.get('password')
    remember = request.form.get('remember') == 'True'
    if username and password:
        user = load_user(username)
        if (not user) or (not user.validate_password(password)):
            msg = "用户名或者密码错误"
            return render_template("users/login.html", msg=msg)
        login_user(user, remember)
        user.last_login_time = now_lambda()
        user.last_login_ip = request.remote_addr
        user.save()
        url = BlogConfig.stage == 'production' and 'http://online.mode/' or '/'
        return redirect(request.args.get("next") or url)
    return render_template("users/login.html", msg='', stage=BlogConfig.stage)
Пример #3
0
def blog_delete():
    _id = request.form.get('id', '')
    if not _id:
        _id = request.args.get('id', '')
        if not _id:
            return jsonify(success=False, error='缺少信息')

    blog = Blog.objects.with_id(ObjectId(_id))
    if not blog:
        return jsonify(success=False, error='不存在该日志')

    blog.delete_time = now_lambda()

    try:
        blog.save()
    except ValidationError, e:
        return jsonify(success=False, error='save failed %s' % e)
Пример #4
0
def show_blog(id):
    blog = Blog.objects.with_id(ObjectId(id))
    if not blog:
        return jsonify(success=False, error='不存在该日志')
    if (blog.visible in [Blog.VISIBLE_LOGIN, Blog.VISIBLE_OWNER] and current_user.is_authenticated is False) \
        or (blog.visible == Blog.VISIBLE_OWNER and current_user.id != blog.author):
        return abort(403)

    # 增加观看量
    Blog.objects(id=ObjectId(id)).update(inc__view_count=1)
    # 设置上个观察者的ip
    Blog.objects(id=ObjectId(id)).update(set__last_view_ip=request.remote_addr)
    # 设置上个观看者的用户id
    Blog.objects(id=ObjectId(id)).update(set__last_view_user=current_user.id if current_user.is_active and current_user.is_anounymous is False else None)
    # 设置上次观看的时间
    Blog.objects(id=ObjectId(id)).update(set__last_view_time=now_lambda())

    prev, next = Blog.get_prev_next(unicode(blog.id), current_user)
    monthes = get_all_month()
    return render_template('home/blog_detail.html', blog=blog.as_dict(), prev=prev, next=next, monthes=monthes, tags=get_tags_cloud())