def have_not_found(error): navigation = get_navigation_info(title="404 NOT FOUND", sub_title="服务器上没有这个页面", tag="not_found") return render_template('admin/404.html', navigation=navigation, error=error), 404
def have_not_permission(error): navigation = get_navigation_info(title="无法访问", sub_title="权限不足,请联系管理员", tag="authority") return render_template('admin/403.html', navigation=navigation, error=error), 403
def alter_post(post_id, post_title): """ 修改文章页面 通过 文章页面传递过来的post ID和TITLE 查询相应的文章,并将文章的内容显示在页面中供用户修改 :param post_id: :param post_title: :return: """ navigation = get_navigation_info(title="修改文章", sub_title="修改已发布的文章", tag="alter_post") form = PostForm() if request.method == 'GET': post = Post.query.filter_by(id=post_id).first() form.alter_post(post.title, post.abstract, post.content, post.category_id , post.rank, post.is_top, post.post_property, post.status) return render_template("admin/edit_post.html", navigation=navigation, form=form) if request.method == 'POST': """ method为POST 通过传递的post ID 查询相应的post 更新post内容 """ post = Post.query.filter_by(id=post_id).first() post.update_post(form.title.data, form.abstract.data, current_user.id, form.content.data, form.category_id.data, form.rank.data, form.is_top.data, form.post_property.data, form.status.data) if form.status.data == STATUS_DRAFT: return redirect(url_for('admin.draft_post')) elif form.status.data == STATUS_PUBLISH: return redirect(url_for('admin.post')) elif form.status.data == STATUS_DELETED: return redirect(url_for('admin.dustbin_post'))
def setting(type): if "home" in type: box_title = "主页设置" navigation = get_navigation_info(title="主页设置", tag="home") elif "admin" in type: box_title = "后台设置" navigation = get_navigation_info(title="后台设置", tag="admin") elif "mail" in type: box_title = "邮件设置" navigation = get_navigation_info(title="邮件设置", tag="mail") elif "system" in type: box_title = "系统设置" navigation = get_navigation_info(title="系统设置", tag="system") # 获取特定类型的配置项 config = Config.get_config_type(type) # 获取所有类型的配置项 all_config = Config.get_config() # 清空SettingForm表单中原有的配置项 for item in all_config: if hasattr(SettingForm, item): delattr(SettingForm, item) # 添加新的配置项 for item in config: setattr( SettingForm, item[2], StringField(item[1], render_kw={ "class": "form-control", 'placeholder': item[1] }, default=item[3])) form = SettingForm() if request.method == 'GET': return render_template('admin/setting.html', navigation=navigation, form=form, box_title=box_title) if request.method == 'POST': if Config.set_config(request.form.to_dict()): return redirect(request.url)
def auth(): navigation = get_navigation_info(title="权限列表", tag="auth") auths = GroupAuthority.get_all_auths(status=STATUS_USEFUL) if request.method == 'GET': delete_id = request.args.get("delete_id") if delete_id: auth = GroupAuthority.query.filter_by(id=delete_id).first() auth.update_status(status=STATUS_USELESS) return redirect(url_for('admin.auth')) return render_template('admin/auth.html', navigation=navigation, auths=auths)
def group(): navigation = get_navigation_info(title="用户组管理", sub_title="控制台", tag="group") groups = UserGroup.query.all() groups_total = UserGroup.get_groups_total() if request.method == 'GET': if request.args.get('group_id') is not None: group = UserGroup.query.filter_by(id=request.args.get('group_id')).first() group.real_delete() return redirect(url_for('admin.group')) return render_template('admin/group.html', navigation=navigation, groups=groups, groups_total=groups_total)
def add_group(): navigation = get_navigation_info(title="用户组", sub_title="新的用户组", tag="add_group") GroupForm.init_auths_radio() form = GroupForm() if request.method == 'POST': auths = GroupAuthority.result_to_str(form) group = UserGroup(name=form.name.data, status=form.status.data, authority=auths) group.add_one() return redirect(url_for('admin.group')) if request.method == 'GET': return render_template('admin/edit_group.html', navigation=navigation, form=form)
def dustbin_category(): navigation = get_navigation_info(title="垃圾箱", tag="dustbin_category") if request.method == 'GET': if request.args.get('category_id') is not None: category = Category.query.filter_by( id=request.args.get('category_id')).first() category.real_delete() return redirect(url_for('admin.dustbin_category')) categories = Category.get_categories_info(STATUS_USELESS) return render_template('admin/dustbin_category.html', navigation=navigation, categories=categories)
def alter_group(group_id): navigation = get_navigation_info(title="修改用户组", sub_title="修改已存在的用户组", tag="alter_group") GroupForm.init_auths_radio(group_id) form = GroupForm() if request.method == 'GET': group = UserGroup.query.filter_by(id=group_id).first() form.init_form(group.name, group.status) return render_template('admin/edit_group.html', navigation=navigation, form=form) if request.method == 'POST': auths = GroupAuthority.result_to_str(form) group = UserGroup.query.filter_by(id=group_id).first() group.update_group(name=form.name.data, status=form.status.data, authority=auths) return redirect(url_for('admin.group'))
def draft_post(page=1): """ 草稿箱页面 :return: """ navigation = get_navigation_info(title="草稿箱", sub_title="修改未发布的文章", tag="draft_post") if request.method == 'GET': pagination = get_admin_posts_paginate(page, per_page=int(get_config("web_admin_post_per_page")), status=STATUS_DRAFT) if request.args.get('post_id') is not None: post = Post.query.filter_by(id=request.args.get('post_id')).first() post.delete() return redirect(url_for('admin.post')) return render_template("admin/post.html", navigation=navigation, posts=pagination.items, pagination=pagination, posts_total=len(pagination.items))
def add_category(): navigation = get_navigation_info(title="添加类别", tag="add_category") form = CategoryForm() if request.method == 'GET': return render_template('admin/edit_category.html', navigation=navigation, form=form) if request.method == 'POST': category = Category(name=form.name.data, sub_name=form.sub_name.data, sort=form.sort.data, status=form.status.data, description=form.description.data) category.add_one() return redirect(url_for('admin.category'))
def index(): posts_count = Post.get_posts_count() comments_count = PostComment.get_comments_count() users_count = User.get_users_count(0) explore_count = get_explore_count() context = { 'posts_count': posts_count, 'comments_count': comments_count, 'users_count': users_count, 'explore_count': explore_count, } navigation = get_navigation_info(title="仪表盘", sub_title="控制器", tag="index") return render_template("admin/index.html", navigation=navigation, **context)
def dustbin_post(page=1): """ 垃圾箱页面 在此页面删除的文章将会在数据库中真正的删除,无法找回 :return: """ navigation = get_navigation_info(title="垃圾箱", sub_title="被删除的文章", tag="dustbin_post") if request.method == 'GET': pagination = get_admin_posts_paginate(page, per_page=int(get_config("web_admin_post_per_page")), status=STATUS_DELETED) if request.args.get('post_id') is not None: post = Post.query.filter_by(id=request.args.get('post_id')).first() post.real_delete() return redirect(url_for('admin.post')) return render_template("admin/post.html", navigation=navigation, posts=pagination.items, pagination=pagination, posts_total=len(pagination.items))
def user(gid=0, page=1): navigation = get_navigation_info(title="用户管理", sub_title="控制台", tag="user") pagination = get_admin_users_paginate( page, int(get_config("web_admin_user_per_page")), gid) groups = UserGroup.get_groups_name() if request.method == 'GET': if request.args.get('user_id') is not None: user = User.query.filter_by(id=request.args.get('user_id')).first() user.real_delete() return redirect(url_for('admin.user')) return render_template('admin/user.html', navigation=navigation, pagination=pagination, users=pagination.items, users_total=len(pagination.items), groups=groups, group_id=int(gid))
def post_reply(page=1): navigation = get_navigation_info(title="文章回复列表", tag="post_reply") pagination = get_admin_post_replies_paginate( page, per_page=int(get_config("web_admin_comment_reply_per_page")), status=STATUS_PUBLISH) if request.method == 'GET': delete_id = request.args.get("delete_id") if delete_id: reply = PostReply.query.filter_by(id=delete_id).first() reply.update_status(status=STATUS_DELETED) return redirect(url_for('admin.post_reply')) return render_template("admin/post_reply.html", navigation=navigation, replies=pagination.items, pagination=pagination, replies_count=len(pagination.items))
def comment(page=1): navigation = get_navigation_info(title="评论列表", tag="comment") pagination = get_admin_comments_paginate( page, per_page=int(get_config("web_admin_comment_per_page")), status=STATUS_PUBLISH) if request.method == 'GET': delete_id = request.args.get("delete_id") if delete_id: comment = PostComment.query.filter_by(id=delete_id).first() comment.update_status(status=STATUS_DELETED) return redirect(url_for('admin.comment')) return render_template("admin/comment.html", navigation=navigation, comments=pagination.items, pagination=pagination, comments_count=len(pagination.items))
def add_user(): navigation = get_navigation_info(title="添加用户", sub_title="新的用户", tag="add_user") form = UserForm() if request.method == 'GET': return render_template('admin/edit_user.html', navigation=navigation, form=form) if request.method == 'POST': user = User(name=form.name.data, password=form.password.data, group_id=form.group_id.data, email=form.email.data, wechat=form.wechat.data, signature=form.signature.data) user.add_one() return redirect(url_for('admin.user'))
def status(): navigation = get_navigation_info(title="状态", tag="status") form = StatusForm() if request.method == 'GET': if request.args.get('item_id') is not None: status = Status.query.filter_by( id=request.args.get('item_id')).first() status.real_delete_by_id() return redirect(url_for('admin.status')) status_list = Status.query.all() return render_template('admin/status.html', navigation=navigation, form=form, status_list=status_list) if request.method == 'POST': stat = Status(name=form.name.data, description=form.description.data) stat.add_one() return redirect(url_for('admin.status'))
def alter_user_avatar(uid): if request.method == 'GET': navigation = get_navigation_info(title="修改头像", tag="alter_user") return render_template('admin/edit_user_avatar.html', navigation=navigation, uid=uid) if request.method == 'POST': # 获取ajax传来的头像文件 file = request.files.get("avatar") if alter_avatar(file, uid): return json.dumps({ "error": 1, "msg": "成功", }) return json.dumps({ "error": 0, "msg": "失败", })
def property(): user = current_user navigation = get_navigation_info(title="属性", tag="property") form = PropertyForm() if request.method == 'GET': if request.args.get('item_id') is not None: property = Property.query.filter_by( id=request.args.get('item_id')).first() property.real_delete_by_id() return redirect(url_for('admin.property')) properties = Property.query.all() return render_template('admin/property.html', navigation=navigation, user=user, form=form, properties=properties) if request.method == 'POST': property = Property(name=form.name.data, description=form.description.data) property.add_one() return redirect(url_for('admin.property'))
def alter_category(category_id, category_sub_name): navigation = get_navigation_info(title="修改类别", tag="alter_category") form = CategoryForm() if request.method == 'GET': category = Category.query.filter_by(id=category_id).first() form.alter_category(name=category.name, sub_name=category.sub_name, sort=category.sort, status=category.status, description=category.description) return render_template('admin/edit_category.html', navigation=navigation, form=form) if request.method == 'POST': category = Category.query.filter_by(id=category_id).first() category.update_category(name=form.name.data, sub_name=form.sub_name.data, sort=form.sort.data, status=form.status.data, description=form.description.data) return redirect(url_for('admin.category'))
def alter_user(uid): navigation = get_navigation_info(title="修改用户", sub_title="已存在的用户", tag="alter_user") form = UserForm() if request.method == 'GET': user = User.query.filter_by(id=uid).first() form.alter_user(name=user.name, group=user.group_id, phone=user.phone, email=user.email, wechat=user.wechat, signature=user.signature) return render_template('admin/edit_user.html', navigation=navigation, form=form, uid=uid) if request.method == 'POST': user = User.query.filter_by(id=uid).first() user.update_user(request.form) return redirect(url_for('admin.user'))
def add_post(): """ 写文章页面 :return: """ navigation = get_navigation_info(title="写文章", sub_title="写一篇新的文章", tag="add_post") form = PostForm() if request.method == 'GET': return render_template("admin/edit_post.html", navigation=navigation, form=form) if request.method == 'POST': post = Post( title=form.title.data, abstract=form.abstract.data, content=form.content.data, uid=current_user.id, category_id=form.category_id.data, rank=form.rank.data, is_top=form.is_top.data, post_property=form.post_property.data, status=form.status.data) post.add_one() return redirect(url_for('admin.post'))