更新插件功能
This commit is contained in:
@@ -0,0 +1,138 @@
|
||||
"""
|
||||
集成了对 Pear Admin Flask 的权限操作,并给了相对应的示例。
|
||||
注意:此权限相当于添加后台菜单。
|
||||
"""
|
||||
|
||||
from applications.common import curd
|
||||
from applications.extensions import db
|
||||
from applications.models import Power
|
||||
|
||||
from applications.extensions import ma
|
||||
from marshmallow import fields
|
||||
|
||||
|
||||
class PowerOutSchema2(ma.Schema): # 序列化类
|
||||
powerId = fields.Str(attribute="id")
|
||||
powerName = fields.Str(attribute="name")
|
||||
powerType = fields.Str(attribute="type")
|
||||
powerUrl = fields.Str(attribute="url")
|
||||
powerCode = fields.Str(attribute="code")
|
||||
openType = fields.Str(attribute="open_type")
|
||||
parentId = fields.Str(attribute="parent_id")
|
||||
icon = fields.Str()
|
||||
sort = fields.Integer()
|
||||
create_time = fields.DateTime()
|
||||
update_time = fields.DateTime()
|
||||
enable = fields.Integer()
|
||||
|
||||
|
||||
def get_all():
|
||||
"""
|
||||
获取所有权限,会返回一个含有菜单的列表。每个列表都是一个字典。
|
||||
|
||||
字典构成如下::
|
||||
{
|
||||
"powerType": "0", # 权限类型 0目录 1菜单 2按钮
|
||||
"powerUrl": None, # 路径
|
||||
"powerCode": "", # 权限标识
|
||||
"update_time": None, # 更新时间
|
||||
"sort": 1, # 排序
|
||||
"openType": None, # 打开方式 _iframe框架 _blank新页面
|
||||
"icon": "layui-icon layui-icon-set-fill", # 图标
|
||||
"powerName": "系统管理", # 名称
|
||||
"create_time": None, # 创建时间
|
||||
"parentId": "0", # 父id
|
||||
"powerId": "1", # 自己的id
|
||||
"enable": 1 # 是否启用
|
||||
}
|
||||
|
||||
:return: 菜单列表。
|
||||
"""
|
||||
power = Power.query.all()
|
||||
res = curd.model_to_dicts(schema=PowerOutSchema2, data=power)
|
||||
res.append({"powerId": 0, "powerName": "顶级权限", "parentId": -1})
|
||||
return res
|
||||
|
||||
|
||||
def add(parentId, powerName, powerType, icon, sort: int, enable: bool, powerCode="", powerUrl="", openType=""):
|
||||
"""
|
||||
新建一个菜单权限。
|
||||
|
||||
参考代码::
|
||||
|
||||
dev.power.add("0", "测试", "1", "layui-icon-time", 0, True, "testfor", "https://baidu.com", "_iframe")
|
||||
|
||||
:param parentId: 父ID,0为顶级菜单ID
|
||||
:param powerName: 菜单名称
|
||||
:param powerType: 权限类型(状态) 0目录 1菜单 2按钮
|
||||
:param icon: 图标,详细查看layui的图标
|
||||
:param sort: 排序
|
||||
:param enable: 是否启用
|
||||
|
||||
:param powerCode: 权限标识
|
||||
:param powerUrl: 权限URL,菜单打开的网址,或者是路径。可选,菜单和按钮类型必填。
|
||||
:param openType: 打开方式,_iframe框架 _blank新页面。可选,菜单和按钮类型必填。
|
||||
|
||||
|
||||
|
||||
:return: 返回新权限ID
|
||||
"""
|
||||
power = Power(
|
||||
icon=icon,
|
||||
open_type=openType,
|
||||
parent_id=parentId,
|
||||
code=powerCode,
|
||||
name=powerName,
|
||||
type=powerType,
|
||||
url=powerUrl,
|
||||
sort=sort,
|
||||
enable=1
|
||||
)
|
||||
r = db.session.add(power)
|
||||
db.session.commit()
|
||||
return power.id
|
||||
|
||||
|
||||
def update(powerId, data):
|
||||
"""
|
||||
更新权限。
|
||||
|
||||
data可选::
|
||||
|
||||
"icon"
|
||||
"open_type"
|
||||
"parent_id"
|
||||
"code"
|
||||
"name"
|
||||
"type"
|
||||
"url"
|
||||
"sort"
|
||||
|
||||
:param powerId: 要更新的权限ID
|
||||
|
||||
:return: 是否成功
|
||||
"""
|
||||
res = Power.query.filter_by(id=powerId).update(data)
|
||||
db.session.commit()
|
||||
if res:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
|
||||
def delete(powerId):
|
||||
"""
|
||||
删除权限。
|
||||
|
||||
:param powerId: 要更新的权限ID
|
||||
:return: 是否成功
|
||||
"""
|
||||
power = Power.query.filter_by(id=powerId).first()
|
||||
power.role = []
|
||||
|
||||
r = Power.query.filter_by(id=powerId).delete()
|
||||
db.session.commit()
|
||||
if r:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
Reference in New Issue
Block a user