大道至简,新一代企业应用无栈开发

平台之上,一种语言,可视化、脚本化、全端一体化开发

站点人员

公司人员和组织结构访问

docutils document without title

站点人员是指能够访问站点的成员。

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.1   查询岗位 list_custom_roles

返回所有的角色:

root.org.list_custom_roles()

3.2   设置岗位 set_custom_roles

设置岗位:

root.org.set_custom_roles([{'name':name, 'title':title}])

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 }

5.2   去除组员 remove_group_members

从组里面移除一组人员:

root.org.remove_group_members(group_id, users)

5.3   添加组员 add_group_users

添加一组人员到组里面:

root.org.add_group_users(group_id, user_ids):

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.2   unregister_team

取消某个表单页站内群组:

root.org.unregister_team(dataitem)

7.3   root.org.list_teams(restricted=True)

查看所有通过表单库创建的站内群组,会排除废弃的以及用户没有权限查看的站内群组。 默认只能找到自己有权限的组,传入 restricted=False 可以查看所有组.

搜索所有的表单库类型 root.settings['team_types'] , 默认是 ['zopen.members:group'] ,返回结果:

[ "groups.teams.xxxx" ]