Files
pear-admin-flask/applications/common/utils/power.py
T

139 lines
3.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
集成了对 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: 父ID0为顶级菜单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