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

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

站点

站点和对象

站点根对象

站点根对象

站点根、工作台,都是属于栏目容器。栏目容器可以管理子栏目,定义团队成员。栏目容器也叫做空间。

根站点对象在脚本中固定为 root, 这个对象在所有的脚本中可以直接使用。

站点根节点的对象类型:

>>> root.object_types
('Root', 'AppContainer', 'Container')

1   站点的基础信息 root.info

可以查看自身的配置信息,这些是只读的:

root.info()

返回一个dict,包含如下信息:

  • version: 当前运行版本
  • application: 应用名
  • account: 比如zopen
  • instance: 实例名
  • operator: 本站点operator名字
  • convert_drivers: 系统支持的特殊转换驱动。如果支持msoffice转换,这里返回 ('msoffice', )
  • sandbox: 表示脚本运行是否开启沙箱保护。有些软件包只有在开启沙箱的时候才能运行

2   站点的运行参数 root.operation_options

这些参数也是只读的,包括:

  • sms: 短信数量
  • apps_packages: 软件包数量
  • flow_records: 数据库记录
  • docsdue: 文档使用期限
  • docs_quota: 文件存储限额(M)
  • docs_users: 文档许可用户数
  • docs_publish: 文档发布
  • flow_customize: 流程定制
  • apps_scripting: 允许开发软件包

3   站点公钥和私钥

3.1   得到公钥 get_public_key

每个站点包括一组公钥

另外可以得到站点的公钥:

root.get_public_key()

3.2   站点签名 sign

使用站点的私钥,为为某个文本签名:

signature = root.sign(text)

其中 text 是签名的文本

3.3   签名检查 verify

也可以检查签名是否合法:

root.verify(text, signature)

其中:

  • text:签名的文本
  • signature:签名信息

4   用户认证

4.1   用户登录 login_as

如果需要定制认证,可以通过代码主动声明登录成功:

root.login_as(request, username, logout_url="http://xxx.xx/xxx")

其中:

  • username:登录用户id
  • logout_url:[可选] 之后登出的跳转地址。

4.2   游客登录 login_temp

也可以让用户以游客的身份临时登录,游客登录不占用许可,但是功能非常有限,不能使用桌面助手:

root.login_temp(request, '123123')

游客登录之后,用户ID固定以 zope.anybody- 开头,也就是类似 zope.anybody-1231231 .

5   回收站 recycle_bin

系统所有内容,删除之后,都将进入站点回收站。

一旦进入回收站,系统会定期对回收站的内容进行清理。

5.1   收回内容 restore

可以通过操作历史,查找到最近删除的内容,你可以恢复删除项:

root.recycle_bin.restore(uid, new_parent)

其中:

  • uid:删除的对象uid
  • new_parent:[可选]对象存放位置,默认恢复到原始位置

5.2   永久删除 purge

也可以彻底删除:

root.recycle_bin.purge(uid)

其中:

  • uid:永久删除的对象uid

5.3   清空回收站 clear

或者清空整个回收站:

root.recycle_bin.clear()

6   站点设置

站点的设置信息 root.settings 包括:

  • myfiles_enable :开启我的网盘
  • myfiles_quota :个人网盘配额
  • recycle_reserve_days :回收站保留天数
  • temp_limit :临时版本数量
  • xls_viewer :xls查看器
  • allow_assistant_cache :桌面助手缓存
  • preview_watermark_text :文档动态水印
  • share_mode :分享
  • force_https :强制https
  • local_area_network_download : p2p下载

7   访问站点其他服务

每个站点配套多个服务,可以直接操作其他服务的接口。

7.1   得到服务地址 get_service_url

root.get_service_url(service_name, api=False, internal=False)

其中:

  • service_name,服务名:
    • oc: 账户管理, 这里提供开放平台的基础服务,包括认证等
    • org: 组织结构, 人员管理
    • workonline: 工作平台,文档、表单等
    • viewer: 云查看, 文档转换
    • message:消息中心,消息发送
  • api: api请求地址,还是用户访问地址
  • internal: 可以返回内部的地址,这个地址防火墙内部的地址,用于内部的API调用

7.2   直接得到其他服务的客户端 get_client

利用当前用户登录的站点授权信息,访问该账户的其他服务:

client = root.get_client(request, application, instance)

其中:

  • application: 就是上面的service_name
  • instance:具体的站点名

返回的client具体API参见开放接口的PythonSDK。

7.3   "更多"空间 more

系统预设的一个空间,统一用于存放一些站点工具,比如站点统计分析、微信钉钉集成等,比如:

root.more.add_datacontainer(....)

首次调用这个属性,会自动创建。

8   运行脚本

8.1   call_script

调用一个脚本:

root.call_script('xxx.xx:xx', *args, **kw)

8.2   call_script_async

异步调用一个脚本:

root.call_script_async('xxx.xx:xx', *args, **kw)

这个脚本将在后台队列中运行,传入的所有参数必须支持序列化的基础Python数据。

8.3   render_template

渲染一个页面模板:

root.render_template('zopen.sales:lsl', **kw)