调整魔目录结构
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
from flask import Blueprint, Flask
|
||||
from flask_restful import Api
|
||||
|
||||
rights_bp = Blueprint('rights', __name__, url_prefix='/rights')
|
||||
rights_api = Api(rights_bp)
|
||||
|
||||
from . import routes
|
||||
from . import view
|
||||
|
||||
@@ -0,0 +1,117 @@
|
||||
import copy
|
||||
from collections import OrderedDict
|
||||
|
||||
from flask import current_app
|
||||
from flask_login import current_user
|
||||
|
||||
from applications.models import PowerSchema
|
||||
|
||||
|
||||
def get_render_config():
|
||||
# 网站配置
|
||||
config = dict(logo={
|
||||
# 网站名称
|
||||
"title": current_app.config.get("SYSTEM_NAME"),
|
||||
# 网站图标
|
||||
"image": "/static/admin/admin/images/logo.png"
|
||||
# 菜单配置
|
||||
}, menu={
|
||||
# 菜单数据来源
|
||||
"data": "/rights/menu",
|
||||
"collaspe": True,
|
||||
# 是否同时只打开一个菜单目录
|
||||
"accordion": True,
|
||||
"method": "GET",
|
||||
# 是否开启多系统菜单模式
|
||||
"control": False,
|
||||
# 默认选中的菜单项
|
||||
"select": "0",
|
||||
# 是否开启异步菜单,false 时 data 属性设置为菜单数据,false 时为 json 文件或后端接口
|
||||
"async": True
|
||||
}, tab={
|
||||
# 是否开启多选项卡
|
||||
"muiltTab": True,
|
||||
# 切换选项卡时,是否刷新页面状态
|
||||
"keepState": True,
|
||||
# 是否开启 Tab 记忆
|
||||
"session": True,
|
||||
# 最大可打开的选项卡数量
|
||||
"tabMax": 30,
|
||||
"index": {
|
||||
# 标识 ID , 建议与菜单项中的 ID 一致
|
||||
"id": "10",
|
||||
# 页面地址
|
||||
"href": "/admin/welcome",
|
||||
# 标题
|
||||
"title": "首页"
|
||||
}
|
||||
}, theme={
|
||||
# 默认主题色,对应 colors 配置中的 ID 标识
|
||||
"defaultColor": "2",
|
||||
# 默认的菜单主题 dark-theme 黑 / light-theme 白
|
||||
"defaultMenu": "dark-theme",
|
||||
# 是否允许用户切换主题,false 时关闭自定义主题面板
|
||||
"allowCustom": True
|
||||
}, colors=[{
|
||||
"id": "1",
|
||||
"color": "#2d8cf0"
|
||||
},
|
||||
{
|
||||
"id": "2",
|
||||
"color": "#5FB878"
|
||||
},
|
||||
{
|
||||
"id": "3",
|
||||
"color": "#1E9FFF"
|
||||
}, {
|
||||
"id": "4",
|
||||
"color": "#FFB800"
|
||||
}, {
|
||||
"id": "5",
|
||||
"color": "darkgray"
|
||||
}
|
||||
], links=current_app.config.get("SYSTEM_PANEL_LINKS"), other={
|
||||
# 主页动画时长
|
||||
"keepLoad": 1200,
|
||||
# 布局顶部主题
|
||||
"autoHead": False
|
||||
}, header=False)
|
||||
return config
|
||||
|
||||
|
||||
# 生成菜单树
|
||||
def make_menu_tree():
|
||||
role = current_user.role
|
||||
powers = []
|
||||
for i in role:
|
||||
# 如果角色没有被启用就直接跳过
|
||||
if i.enable == 0:
|
||||
continue
|
||||
# 变量角色用户的权限
|
||||
for p in i.power:
|
||||
# 如果权限关闭了就直接跳过
|
||||
if p.enable == 0:
|
||||
continue
|
||||
# 一二级菜单
|
||||
if p.type == 0 or p.type == 1:
|
||||
powers.append(p)
|
||||
|
||||
power_schema = PowerSchema(many=True) # 用已继承 ma.ModelSchema 类的自定制类生成序列化类
|
||||
power_dict = power_schema.dump(powers) # 生成可序列化对象
|
||||
power_dict.sort(key=lambda x: x['id'], reverse=True)
|
||||
|
||||
menu_dict = OrderedDict()
|
||||
for _dict in power_dict:
|
||||
if _dict['id'] in menu_dict:
|
||||
# 当前节点添加子节点
|
||||
_dict['children'] = copy.deepcopy(menu_dict[_dict['id']])
|
||||
# 删除子节点
|
||||
del menu_dict[_dict['id']]
|
||||
|
||||
if _dict['parent_id'] not in menu_dict:
|
||||
menu_dict[_dict['parent_id']] = [_dict]
|
||||
else:
|
||||
menu_dict[_dict['parent_id']].append(_dict)
|
||||
|
||||
return menu_dict.get(0)
|
||||
|
||||
@@ -5,18 +5,18 @@ from applications.common.utils.http import table_api, success_api, fail_api
|
||||
from applications.common.utils.rights import authorize
|
||||
|
||||
|
||||
admin_role = Blueprint('role', __name__, url_prefix='/admin/role')
|
||||
role_bp = Blueprint('role', __name__, url_prefix='/admin/role')
|
||||
|
||||
|
||||
# 用户管理
|
||||
@admin_role.get('/')
|
||||
@role_bp.get('/')
|
||||
@authorize("admin:role:main", log=True)
|
||||
def main():
|
||||
return render_template('admin/role/main.html')
|
||||
|
||||
|
||||
# 表格数据
|
||||
@admin_role.get('/data')
|
||||
@role_bp.get('/data')
|
||||
@authorize("admin:role:main", log=True)
|
||||
def table():
|
||||
page = request.args.get('page', type=int)
|
||||
@@ -33,7 +33,7 @@ def table():
|
||||
|
||||
|
||||
# 角色增加
|
||||
@admin_role.get('/add')
|
||||
@role_bp.get('/add')
|
||||
@authorize("admin:role:add", log=True)
|
||||
@login_required
|
||||
def add():
|
||||
@@ -41,7 +41,7 @@ def add():
|
||||
|
||||
|
||||
# 角色增加
|
||||
@admin_role.post('/save')
|
||||
@role_bp.post('/save')
|
||||
@authorize("admin:role:add", log=True)
|
||||
def save():
|
||||
req = request.json
|
||||
@@ -50,14 +50,14 @@ def save():
|
||||
|
||||
|
||||
# 角色授权
|
||||
@admin_role.get('/power/<int:_id>')
|
||||
@role_bp.get('/power/<int:_id>')
|
||||
@authorize("admin:role:power", log=True)
|
||||
def power(_id):
|
||||
return render_template('admin/role/power.html', id=_id)
|
||||
|
||||
|
||||
# 获取角色权限
|
||||
@admin_role.get('/getRolePower/<int:_id>')
|
||||
@role_bp.get('/getRolePower/<int:_id>')
|
||||
@authorize("admin:role:main", log=True)
|
||||
def get_role_power(_id):
|
||||
powers = role_curd.get_role_power(_id)
|
||||
@@ -69,7 +69,7 @@ def get_role_power(_id):
|
||||
|
||||
|
||||
# 保存角色权限
|
||||
@admin_role.put('/saveRolePower')
|
||||
@role_bp.put('/saveRolePower')
|
||||
@authorize("admin:role:edit", log=True)
|
||||
def save_role_power():
|
||||
req_form = request.form
|
||||
@@ -81,7 +81,7 @@ def save_role_power():
|
||||
|
||||
|
||||
# 角色编辑
|
||||
@admin_role.get('/edit/<int:_id>')
|
||||
@role_bp.get('/edit/<int:_id>')
|
||||
@authorize("admin:role:edit", log=True)
|
||||
def edit(_id):
|
||||
role = role_curd.get_role_by_id(_id)
|
||||
@@ -89,7 +89,7 @@ def edit(_id):
|
||||
|
||||
|
||||
# 更新角色
|
||||
@admin_role.put('/update')
|
||||
@role_bp.put('/update')
|
||||
@authorize("admin:role:edit", log=True)
|
||||
def update():
|
||||
res = role_curd.update_role(request.json)
|
||||
@@ -99,7 +99,7 @@ def update():
|
||||
|
||||
|
||||
# 启用用户
|
||||
@admin_role.put('/enable')
|
||||
@role_bp.put('/enable')
|
||||
@authorize("admin:role:edit", log=True)
|
||||
def enable():
|
||||
id = request.json.get('roleId')
|
||||
@@ -113,7 +113,7 @@ def enable():
|
||||
|
||||
|
||||
# 禁用用户
|
||||
@admin_role.put('/disable')
|
||||
@role_bp.put('/disable')
|
||||
@authorize("admin:role:edit", log=True)
|
||||
def dis_enable():
|
||||
_id = request.json.get('roleId')
|
||||
@@ -126,7 +126,7 @@ def dis_enable():
|
||||
|
||||
|
||||
# 角色删除
|
||||
@admin_role.delete('/remove/<int:_id>')
|
||||
@role_bp.delete('/remove/<int:_id>')
|
||||
@authorize("admin:role:remove", log=True)
|
||||
def remove(_id):
|
||||
res = role_curd.remove_role(_id)
|
||||
@@ -136,7 +136,7 @@ def remove(_id):
|
||||
|
||||
|
||||
# 批量删除
|
||||
@admin_role.delete('/batchRemove')
|
||||
@role_bp.delete('/batchRemove')
|
||||
@authorize("admin:role:remove", log=True)
|
||||
@login_required
|
||||
def batch_remove():
|
||||
|
||||
@@ -3,18 +3,19 @@ from flask import jsonify
|
||||
from flask_login import login_required
|
||||
|
||||
from . import rights_bp
|
||||
from ...common.admin import index_curd
|
||||
|
||||
from ._utils import get_render_config, make_menu_tree
|
||||
|
||||
|
||||
@rights_bp.get('/configs')
|
||||
@login_required
|
||||
def configs():
|
||||
return index_curd.get_render_config()
|
||||
return get_render_config()
|
||||
|
||||
|
||||
# 菜单
|
||||
@rights_bp.get('/menu')
|
||||
@login_required
|
||||
def menu():
|
||||
menu_tree = index_curd.make_menu_tree()
|
||||
menu_tree = make_menu_tree()
|
||||
return jsonify(menu_tree)
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
from flask import render_template, request, jsonify
|
||||
from flask import render_template, request, jsonify, make_response
|
||||
from flask_restful import Resource, reqparse
|
||||
|
||||
from . import rights_bp
|
||||
from . import rights_bp, rights_api
|
||||
from ...common.admin import rights_curd
|
||||
from ...common.utils.http import success_api, fail_api
|
||||
from ...common.utils.rights import authorize
|
||||
@@ -25,12 +26,14 @@ def data():
|
||||
@rights_bp.get('/add')
|
||||
@authorize("admin:power:add", log=True)
|
||||
def add():
|
||||
"""获取增加视图"""
|
||||
return render_template('admin/power/add.html')
|
||||
|
||||
|
||||
@rights_bp.get('/selectParent')
|
||||
@authorize("admin:power:main", log=True)
|
||||
def select_parent():
|
||||
"""获取选择父节点"""
|
||||
power_data = rights_curd.select_parent()
|
||||
res = {
|
||||
"status": {"code": 200, "message": "默认"},
|
||||
@@ -49,36 +52,41 @@ def save():
|
||||
return success_api(msg="成功")
|
||||
|
||||
|
||||
# 权限编辑
|
||||
@rights_bp.get('/edit/<int:_id>')
|
||||
@authorize("admin:power:edit", log=True)
|
||||
def edit(_id):
|
||||
power = rights_curd.get_power_by_id(_id)
|
||||
icon = str(power.icon).split()
|
||||
if len(icon) == 2:
|
||||
icon = icon[1]
|
||||
else:
|
||||
icon = None
|
||||
return render_template('admin/power/edit.html', power=power, icon=icon)
|
||||
@rights_api.resource('/power/<int:power_id>')
|
||||
class RightsURD(Resource):
|
||||
@authorize("admin:power:edit", log=True)
|
||||
def get(self, power_id):
|
||||
power = rights_curd.get_power_by_id(power_id)
|
||||
icon = str(power.icon).split()
|
||||
if len(icon) == 2:
|
||||
icon = icon[1]
|
||||
else:
|
||||
icon = None
|
||||
return make_response(render_template('admin/power/edit.html', power=power, icon=icon))
|
||||
|
||||
@authorize("admin:power:remove", log=True)
|
||||
def delete(self, power_id):
|
||||
r = rights_curd.remove_power(power_id)
|
||||
if r:
|
||||
return success_api(msg="删除成功")
|
||||
else:
|
||||
return fail_api(msg="删除失败")
|
||||
|
||||
# 权限更新
|
||||
@rights_bp.put('/update')
|
||||
@authorize("admin:power:edit", log=True)
|
||||
def update():
|
||||
res = rights_curd.update_power(request.json)
|
||||
if not res:
|
||||
return fail_api(msg="更新权限失败")
|
||||
return success_api(msg="更新权限成功")
|
||||
@authorize("admin:power:edit", log=True)
|
||||
def put(self, power_id):
|
||||
res = rights_curd.update_power(request.json)
|
||||
if not res:
|
||||
return fail_api(msg="更新权限失败")
|
||||
return success_api(msg="更新权限成功")
|
||||
|
||||
|
||||
# 启用权限
|
||||
@rights_bp.put('/enable')
|
||||
@authorize("admin:power:edit", log=True)
|
||||
def enable():
|
||||
_id = request.json.get('powerId')
|
||||
power_id = request.json.get('powerId')
|
||||
if id:
|
||||
res = rights_curd.enable_status(_id)
|
||||
res = rights_curd.enable_status(power_id)
|
||||
if not res:
|
||||
return fail_api(msg="出错啦")
|
||||
return success_api(msg="启用成功")
|
||||
@@ -98,17 +106,6 @@ def dis_enable():
|
||||
return fail_api(msg="数据错误")
|
||||
|
||||
|
||||
# 权限删除
|
||||
@rights_bp.delete('/remove/<int:_id>')
|
||||
@authorize("admin:power:remove", log=True)
|
||||
def remove(_id):
|
||||
r = rights_curd.remove_power(_id)
|
||||
if r:
|
||||
return success_api(msg="删除成功")
|
||||
else:
|
||||
return fail_api(msg="删除失败")
|
||||
|
||||
|
||||
# 批量删除
|
||||
@rights_bp.delete('/batchRemove')
|
||||
@authorize("admin:power:remove", log=True)
|
||||
|
||||
Reference in New Issue
Block a user