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

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

Location: 开发参考

接口变更清单

开发接口的变更清单,了解平台的过去未来

docutils document without title

1   升级历史

1.1   2019.6

  • v7.4.2 大大简化用户自定义审批流程
  • v7.4.2 json.load2 json.dump2 可导入导出DateTime类型
  • v7.4.2 定版支持签名

1.2   2019.3

  • v7.4.1 载入式组件,通过load_on方法加载,支持事件定义
  • v7.3.2 field_obj.render_text,支持文本方式输出
  • v7.3.2 新增 string.Template.new(template, idpattern=None, delimiter=None) 自定义模板

1.3   2019.2

  • v7.3.2 obj.list_parents obj.parents不再返回版本文件夹(Versions)和附件文件夹(Attachments)文件夹
  • v7.2.6 容错的反查对象 root.query_objects(uids)
  • v7.4.0 range/exclude_range 日期搜索支持传递 timestamp,要求传递 field_type='date'

1.4   2019.1

  • v7.4.0 ui.submit_input 方便定制表单按钮区域
  • v7.4.0 stati索引新增加类型: container.control: 是否位于受控文件夹
  • v7.4.0 子树继承属性重建索引 reindex_inherited
  • v7.4.0 表单支持组合搜索模式: ui.search_form
  • v7.4.0: 表单支持inline布局
  • v7.4.0: 组合字段支持布局控制,包括上下、左右和inline
  • v7.3.2: 正确得到mime后缀:extention = root.mimes.get_extention(mime_type)
  • v7.4.0: QuerySet支持query方法
  • v7.3.2: new_view/merge_view
  • v7.4.0:添加PyJWT
  • v7.4.0:文件、表单可定制查看方式
  • v7.4.0: 查看方式统一入口为 zopen.views:index,查看方式有提供 inline_ 参数区别是否是在主模板内嵌展示

1.5   2018

2018.12

  • [v7.4.0] 工作流支持异常退出脚本
  • [v7.4.0] 文件、表单支持默认查看方式
  • [v7.2.5] container.temp_child() 返回临时子对象
  • [v7.2.5] ui.principal显示人员信息
  • [v7.2.5] ui.text/ui.link/ui.button/ui.grid 这些内容组件设置内容,默认都做了escape处理,不需要重复设置。如果不需要,有参数 escape=False
  • 常用列表: root.profiles.get_recent/update_recent
  • 新增 root.packages.list_plugins 搜索满足前缀条件的插件
  • obj.parents 或 obj.list_parents的返回结果,现在改为从里到外。
  • view.on(...) 捕获全局事件
  • view.off(...) 销毁全局事件的捕获
  • view.trigger(...) 触发全局事件
  • view.select(...).off_on(...) 捕获全局事件,和组件一起自动销毁
  • ui.xxx().on(...) 捕获组件事件
  • view.select(...).on(...) 捕获组件事件
  • view.select(...).trigger(...) 触发组件事件
  • view.select(...).call(...) 调用组件方法,同时触发组件事件
  • [v7.3.1] 支持组件自定义事件:view.select.bind/view.select.trigger
  • [v7.2.5] 新增ui.content_select,代替过时的 ui.file_select以及ui.portlets.content_select
  • [v7.2.5]permission_roles读取权限对应的角色:

2018.11

  • [v7.2.5] 简化API,支持之前的接口
  • [v7.2.4]view.redirect增加delay参数,支持延时跳转
  • [v7.2.4]root.info() 可返回支持转换器信息converters
  • [v7.2.4]file_obj.convert支持文档加工
  • [v7.3.1]view.native.call_script支持回调
  • [v7.3.1]obj.absolute_url和obj.uid_url支持script和参数
  • [v7.2.4]obj.api_url生成回到地址,用于桌面助手回掉,或者云查看回掉地址
  • [v7.2.4]root.call_script_async,会使用当前用户的语言
  • [v7.2.4]文件对象增加cache管理接口: exists_cache/get_cache/save_cache/remove_cache
  • 新增贴图组件
  • ui.grid 支持调整列宽

