站点人员
公司人员和组织结构访问
站点人员是指能够访问站点的成员。
1 组织架构信息查询
1.1 得到组织实体信息 get_info
得到实体的基本信息。实体:用户、组(部门、群组、角色)等:
root.org.get_info(pid, skip_cache=False)
如果是用户,返回:
{ 'id':'panjunyong', # 用户的唯一ID,永远不变 'login_name':'laopan', # 实际登录的输入的名字,用户可以修改 'title': titlei, 'mobile': mobile, 'phone':phone, 'location':location 'email': email, 'lang': 'zh', # 你的默认偏好语言,每次登录,会根据选择的语言自动设置 'parent': , 'disable':False}
如果是组(部门、群组、角色),返回:
{'id':id, 'title': title, 'parent':}
1.2 查看多个组织实体信息 list_info
得到一组实体的基本信息。实体:用户、组(部门、群组、角色)等:
root.org.list_info(pids, skip_cache=False)
如果是用户,返回:
[{'id':id, 'title': titlei, 'mobile': mobile, 'email': email, 'parent': , 'disable':}]
如果是组(部门、群组、角色), 返回:
[{'id':id, 'title': title, 'parent':}]
1.3 查看用户所在的组 list_user_groups
列出人员所属的组(部门、群组、角色、岗位)信息。
root.org.list_user_groups(user_id)
返回::
{'ous':[ou_id, ...], 'groups':[group_id, ...], 'roles':[role_id, ...], 'licenses':[service_name, ...] }
1.4 查看部门详细信息 get_ou_detail
列出部门下的子部门、群组、用户列表
root.org.get_ou_detail(ou_id, include_diabled, skip_cache=False)
返回::
{'id':'groups.tree.ou1', 'title': '部门一', 'users':['users.test', 'users.two'], 'ous':['groups.tree.sub1', ...], 'groups':['groups.job.job1', ...], }
1.5 查看组的成员 list_group_members
列出组(部门、群组、角色、岗位)的人员清单,子部门、子组里面包含的用户,都会返回。这个用于发信。返回::
root.org.list_group_members(group_id)
返回:
[member_id, ...]
1.6 得到组织结构 list_org_structure
得到组织架构信息,包括组织架构中的组(部门、群组、岗位)信息:
root.org.list_org_structure(hide_team=False):
返回:
{'groups': [], 'id': u'groups.tree.default', 'jobs': [{'id': u'groups.jobs.791112', 'title': u'xcvx'}], 'ous': [{'groups': [], 'id': u'groups.tree.468511', 'jobs': [{'id': u'groups.jobs.570410', 'title': u'\u603b\u88c1'}, {'id': u'groups.jobs.519669', 'title': u'\u526f\u603b\u88c1'}, {'id': u'groups.jobs.304170', 'title': u'\u603b\u7ecf\u7406'}, {'id': u'groups.jobs.214984', 'title': u'\u603b\u7ecf\u7406\u52a9\u7406'}, {'id': u'groups.jobs.436675', 'title': u''}], 'ous': [{'groups': [], 'id': u'groups.tree.110040', 'jobs': [], 'ous': [], 'title': u'rfedf', 'type': 'department'}, {'groups': [], 'id': u'groups.tree.471172', 'jobs': [], 'ous': [], 'title': u'fdf', 'type': 'department'}, {'groups': [], 'id': u'groups.tree.419478', 'jobs': [], 'ous': [], 'title': u'fd', 'type': 'department'}, {'groups': [], 'id': u'groups.tree.689057', 'jobs': [], 'ous': [], 'title': u'fdsfdsfdsf', 'type': 'department'}], 'title': u'\u603b\u88c1\u529e', 'type': 'department'}, {'groups': [], 'id': u'groups.tree.641936', 'jobs': [{'id': u'groups.jobs.701987', 'title': u'\u884c\u653f\u7ecf\u7406'}, {'id': u'groups.jobs.839766', 'title': u'\u884c\u653f\u6587\u5458'}, {'id': u'groups.jobs.552599', 'title': u'\u524d\u53f0'}, {'id': u'groups.jobs.562020', 'title': u''}], 'ous': [], 'title': u'\u884c\u653f\u90e8', 'type': 'department'}, {'groups': [], 'id': u'groups.tree.groups.tree.641936', 'jobs': [{'id': u'groups.jobs.groups.tree.231151', 'title': u'\u4eba\u529b\u8d44\u6e90\u90e8'}, {'id': u'groups.jobs.578591', 'title': u''}], 'ous': [], 'title': u'\u884c\u653f\u90e8', 'type': 'department'}], 'title': u'\u5e7f\u5dde\u6613\u5ea6', 'type': 'company'}
1.7 刷新缓存 refresh_cache
刷新缓存。为提高性能,root.org会自动缓存所有内容。
如果因为异常导致缓存不正确,可以调用这个方法,清除站点的缓存内容:
root.org.refresh_cache()
1.8 搜索
搜索组织架构:
root.org.search(ou, q='', scope='onelevel', object_type='', include_disabled=False):
其中:
- ou: 搜索的部门ID,如根节点 ``default`` - scope: 可以取值 单层 ``onelevel`` ,或者整个子树 ``subtree`` - object_type: 一个或者多个对象类型,比如: ``ou,group,person`` - include_disabled: 是否包含禁用的对象,默认 ``false`` - q: 搜索词,采用类似全文搜索的方式
返回:
[{'id': 'users.admin', 'object_type': 'person', 'parent': 'groups.tree.default', 'title': 'admin', 'disable': false, 'email': 'test@zopen.cn', 'mobile': None, 'number': 9223372036854775807, 'phone': '123445566', 'xmpp_username': 'admin#zopen@127.0.0.1'} ]
2 站点实例信息 list_instances
得到全部的站点实例:
root.org.list_instances(skip_cache=False):
返回:
{ instance_name:{'url':url, 'title':title}, ... }
3 角色管理
3.3 查询岗位的部门 list_role_ous
岗位在哪些部门中:
root.org.list_role_ous(role)
其中:
- role: 需要查找的角色, 如 custom.leader , 注意需要加上 custom 前缀
返回部门的pid:
['groups.tree.default', 'groups.default.123123']
3.4 查询岗位的人员 list_role_persons
某个部门下某个改为的人员,如果没有,往上继承找:
root.org.list_role_principals(ou, role, inherit)
其中:
- ou:所在的部门
- role: 需要查找的角色, 如 custom.leader , 注意需要加上 custom 前缀
- inherit:是否继承, True / False
3.5 查询部门包含的岗位 list_ou_roles
这个用于人员选择的时候,部门的改为:
root.org.list_ou_roles(ou_pid)
其中:
- ou_pid:所在的部门的pid,比如 groups.tree.default
返回:
['groups.roles.custom.Leader', 'groups.roles.custom.Manager']
3.6 查询人员拥有的岗位 list_person_roles
- ::
- root.org.list_person_roles(pid)
- pid:人员id,比如:users.zhangsan
返回所有的部门岗位:
['groups.roles.custom.default.Leader', 'groups.roles.custom.123123.Manager'}]
3.7 分配岗位的人员grant_role_persons
root.org.grant_role_persons(ou_pid, role, pids)
在指定的部门,为人员分配角色
输入:
- ou: 所在部门的id, 比如 groups.tree.default
- role: 角色,比如custom.leader,注意需要加上 custom. 前缀
- pids: 人员pid,比如: ['users.panjunyong']
3.8 取消岗位的人员 unset_role_persons
在指定的部门,去除人员分配的角色:
root.org.unset_role_principals(ou_pid, role, pids):
其中:
- ou_pid: 所在部门的pid,比如 groups.tree.default
- role: 角色,比如custom.leader,注意需要加上 custom. 前缀
- pids:人员pid,比如: ['users.panjunyong']
4 同步接口 sync
同步主要用于多用户数据源之间的同步,主要涉及 新增和编辑,不会有删除操作:
root.org.sync(objects_detail=None, send_mail=True, async=False, new_user_password='')
参数:
objects_detail: 对象的详细信息列表,可以是新增或者修改的 send_mail: 当新建人员的时候,默认发送邮件 async: 这个接口默认是同步执行,当这个参数为真,以异步执行 new_user_password: 新用户的初始密码,老用户不受影响
objects_detail 参数如何编写请参见 同步API
5 管理接口
5.1 删除 remove_objects
删除一个对象,可以是ou/person/group:
root.org.remove_objects(objects)
其中:
- objects: 带对象类型的对象pid清单,比如: ['users.zhangsan', 'groups.tree.1212', 'groups.tree.32112']
返回:
{ status:true }
6 空间成员管理 teams
站点支持分组成员管理。其实,每个应用容器,都可以分组管理自己的成员。
6.1 激活应用容器成员功能
默认应用容器成员功能是关闭的。可以激活:
appcontainer.state.set('team.active')
一旦项目、工作组结束,应用容器成员自动解散, 可以再次关闭应用容器成员:
appcontainer.state.set('team.closed')
这时候针对应用容器成员的授权自动失效。
6.2 应用容器成员组 list_groups
应用容器成员包括多个子组,可以选择 某个子组,或者选择整个应用容器成员:
- 整个应用容器成员,比如一个项目的所有组员
- 应用容器成员下面的一个子组,比如设计组:
查看team所有的组:
app_container.teams.list_groups()
返回:
[{id, title, description, members, visible_to}]
6.3 得到一个组 get_group
也可以得到一个组的信息:
app_container.teams.get_group(name):
同样返回:
{id, title, description, members, visible_to}
6.4 增删改组
team组管理其他的接口还包括:
- add_group(name, title, description): 添加一个应用容器成员
- update_group(name, title, description): 设置组员标题和描述
- remove_group(name): 删除一个应用容器成员
6.5 应用容器成员人员限制
组成员管理接口
- list_member_groups(member): 到人员所在的组pid
- list_group_members(name): 得到组包括的人员pid
- add_team_members(name, members): 添加多个组员
- remove_group_members(name, members): 删除多个组员
- set_group_members(name, members): 设置组员
6.6 应用容器成员组的可见性
可现在应用容器成员组员,只有指定人员才能看到,方便在人员选择的时候做控制
- set_group_visible(group, visible_to)
- get_group_visible(group)
- is_visible(pid, group)
6.7 team和组的标识ID
get_team_pid()
内部标识pid为: groups.teams.[uid], uid是应用容器成员关联容器的uid
get_group_pid(name): 得到组的pid:
groups.teams.[uid]-[team_name]
7 站内群组
站内群组可通过表单库来创建维护,可用于授权和人员选择。
7.1 注册一个站内群组 register_team
将某个表单页注册为一个站内群组:
root.org.register_team(dataitem)
这个表单可以包含2个特殊字段:
- members 字段将被认为群组的人员,支持组和人
- excluded 排除的群组人员,只能是人
7.3 root.org.list_teams(restricted=True)
查看所有通过表单库创建的站内群组,会排除废弃的以及用户没有权限查看的站内群组。 默认只能找到自己有权限的组,传入 restricted=False 可以查看所有组.
搜索所有的表单库类型 root.settings['team_types'] , 默认是 ['zopen.members:group'] ,返回结果:
[ "groups.teams.xxxx" ]