工具类
TreeNodeManger 结点管理
django_tree_perm.controller.TreeNodeManger
Bases: object
树结点管理类
node = typing.cast(TreeNode, node)
instance-attribute
user = user
instance-attribute
__init__(node=None, user=None, **kwargs)
初始化
| Parameters: |
|
|---|
add_node(name, alias='', description='', parent=None, parent_id=None, parent_path=None, is_key=False, user=None)
classmethod
新增树结点
| Parameters: |
|
|---|
| Raises: |
|
|---|
| Returns: |
|
|---|
find_parent_node(parent=None, parent_id=None, parent_path=None, required=False)
classmethod
根据参初始化父类结点,并判断结点是否能够作为父类结点
| Parameters: |
|
|---|
| Raises: |
|
|---|
| Returns: |
|
|---|
get_node_object(node=None, node_id=None, key_name=None, path=None, required=False, **kwargs)
classmethod
获取结点对象
| Parameters: |
|
|---|
| Raises: |
|
|---|
| Returns: |
|
|---|
load_tree_data(data)
classmethod
加载JSON树结构数据写入数据库中
| Parameters: |
|
|---|
| Returns: |
|
|---|
move_path(parent=None, parent_id=None, parent_path=None)
更改结点的父类结点(即移动结点在树结构中的位置)
- 会更新该结点下所有子结点的信息,主要是更新结点path属性;
- 暂不允许将结点转为根结点,parent、parent_id、parent_path参数必须有一个;
- 可用于恢复 disabled=True 的结点
| Parameters: |
|
|---|
| Raises: |
|
|---|
| Returns: |
|
|---|
remove(clear_chidren=False)
删除结点
- 普通结点,直接删除数据库记录;
- is_key=True 的结点,不允许删除数据库记录,删除操作仅将 disabled 置为 True
| Parameters: |
|
|---|
| Raises: |
|
|---|
| Returns: |
|
|---|
to_json_tree(queryset, trace_to_root=True)
classmethod
将查询的结点对象,转换成树型结构json数据;需追溯到根结点用于树型结构展示
| Parameters: |
|
|---|
| Returns: |
|
|---|
update_attrs(name=None, alias=None, description=None, parent_id=None, parent_path=None)
更新结点信息,参数不传递则表示不更新
| Parameters: |
|
|---|
| Raises: |
|
|---|
PermManager 权限管理
django_tree_perm.controller.PermManager
Bases: object
权限管理
has_node_perm(user, path=None, key_name=None, roles=None, can_manage=False)
classmethod
是否有某个结点的权限
- 主要用于其他系统调用,判断用户是否有某key node的权限;
- 结点的管理权限判断,需传递参数 can_manage=True;
| Parameters: |
|
|---|
| Returns: |
|
|---|
has_tree_perm(user)
classmethod
判断是否有树的管理权限; 仅 is_active 且 is_superuser 用户有关联权限
- 操作新增根结点;
- 对所有结点增删改查;
- 对角色进行增删改查;
| Parameters: |
|
|---|
| Returns: |
|
|---|
其他
django_tree_perm.utils
工具模块
TREE_SPLIT_NODE_FLAG定义树结点拼接path路径的分隔符SAFE_METHODS定义接口只读权限的 method
SAFE_METHODS = ('GET', 'HEAD', 'OPTIONS')
module-attribute
TREE_SPLIT_NODE_FLAG = '.'
module-attribute
get_path_parent(path)
获取树结点路径的直接父类路径
| Parameters: |
|
|---|
| Returns: |
|
|---|
get_tree_paths(paths)
根据path获取所有父类路径
例如 "a.b.c" 返回 ["a", "a.b", "a.b.c"]
| Parameters: |
|
|---|
| Returns: |
|
|---|