2018.10

  • root.acl.allow_inherit_roles : 是否禁止继承上层授权属性
  • obj.reindex_acl(recursive=True): 重建权限索引
  • obj.reindex_path(recursive=True, async=True): 移动之后重建路径索引
  • [v7.3] 调整统计接口,可传递int或者float类型进行统计
  • [v7.3] 搜索接口的字段,统一采用 mdset/zopen.archive:archive/number 或者 settings/number 这样的字段定位方法。
  • [v7.2.2] file_obj.transform() 如果已经转换,不会再转,可添加 rm_targets=True 删除之后强制转换

2018.9.30

  • 软件包翻译支持构造字典 pkg.i18n.vocabulary('log') 抽取前缀为 log_ 的翻译字符串,构造成字典
  • 得到一个软件包对象,更简单 root.packages[pkg_name] 替换之前的 root.packages.get_package_obj(name)
  • view.select('panel#xx') 支持get_header/get_footer/get_toolbox/get_panel这些操作 (v7.3)

2018.9.26

  • 指定某些人重做步骤(start方法新增responsibles参数):

    dataitem.workitems.start(workflow='zopen.plan:plan', step_name="submit", responsibles=[request.me.id], request=request)
    

2018.9.18

  • view_init_script支持head参数

2018.9.13

  • 表单支持 搜索 模式
  • 支持多个表单组合显示

2018.9.5

  • (v7.4)kss请求传递参数保持数据类型,比如:

    on('click', 'xxx.xxx:xx', context, request, aa=1, bb=True, cc=['aa', 1], dd=[1, 2, True])
    

    会直接传递整数、布尔、列表等类型到xxx.xx:xxx的参数中,不需要从request中获取和类型转换。

2018.8.29

  • v7.2.1 改进快捷方式:
    • 去除 shortcut.set_origin() shortcut.get_origin() createShortCut()
    • 新增 shortcut.source 和 shortcut.source_obj
    • folder.add_shortcut(obj, fixed_version, name), 改为 folder.add_shortcut(uid, name='')
  • 添加直接给用户授权的接口
  • 支持查看器插件

2018.7.31

  • 新的升级框架 upgrade_xxx
  • 支持卸载清理脚本 uninstall 脚本

2018.7.24

  • 权限改名 Operator改为Configure,SaveRevisoin改为UpdateRevision
  • 脚本支持所有可能的权限
  • 表单库支持默认扩展属性
  • 新建文件表单,默认扩展属性会新建,并且会自动初始化默认值

2018.6.11

  • file_obj.preview_url 支持预览水印颜色字体

2018.6.8

  • 加载资源包,会区分版本号:

    view.load(['xxx.xxx:js/slimbox2.js', 'xxx.ss:slimbox2.css'])
    

2018.5.30

  • 显示大小信息: ui.size(file_obj.get_size())

2018.5.13:

  • request请求参数直接匹配到Python脚本的参数,无需再从request中获取
  • 新增 ui.component 和 view.model 方法,支持通过 vuejs 来扩展新的组件
  • 不能直接添加规则,规则可以和扩展属性绑定,通过扩展属性添加规则
  • 表单、扩展属性、流程、阶段,可直接查看和修改YAML
  • 支持定制表单、扩展属性、流程、阶段,可比较定制差异 root.packages的get_mdset/get_mdset_obj/get_form/get_form_obj/get_workflow/get_workflow_obj/get_stage/get_stage_obj都支持定制
  • root.packages支持 list_all_mdest list_all_forms list_all_rules list_all_skins

2018.4.19

  • 云查看支持 docx签名
  • 云查看支持 pdf文件加水印

2018.4.18

  • 全部教程重新编写
  • 新增LogQuerySet,方便日志统计
  • 新增WorkQuerySet,方便工作项统计,等同于 QuerySet(catelog='workitem')
  • 新增CommentQuerySet,用于评注统计查询

2018.3.15

  • ui.icon 显示icon

2018.3.12

  • 支持游客身份登录 root.login_temp

2018.1.10

  • 路径搜索,支持路径字符串:

    QuerySet().anyof(path=['path/to/folder'])\
               .anyof(parent=['path/to/folder'])
    

