Files
pear-admin-flask/applications/common/admin/role_curd.py
T
2021-06-22 23:42:25 +08:00

146 lines
4.0 KiB
Python

from sqlalchemy import and_
from applications.extensions import db
from applications.models import Role, RoleSchema
from applications.models.rights.power import Power, PowerSchema2
from applications.models import User
# 获取角色对象
from applications.common.curd import model_to_dicts
def get_role_data(page, limit, filters):
print(page, limit, filters)
role = Role.query.filter(and_(*[getattr(Role, k).like(v) for k, v in filters.items()])).paginate(page=page,
per_page=limit,
error_out=False)
count = Role.query.count()
return role, count
def get_role_data_dict(page, limit, filters):
""" 获取角色dict """
role, count = get_role_data(page, limit, filters)
data = model_to_dicts(Schema=RoleSchema, model=role.items)
return data, count
def add_role(req):
""" 增加角色 """
details = req.get("details")
enable = req.get("enable")
roleCode = req.get("roleCode")
roleName = req.get("roleName")
sort = req.get("sort")
role = Role(
details=details,
enable=enable,
code=roleCode,
name=roleName,
sort=sort
)
db.session.add(role)
db.session.commit()
def get_role_by_id(_id):
""" 通过id获取角色 """
r = Role.query.filter_by(id=_id).first()
return r
def update_role(req_json):
""" 更新角色 """
_id = req_json.get("roleId")
data = {
"code": req_json.get("roleCode"),
"name": req_json.get("roleName"),
"sort": req_json.get("sort"),
"enable": req_json.get("enable"),
"details": req_json.get("details")
}
role = Role.query.filter_by(id=_id).update(data)
db.session.commit()
return role
def get_role_power(_id):
""" 获取角色的权限 """
role = Role.query.filter_by(id=_id).first()
check_powers = role.power
check_powers_list = []
for cp in check_powers:
check_powers_list.append(cp.id)
powers = Power.query.all()
power_schema = PowerSchema2(many=True) # 用已继承ma.ModelSchema类的自定制类生成序列化类
output = power_schema.dump(powers) # 生成可序列化对象
for i in output:
if int(i.get("powerId")) in check_powers_list:
i["checkArr"] = "1"
else:
i["checkArr"] = "0"
return output
def update_role_power(_id, power_list):
""" 更新角色权限 """
role = Role.query.filter_by(id=_id).first()
power_id_list = []
for p in role.power:
power_id_list.append(p.id)
powers = Power.query.filter(Power.id.in_(power_id_list)).all()
for p in powers:
role.power.remove(p)
powers = Power.query.filter(Power.id.in_(power_list)).all()
for p in powers:
role.power.append(p)
db.session.commit()
def enable_status(_id):
""" 启用角色 """
enable = 1
role = Role.query.filter_by(id=_id).update({"enable": enable})
if role:
db.session.commit()
return True
return False
def disable_status(_id):
""" 停用角色 """
enable = 0
role = Role.query.filter_by(id=_id).update({"enable": enable})
if role:
db.session.commit()
return True
return False
def remove_role(_id):
""" 删除角色 """
role = Role.query.filter_by(id=_id).first()
# 删除该角色的权限
power_id_list = []
for p in role.power:
power_id_list.append(p.id)
powers = Power.query.filter(Power.id.in_(power_id_list)).all()
for p in powers:
role.power.remove(p)
user_id_list = []
for u in role.user:
user_id_list.append(u.id)
users = User.query.filter(User.id.in_(user_id_list)).all()
for u in users:
role.user.remove(u)
r = Role.query.filter_by(id=id).delete()
db.session.commit()
return r
def batch_remove(ids):
""" 批量删除 """
for _id in ids:
remove_role(_id)