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())
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)
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)
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())