1.6   2017

2017.12.28

  • 搜索软件包,支持分类和名字查询:

    root.packages.search_appstore(category, name)
    

2017.12.2

  • 搜索支持rules条件,方便找到站点的全部规则。删除软件包规则,不立刻删除关联的规则。

2017.10.26

  • view.layout.refresh 刷新导航区域
  • ui.style -> ui.css
  • 新增 ui.color_picker

2017.9.20

  • 评注的附件位置,改为默认的附件位置。文件选择,默认不用设置位置,会自动读取附件位置

2017.9.19

  • 日志记录默认会加上允许查询的用户信息,可通过搜索restrcted=True来查询动态
  • obj.logs.add增加data参数,可以附加数据

2017.8.30

  • 支持jqueryui的sort排序,适合看板

2017.8.15

  • view.log 在浏览器打印调试信息

2017.8.12

  • obj.logs.add 添加日志,支持同步或者异步选项,默认改为异步

2017.8.10

  • 新增 root.more 用于存放站点更多工具

2017.8.8

  • form更好的支持inline等布局

2017.8.5

  • folder.add_folder支持设置order_limit,如果设置为0,则不做排序,会减少冲突可能

2017.7.28

  • 新增 ui.style
  • 改进消息服务的通知发送接口
  • 支持: view.call(context, request, 'zopen.site_config:nav_setting', aaa=1, bbb=2)

2017.7.20

  • request.get_client_ip() 请求发起人的IP地址

2017.7.11

  • stati索引,对文件支持一组自动索引:附件、定版、锁定等。同时stati去除attachments状态

2017.6.22

  • 支持矢量图标: file_obj.get_icon

2017.6.6

  • 搜索可以直接返回batch对象: QuerySet().batch(start=20, size=50)
  • 简化 ui.pagination 为 ui.paging

2017.5.26

  • 新增view.storage接口,支持localstorage操作

2017.5.22

  • comment支持接口,是否通知
  • json.dumps支持PersistentList和PersistentDict
  • 搜索接口支持uid

2017.5.10

  • 增加权限 ManagePermission,角色PermissionManager,用于三权分立

2017.4.1

  • 表单库可以直接设置:

    container['1231'] = DataItem(title='asefra', description='asdaf')
    
  • 文件定版,新增了一个永久的uid:

    context.revisions.get_fixed_uid()
    

2017.3.23

  • 流程负责人支持组

2017.3.2

  • 搜索结果提供result.result直接返回某些字段 v6.4

2017.2.23

  • 增加 ui.custom_input 自定义字段
  • QuerySet的inlcude_archive改为include_history,可以搜索到临时版本

2017.1.20

  • 增加SiteManager角色,拥有ManageSite权限,可以设置安装程序仅仅能被SiteManager安装

1.7   2016

2016.11.30

  • 平台层去除ldap支持的代码,全部转移到扩展层
  • object_notify支持对不同用户的国际化

2016.11.21

  • 文件选择字段,改为内容选择,可设置选择文件、文件夹等多种内容

2016.11.11

  • merge增加keep_source参数,默认False

2016.10.12

  • 是否已经转换 my_file.exists_cache(mime, subfile)

2016.9.19

  • org_info.refresh_cache() 刷新缓存

2016.8.31

  • context.revisions.update_version_info 修改版本信息

2016.8.16

  • 自定义事件,可以直接绑定到组件 ui.grid().on('folder-created', '@xxxx')
  • 支持键盘事件,可以根据键盘值过滤: on('keydown', '@xxx', {'code':['ctl-34', 'alt-33']})
  • access_token = get_token(request) 得到当前用户的token

2016.8.10

  • view.call 发起请求 / request.is_from_view 判断是否是局部刷新请求
  • ui.portlets.content_select支持任意类型的内容选择
  • 支持分裂按钮 ui.button('sdf').on('click', '').dropdown(menu)

2016.8.1

  • context.get_watermark_text(request)

    得到水印文本信息

2016.7.31

  • 附件功能,从关系改为附加在内容后:: context.attachments

