Squashed 'paste-framework/' content from commit 34e8684
git-subtree-dir: paste-framework git-subtree-split: 34e8684c4bc3cebbe177509f42ab4ef5b5425a7a
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
from sqlalchemy import delete
|
||||
|
||||
from paste.rbac.rbac_item import RbacItem
|
||||
|
||||
|
||||
class RbacRole(RbacItem):
|
||||
"""
|
||||
角色。
|
||||
是一系列关联角色或权限的组合。可以包含权限,也可以包含其他角色。
|
||||
"""
|
||||
|
||||
@classmethod
|
||||
async def create(cls, name: str, description: str = None, rule_name: str = None):
|
||||
"""
|
||||
创建角色。
|
||||
|
||||
:param name: 角色名称
|
||||
:param description: 角色描述
|
||||
:param rule_name: 规则名称
|
||||
:return: 角色对象
|
||||
"""
|
||||
assert name not in ('', None), '必须提供角色名称.'
|
||||
_role = cls(name=name, description=description, type=cls.TYPE_ROLE)
|
||||
_role.rule_name = rule_name if rule_name else _role.rule_name
|
||||
await _role.async_save()
|
||||
return _role
|
||||
|
||||
@classmethod
|
||||
async def delete(cls, name: str):
|
||||
"""
|
||||
删除角色。
|
||||
|
||||
:param name: 授权项名称
|
||||
:return: 操作状态,游标返回对象
|
||||
"""
|
||||
assert name not in ('', None), '必须提供角色名称.'
|
||||
_query = delete(cls).where(cls.name == name)
|
||||
_result = await cls.raw_execute(query=_query)
|
||||
_rowcount = _result.rowcount if isinstance(_result.rowcount, int) else 0
|
||||
return _rowcount > 0, _result
|
||||
|
||||
@classmethod
|
||||
async def modify(cls, name: str, description: str = None, rule_name: str = None):
|
||||
"""
|
||||
编辑角色。
|
||||
|
||||
:param name: 角色名称
|
||||
:param description: 描述
|
||||
:param rule_name: 规则名称
|
||||
:return: 角色对象
|
||||
"""
|
||||
assert name not in ('', None), '必须提供角色名称.'
|
||||
_role: cls = await cls(name=name).async_find_first()
|
||||
assert _role, f"未找到名称为:{name} 的角色."
|
||||
|
||||
_role.description = description if description else _role.description
|
||||
_role.rule_name = rule_name if rule_name else _role.rule_name
|
||||
await _role.async_save()
|
||||
return _role
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
super().__init__(**kwargs)
|
||||
self.type = self.TYPE_ROLE
|
||||
Reference in New Issue
Block a user