2016.7.16

  • 增加文档的云查看预览地址:

    file_obj.preview_url(watermark_text="", allow_copy=True, allow_print=True, allow_pdf=True, allow_download=True,
                expire=None, paged_excel=False, flash_first=False)
    
  • 去除ISessionAuthorizer,这个用到session,不可扩展,改为直接用云查看接口

  • 新接口:直接通过桌面助手,在桌面运行python脚本

    • 服务端: root.call_script_shell('zopen.xxx:xxxx',receivers=[], args=(),kw={},from=None,ttl=0,callback_url='')
    • 浏览器: view.native.call_script(script_name, args=None, kw=None)

2016.7.8

  • 发布或者存档的文件,保存为历史版本时,文件的附件和关联关系会进入历史版本。

2016.6.27

  • 去除standard模板,去除主模板的above渲染区域,脚本里面自己渲染工具条:

    ui.portlets.actions_bar(context,request, title)
    

2016.6.26

  • 文件增加mdfs_device/mdfs_key
  • 文件夹增加 folder.multiput_new/multiput/multiput_save/multiput_abort 接口
  • 去除 folder.new_revision_by_template

2016.6.22

  • 支持 dir/help,方便了解接口

  • 设置控制台etcd,可以import任意包:

    /workonline/restrict_script_import   false
    

2016.6.7

  • 新版本,新增 new-revision 规则事件

2016.5.28

  • context.parents 返回包括站点根节点
  • 文件去除 set_data / import_data 方法

2016.5.11

  • view.set_lang('zh') 切换语言
  • org_info.getPrincipalInfo(pid)['lang']: 当前用户的语言
  • root.lang: 站点的默认语言
  • 可以使用 itertools

2016.4.27

  • ui.link/ui.button如果在表单中,也支持on(submit, xxx)

2016.4.14

  • importFile/importFOlder
  • 去除: file_obj.import_data()
  • 新增: folder.add_file()
  • 去除: file_obj.set_data
  • get_upload_signcode新增filename参数,返回多了一个device

2016.4.11

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

    signature = root.sign(text)
    root.verify(text, signature)
    

2016.3.5:

  • 旧的 __builtin_package 改为标准的软件包 zopen.builtin

2016.3.2:

  • 主模板新增 idle 事件

2016.3.1:

  • 可在 root.settings['view_init_scripts'] 注册全局脚本,这些脚本在任意界面渲染的时候都会执行

    返回值可被皮肤引用

  • 新增view.append_script直接增加js

  • 支持:

    QuerySet().anyof(parent=[obj])
    QuerySet().anyof(path=[obj])
    QuerySet().anyof(parent=obj)
    QuerySet().anyof(path=obj)
    

2016.1.22:

  • 字符串支持更多种索引方法,根据字段名后缀来确定(_ngram, _string)

2016.1.20:

  • folder.create_shortcut增加name参数,可选

2016.1.20:

  • 流程定义的步骤去除category
  • workitem的category,去除review类型,这个系统自带维护,含义稍有改变

2016.1.3:

  • ui.graph : 绘制流程图

1.8   2015

2015.12.29:

  • context.mdset.get('xxx') 默认值改为None

    兼容,应该传递默认值{}, 改为: context.mdset.get('xxx', {})

2015.12.27:

  • metadata 改为 content_types
  • file.content_type -> file.mime_type

2015.12.16:

  • request.is_mobile() 是否是使用手机访问

2015.12.8:

  • 现在平台的zopen.css分成了2个css:

    zopen-template.css: 网站模板的css
    zopen-component.css:组件的css
    

    如果定制皮肤,只需要更改zopen-temtpate.css就行了

    之前的zopen.css已经没有了,如果有皮肤定制,需要重新调整皮肤的css引入部分

    可以完全替换zopen-template.css,使用自己的,这样之后升级不受影响

2015.12.7

  • view选择支持连选:

    view.select('panel.xx').find('tree')
    

2015.12.4

  • 可以屏蔽短信通知:

    root.settings['enable_sms_notify'] = False
    

2015.11.17:

  • 支持流程定义,不同操作,使用不同的颜色
  • 表单定于,也可以指定按钮的类型,会颜色区分:ui.form().button('add', '新增', 'primary')
  • 支持设置自定义登陆地址 root.settings['login_url'] 无权限会带上camefrom参数跳转至此

2015.11.11:

  • org_info.sync:新增 new_user_password参数
  • 流程action的pushish类型去除,改为primary
  • 增加modify.finished状态,此状态可以被删除
  • 流程结束,如果状态是modify.pending,改为modify.finished,不在存档等

2015.10.30:

  • ui.panel().toolbox 可以工作了

2015.10.20:

  • 根据模板和参数对文件自动创建新版本,在模板中替换特殊标识为条码、二维码或者文字信息:

    context.new_revision_by_template(template_docx, data={}))
    

    其中template_docx必须是一个docx格式的文档,可替换的内容用 {{title}} 标识, data格式为:

    {'title':{'text':'我们很好'},
     'number':{'text':'1231231', style="bar"} # 条码
     'info':{'text':'12asdfa31231', style="qrbar"} # 条码
    }
    
  • 可以查看各种文件的属性信息,比如mp3/mp4/doc/pdf等:

    context.get_cached_data('application/x-metadata-json')
    

2015.9.26:

  • context.workitems.start可以指定具体的流程步骤

2015.9.14

  • 可以对扩展属性进行排序: sort('-zopen.archive:archive.number')
  • 脚本可用 all() 方法

2015.9.1

  • root.get_messenger: 得到当前的消息发送人

2015.8.4

  • root.sys_info不再包含url信息
  • 新增: root.get_service_url(service_name, api=False)
  • root.object_url(obj, request=None) 增加request参数
  • 新增永久地址: root.uid_url(obj, request=None)
  • 批量选择处理条: view.batch_actions

2015.8.1

  • 文件夹排序简化:
    • 新增查找子文件夹 folder.get_sub_folders(restricted=True)
    • 去除:
      • root.set_container_order(('container2', 'container1'))
      • container.ordered_container_keys() # ('container2', 'container1')
      • container.ordered_containers()

2015.7.30

  • root.login_as 补充登出地址参数
  • 批量选择界面:
    • view.batch_actions.set_content(xxx)
    • view.batch_actions.close()

2015.7.22

  • 应用市场查询接口 root.packages.search_appstore()

2015.7.21

  • 修复事件机制
  • 代码里面支持''' 或者 """ 但是不能混用(之前会有缩进问题)
  • print 支持ui组件

2015.7.16

  • view.select('tabs#tabs_id').add_tab(...)

2015.7.15

  • 对象的属性md和扩展属性(mdset)赋值操作(set),底层会自动将dict->PersistentDict, list->PersitentList 确保数据存储到zodb,开发者无需了解这2个类
  • 可以关闭某个tab页:view.select('tabs#tabs_id').remove_tab(tab_id)
  • 有些逻辑错误,但是不希望进入错误调试界面的,可以 raise LogicError(msg)

2015.7.9

  • request.principal -> request.me
  • 新增root.org, 等同org_info,但是后者不推荐继续使用
  • org_info.getPrincipalInfo(pid) , 改为 root.org.get_info(pid)
  • org_info.listPrincipalInfo(pids) , 改为 root.org.list_info(pids)
  • org_info其他函数,驼峰写法,改为下划线分隔

2015.7.2

  • 站点增加公钥 root.get_public_key()
  • 个人增加公钥 root.get_public_key(pid)

2015.6.16

  • 增加profile状态,固定用户许可控制改为站点内部控制
  • ui.layout,可设置布局宽度

2015.6.12

  • ui组件支持drag/drop

2015.5.22

  • 支持内容lock/unlock/get_lock
  • 重构ui.form,支持全套ui组件

2015.5.14

  • 支持font awesome图标,.icon支持更多参数

2015.5.12

  • 内部单点登录 root.get_internal_sso_url

2015.5.11

  • 表单和扩展属性,新增 on_remove 触发脚本

2015.5.7

  • 在根对象中直接获取单点登录地址:

    root.get_internal_sso_url(username, url) # username为用户登录是输入的用户名(不带users.),url:登录成功后跳转的地址
    
  • 设置当前view使用的皮肤:

    view.use_skin('zopen.test:test_skin')
    

2015.5.4

  • 非常简单的状态保存:

    view.history.push_state(request, title)
    
  • 设置当前view使用的皮肤:

    view.use_skin('zopen.test:test_skin')
    

2015.4.30

  • view.active_modal() 找到当前的modal窗口

2015.4.21

  • ui.grid支持头部区,支持拖放排序dnd
  • 皮肤定制,整个body区域,增加 view 的名字和 当前对象的类型

2015.4.15

  • form.submit 增加 keep_multiple 选项

    对于人员、表单、文件夹等选择组件,当设置为单选的时候,是否和多选一样返回list。默认为True

  • form.get_button(request) 替代 form.is_submitted(request)

2015.4.14

  • form.update保存表单结果,同时触发on_update事件

2015.4.3

  • 新增侧边区域side

2015.4.1

  • 去除流程的flowsheet状态
  • modify状态增加modify.abandoned modify.paused
  • 流程定义:操作类型增加publish,会根据最后一步的操作类型,切换表单的状态(存档、废弃、发布)

2015.3.27

  • 安全策略支持表达式

2015.3.26

  • python脚本支持返回 top/bottom ,用于网站定制

2015.3.18

  • ui.Script().on 改为: view.on

  • view.off 增加第二个参数,和 view.on 对应:

    view.off('dataitem-modified', "@zopen.test:refresh")
    
  • view.on 一个节点绑定(当这个节点删除,自动注销事件处理):

    view.find('#test').on('dataitem-modified', "@zopen.test:refresh
    
  • 增加 workitem-modified 事件

  • 支持filter搜索,适合搜索bool类型

2015.3.11

  • 增加状态:modify.published 发布:一旦发布,文件禁止任何人删除、修改。

2015.3.10

  • (实验特性)步骤负责人可以是一个组,这样投票、会议室预定等应用就不必显示一大堆人员了。

    (待办事项、日程,需要优化支持)

  • workitem/step增加一个category属性:

    • 我发起的 start, 流程的第一个步骤
    • 我处理的 handle,通常是主要的,比如工作
    • 我参与的 participate,通常是被动、次要的,比如投票、会议等
    • 我审核的 review
    • 我转交的 deliver
    • 我协助的 assist
    • 其他 other

2015.3.9

  • itemview_FORMNAME_VIEWNAME : 表单的自定义视图,会在操作下拉菜单中出现

2015.3.6:

  • 大简化:python脚本去掉了ajax模板,自动识别是否是ajax请求!

2015.3.3:

  • 审批关系的使用,不再使用步骤用冒号分隔查审批关系了,改为直接下拉选择,之前做的那个模块需要更新下。只需要:
    1. 修改表单容器里面的responsibles的定义
    2. 在界面上调整步骤设置,去除冒号,改为选择审批人

2015.2.28:

  • 文件夹选择字段: is_global去除,不支持局部文件夹选择
  • 工作安排,去掉workitem.md['end']参数,只有workitem.md['start']

2015.2.25:

  • workitems.start可以启动指定的流程,增加workflow参数
  • workitems.deliver: 如果pid为空,表示替换全部负责人

2015.2.11:

  • 工作流脚本里面: task -> workitem, lasttask -> last_workitem, 之前的写法还兼容但不推荐
  • 去除任务的hours参数

2015.2.1:

  • 栏目不再支持视图,统一使用appcontainer的默认视图

2015.1.25:

  • workitem增加一个flowtask.working状态,表示已经开始但没有结束的多人审批

2015.1.21:

  • 全文搜索parse,支持nested参数

2015.1.5:

  • dot2graph方法,将dot文件转换为svg

2015.1.13:

  • 搜索提供exist/exclude_exist接口

2015.1.4:

  • 新增审计Auditor角色,和审计Audit权限,Manager和Auditor有Audit权限。

    拥有审计权限的人才能查看操作历史,以及查看一些统计。站点默认增加审计组。

1.9   2014

2014.12.29:

  • 从服务器临时区导入一个文件:

    file.import_data(file_id)
    

    断点续传的文件,保存在服务器的临时区;转换生成的文件,也可能保存在临时区。

2014.12.25:

  • 当前文件是否是历史版本:

    context.revisions.is_history()
    

2014.11.26

  • 可独立设置某个人网盘容量:

    root.prfiles.get('users.panjunyong', 'my_files_quota')
    root.prfiles.set('users.panjunyong', 'my_files_quota', 10000)
    # 禁止某个人的个人网盘
    root.prfiles.set('users.panjunyong', 'my_files_quota', 0)
    

2014.11.22

  • 增加新的权限下载Pdf Pdf ,这个从 Print 权限中分离出来

  • 支持调整角色和权限的映射,可以调整角色的权限策略:

    obj.acl.grant_role_permission(role, permission)
    obj.acl.deny_role_permission(role, permission)
    obj.acl.unset_role_permission(role, permission)
    

2   v5->v6升级说明

总体说明:

  • 适配器都过时了
  • 接口过时了
  • utility转移到了root

2.1   安装和部署

  • deployApplet 改为 container.add_folder / add_appcontainer /add_datacontaner , 不会自动授权,不会自动添加到导航
  • IAppletData -> context.navs
  • installPackage -> root.packages.install
  • callScript -> root.call_script
  • render_template -> root.render_template

2.2   对象基础

  • getParent(obj) -> obj.parent
  • getName(obj) -> obj.name
  • getRoot() -> root
  • getSite() -> root
  • absoluteURL(obj,request) -> obj.absolute_url(request)
  • intids.getObject(obj) -> root.object_uid(obj)
  • intids.getId(obj) -> root.object_by_uid(obj)

2.3   授权

所有的接口都过时了, Ixxx(context) 改为 context.xxx

  • IGrantManger -> context.acl
  • 角色 zopen.Reader1 改为 Reader1
  • 权限 zopen.View 改为 View
  • checkPermission('zope.View', obj) 改为 obj.check_permission("View")

2.4   所有的接口都过时了

  • 不推荐使用 IFile IFolder 之类,使用 context.object_types 替换
  • IFile.providedBy(context) 改为 'File' in context.object_types

2.5   搜索

  • 该搜索 object_types 而不是 object_provides
  • 工作项的搜索,应该使用独立的索引 QuerySet('workitems')
  • 搜索工作项的负责人,应该是 QuerySet('workitem').anyof(Response=['users.panjunyong'], parent='acl')
  • IObjectIndexer(context) 以及 indexObject() reindexObject 过时,改为 obj.index() obj.reindex()
  • 搜索表单夹应该根据 metadata 来搜索
  • 搜索某种表单应该根据 item_metadata 了搜索

2.6   统一设置信息

设置信息全部到 context.settings 里面,包括:

  • 显示列
  • 显示方式
  • 关联流程定义、关联阶段、关联表单定义等

2.7   容器变化

  • 所有容器,默认都是可以排序的,前1000个对象是排序的
  • len(container.values())len(container.keys() 会报错,需要改为 len(container)

2.8   表单

  • IFormEngine过时,直接用FieldsContainer
  • IFieldStorage(context)过时 -> context.md
  • IExtendedMetadata过时 -> context.mdset
  • ISettings(container)过时,改为 container.md
  • 表单分离校验和触发2个脚本
  • related_edoclass过时,改为 container.settings['item_metadata']

2.9   团队

  • 改为所有的appcontainer都支持团队
  • ITeams(container) -> container.teams

2.10   流程

  • related_workflow过时,改为 container.settings['item_workflow']
  • 后续流程条件 nextsteps_conditions 过时,不推荐使用,改为后续步骤的进入条件
  • 步骤支持type, default, error, auto自动步骤
  • IFlowTasksManager(context) -> context.workitems
  • 流程支持委托

Docutils System Messages

System Message: ERROR/3 (, line 39); backlink

Unknown target name: "inline".