更改日志历史记录

3.28

变化

  • 班级cubicweb.view.EntityAdapter被移到cubicweb.entity.EntityAdapter有一个弃用警告,但请相应地更新源代码。

  • 数据库池程序现在是动态的。新的连接将在需要时打开,并在可配置的一段时间后关闭。这可以通过配置 connections-pooler-max-size (默认为0,无限制), connections-pooler-min-size (默认为0),以及 connections-pooler-idle-timeout (默认600秒)。旧的配置 connections-pooler-size 已删除。

  • 对plpython的支持已被放弃。

3.27

新特点

  • 现在可以跨多个进程并发运行测试。你可以用 pytest-xdist 为了这个。用于测试,使用 PostgresApptestConfiguration 你应该知道 startpgcluster() 不能同时运行。解决方法是调用pytest --dist=loadfile 为每个测试模块使用单个测试进程,或使用现有的数据库集群和集合 db-hostdb-port 属于 devtools.DEFAULT_PSQL_SOURCES['system'] 因此。

  • cubicweb-ctl createcubicweb-ctl pyramid ,如果实例目录中不存在,则 pyramid.ini 将生成包含所需机密的文件。

  • 向allcubicweb ctl命令添加--pdb标志,以便在命令执行期间发生异常时启动(i)pdb。

  • --loglevel和--dbglevel标志可用于所有cubicweb ctl实例命令(不仅仅是 pyramid 一个)

  • 遵循“仅在前台”行为,从现在开始,所有命令默认记录到stdout。仍要记录到文件传递 log_to_file=TrueCubicWebConfiguration.config_for

  • 添加新的迁移函数 update_bfss_path(old_path, new_path) 以字节为单位更新路径文件系统存储(bfss)。

  • 在每个请求上,在CLI中显示请求路径和选定的控制器

  • 迁移交互模式改进:

    • 发生异常时,显示完整的回溯,而不是仅显示异常

    • 在选择迁移p(db)时,如果安装了ipdb,请启动它

    • 在迁移p(db)选项上,如果pdb可用,则返回pdb,这意味着(i)pdb交互会话将位于异常的堆栈上,而不是位于pdb启动的堆栈上,这将允许用户访问异常的所有相关上下文,否则将丢失异常

  • 在DBG_SQL和/或DBG_RQL上,如果安装了pygments,语法将突出显示SQL/RQL调试输出

  • 允许使用CW_instance全局变量而不是或将其作为cli参数指定任何实例命令的实例id

  • 当debugmode被激活时(例如pyramid命令中的'-D/--debug',CW生成的HTML将包含新的标记,这些标记将指示代码中的哪个对象生成了它,以及源代码的哪一行。例如:

<div
  cubicweb-generated-by="cubicweb.web.views.basetemplates.TheMainTemplate"
  cubicweb-from-source="/home/user/code/logilab/cubicweb/cubicweb/web/views/basetemplates.py:161"
  id="contentmain">
    <h1
      cubicweb-generated-by="cubicweb.web.views.basetemplates.TheMainTemplate"
      cubicweb-from-source="/home/user/code/logilab/cubicweb/cubicweb/view.py:136">
        unset title
    </h1>
    [...]
</div>

虽然这还没有完成,但是这个特性为构建动态工具提供了一个开放的途径,可以帮助检查页面。

  • 添加了一个新的调试通道机制,您可以在python代码中订阅其中一个通道来构建调试工具,例如(金字塔自定义面板是使用该机制构建的),您将收到一个包含相关信息的数据结构(dict)。可用的通道有:控制器、rql、sql、vreg、注册表决策

  • 在pyramid命令中添加一个新的'-t/--toolbar'选项以激活pyramid debugtoolbar

  • 一系列专门为CW设计的金字塔型调试工具栏面板,见下文

金字塔调试工具栏和自定义面板

pyramid debugtoolbar现在在开发阶段使用“pyramid”命令时集成到CubicWeb中。要激活它,您需要将“-t/--toolbar”参数传递给“pyramid”命令。

此外,一系列专门为CW做的自定义面板现在可用,它们显示了对每个页面的开发和调试有用的信息。可用面板包括:

  • 包含所选控制器、当前设置和有用链接的常规面板 screenshot

  • 一个面板,列出在注册表中为构建此页面所做的所有决定 screenshot

  • 列出vreg注册表内容的面板 screenshot

  • 一个面板,列出在请求期间进行的所有RQL查询 screenshot

  • 一个面板,列出在请求期间进行的所有SQL查询 screenshot

Furthermore, in all those panels, next to each object/class/function/method a link to display its source code is available (shown as '[source]' screenshot) and also every file path shown is a traceback is also a link to display the corresponding file (screenshot). For example: screenshot.

向后不兼容的更改

  • 在启动CubicWeb实例的过程中进行标准化,从现在起唯一的方法就是使用 pyramid 命令。因此:

    • cubicweb-ctl 命令“start”、“stop”、“restart”、“reload”和“status”已被删除,因为它们依赖于不再维护或不再使用python 3的扭曲Web服务器后端。

    • Twisted Web服务器支持已删除。

    • cubicweb-ctl wsgi 也被移除。

  • 对遗留多维数据集(在“cubes”python命名空间中)的支持已被删除。环境变量cw_cubes_path和cubes_dir的使用被删除。

  • python 2支持已中断。

  • 通知钩子中的异常在测试期间不再被捕获,因此可以预期那些似乎通过(但实际上是无声失败)的测试现在会失败。

  • 所有“cubicWeb ctl”命令从现在开始只接受一个实例参数(而不是0到n)

  • “金字塔”命令现在将始终在前台运行,因此选项 --no-daemon 已删除。

  • DBG_MS标志已被删除,因为它不再使用

  • 使用日志记录(debug/info/warning…)机制显示事务数据库日志,现在仅当使用相应的DBGu OPS标志时才显示它

不推荐使用的代码删除

在版本3.25被删除之前,大多数代码都已弃用。

3.26(2018年2月1日)

新特点

  • 为了 pyramid 实例配置类型,CubicWeb不再处理日志记录,但应通过 development.ini 文件遵循https://docs.pylonsproject.org/projects/pyramid/en/latest/narr/logging.html。

向后不兼容的更改

  • 已删除CubicWebConfiguration方法“shared_dir”。

3.25(2017年4月14日)

新特点

  • 一种新的选择 connections-pooler-enabled (默认是)已添加。这允许关闭内部连接池,以便与其他池一起使用,如 pgbouncer.

  • deleteconf 视图(删除前确认),显示将与主实体一起删除的一级复合对象列表(01EEEA97E549)。

  • 这个 cubicweb.pyramid 模块现在提供一个注册为入口点的粘贴应用程序工厂,名为 pyramid_main 它可以用于运行绑定到CubicWeb存储库的金字塔WSGi应用程序。

  • 新的配置类型 pyramid 已添加以创建CubicWeb的实例(通过 cubicweb-ctl create -c pyramid <basecube> <appid> )。这个配置引导一个cubicWeb实例,该实例本质上是一个存储库,加上在其上运行金字塔WSGi应用程序的最小设置。很明显,它并不是全部装运 web 而依赖于在 development.ini 任何金字塔应用程序的文件。

  • 介绍了一种将工作流声明为简单数据结构(dict/list)的新方法。各自的实用功能 cubicweb.wfutils 模块。这将处理工作流的创建和迁移。

  • 引入了一种新的IDublicore适配器,用于控制多个基本视图中使用的都柏林核心元数据的生成。

  • 现在可以 得到 RTAG使用 derive 方法(0849A5EB57B8)。派生的rtag保留对原始rtag的引用,并且只保留自定义规则,允许在派生之后对原始rtag中所做的更改仍然被考虑。

  • 一个新的 cubicweb-ctl scheduler <appid> 已引入命令以运行存储库的后台和定期任务(以前称为 循环任务 )。在生产环境中,使用此命令的进程应该与wsgi服务器进程一起运行(可能运行多个进程本身)。

向后不兼容的更改

  • 由于调度程序替换了旧的循环任务管理器,所有cubicWeb ctl的“start”命令(即 startpyramidwsgi )不启动存储库 循环任务管理器 他们也不再启动调度程序了。因此,希望站点管理员将此调度程序作为单独的进程启动。另外,注册循环任务(即调用 repo.looping_tasks() )当存储库没有设置调度程序时,为no op;在这种情况下发出警告。应用程序开发人员可能依赖存储库 has_scheduler 方法确定是否应注册循环任务。

  • cubicweb.pyramid ,函数 make_cubicweb_application 已重命名为 config_from_cwconfig (950CE7D9F642)。

  • 由于3.19版本中引入的更改,已对存储库的会话管理进行了一些清理。除此之外, cubicweb.server.session.Session 类已被删除,并请求 session 属性现在紧挨着一个Web会话,它的实现依赖于所使用的前端(扭曲或金字塔)。因此,不应该从“存储库端”代码(例如钩子或操作)访问该属性,并且该属性已经丢失了一些以前的属性,例如 repo 用于引用存储库实例。因此,您将无法再通过连接访问会话的数据,这将导致 data 属性和移除 get_shared_dataset_shared_data 自3.19以来已弃用的方法。

  • 已删除对“https-url”配置选项的支持(4516c3956d46)。

  • 这个 next_tabindex 请求类方法已删除(01173A4AF73)。这包括移除 settabindexFieldWidget 类初始化方法。

  • 这个 cubicweb.hook.logstats.start 钩子被丢弃,因为它的循环任务不会在Web实例中运行(请参见关于知识库调度程序的第一点)。

  • uicfg 隐藏内联表单相反关系的规则不再自动添加,因为这实际上是随机的,因此不可靠,因此必须手动添加它们:

    autoform_section.tag_subject_of(('CWUser', 'use_email', 'EmailAddress'),
                                    'main', 'inlined')
    autoform_section.tag_object_of(('CWUser', 'use_email', 'EmailAddress'),
                                   'inlined', 'hidden')
    

3.24(2016年11月2日)

新特点

  • CubicWeb应用程序配置的各种位现在可以通过与配置选项名称匹配的环境变量覆盖,这些变量的前缀为 CW_ (例如 CW_BASE_URL

  • 多维数据集现在是标准的python包,命名为 cubicweb_<cubename> .它们不再安装在 <prefix>/share/cubicweb/cubes .CubicWeb的发现由一个新的设置工具入口点处理 cubicweb.cubes .为“遗留”多维数据集保留了向后兼容层。

  • 金字塔的支撑使它成为立方体的核心。使用它的应用程序现在应该声明 cubicweb[pyramid] 依赖项而不是 cubicweb-pyramid .

  • 新的 NullStore 班在 cubicweb.dataimport.stores 作为每个存储的新基类,并允许在不实际导入任何内容的情况下测试数据导入链。

重大变化

CubicWeb的堆芯内部结构发生了一些重要变化:

  • 下降 asourceextidentities 表以及上的索引 type 列,以便对大量数据插入和数据库大小/索引重建进行合理的优化。

  • 删除了 moved_entities 表和相关的机制来记住一个实体已经从一个源移动到系统数据库-这现在是源解析器检测这一点的职责(通常通过将其原始外部ID记为 cwuri

  • 删除了原来的“给我一个这个extid的开斋节,但如果必须创建它,请在另一行给我回电话”Mecanism cwxmlparser 是依赖的,有利于使用dataimport API的解析器。这包括删除 cwxmlparser .如果您正在使用它,您必须编写一个特定的解析器,下面将给出一些示例。

  • 已将源映射处理(模式、视图、逻辑)及其客户端 cwxmlparser .这是不值得的负担,具体的解析器应该是首选。

上述更改导致以下API更改:

  • req.entity_metas(eid) 不再返回“type”或“source”键,请使用 req.entity_type(eid) 或者“cw-source”关系来获取这些信息,

  • 贬低 entity.cw_metainformation() ,它不再返回,它是“源”键,

  • 下降 repository.type_and_source_from_eid(eid, cnx)repository.extid2eid(...)source.eid_type_source(cnx, eid)

  • 下降 source.support_entity(etype)source.support_relation(rtype)

  • 从实体的默认JSON表示中删除了“cw_source”键,

  • 下降 source_uris()handle_deletion(...) 方法从DataFeed Parser基类中,删除实体现在是特定实现的职责(请参见 ldapparser 例如,

  • 来自外部源的实体总是显示在UI中,并带有指向本地实体的链接,而不是原始实体的链接 entity.absolute_url() 实现并允许删除 use_ext_eid 的参数 entity.rest_path() (尽管它仍然支持向后兼容)。

大商店的变化

已经做了几项改进 cubicweb.dataimport.massive_store 其中最重要的是:

  • 扩展存储API,为最终用户提供更多控制: fill_entities_tablefill_relation_tablefill_meta_relation_table .

  • 下降 on_commit / on_rollback 构造函数的参数。

  • 在关系中使用特定于从属的临时表插入实体(在主/从模式中使用时应提高并发性)。

  • 延迟将约束删除到 finish 方法,避免因索引在存储创建时被删除而出现性能问题。

  • 在查找应删除其约束的元数据表时,请考虑给定的元数据生成器。

  • 不删除上的索引 entities.eid 在数据库上重建大约百万个实体的成本太高了。

3.23(2016年6月24日)

新特点

  • CubicWeb中的python 3.x支持现在已经完成,除了Twisted包(因为Twisted并不完全支持python 3.x本身)。新多维数据集的框架也应该与python 3兼容,特别是它的 setup.py 更新了。

  • 这个 source-sync 如果没有,命令现在可以同步数据库中的所有源 <source> 提供了参数。

  • 当从用户界面请求时,数据源同步现在是异步的。

数据库处理

  • 大多数索引和约束将在迁移期间重建,因为它们现在是以MD5哈希命名的,以控制名称的大小。

  • 在重命名实体类型时会重命名索引,因此仍然可以正确跟踪索引。

  • 一个新的 db-check-index 命令添加到 cubicweb-ctl ,以显示数据库中的索引与架构预期的索引之间的差异。建议在迁移到3.23之后运行此命令,并针对迁移脚本不易处理的情况(例如已重命名的实体类型的索引)手动进行调整。主要应该是删除额外的索引。

数据导入

  • 已弃用 MetaGenerator 有利于在 MetadataGenerator (更一致,对子类提供更多控制,并且适合与 MassiveObjectStore

  • 主要清理 MassiveObjectStore 及其 PGHelper 同伴班:

    • 丢弃了一堆不必要/未使用的属性

    • 重构/重命名的内部方法

    • 添加了对元数据生成器的支持,这是现在推荐的控制元数据生成的方法

  • 已弃用 SQLGenObjectStoreMassiveObjectStore 应该改为使用。

向后不兼容的更改

  • 衍生测试 à la logilab-common 在中不再受支持 CubicWebTC .建议使用 subtests API(可在 CubicWebTC 从标准库(从python 3.4开始)或通过unittest2包(否则)。

  • CubicWebTCset_description 方法(粉碎自 logilab.common.testlib.TestCase )不再可用。

开发

当安装在virtualenv中时,cubicWeb将查找实例数据,如 user 默认模式,即 $HOME/etc/cubicweb.d ,与 $VIRTUAL_ENV/etc/cubicweb.d 以前。要恢复此行为,请显式设置 CW_MODEsystem .或者(最好)是 CW_INSTANCES_DIR 环境变量可用于指定实例数据位置。

3.22(2016年1月4日)

新特点

  • 对python 3.x支持做了大量的更改(还未完成)。这引入了对six的新依赖,以处理python2/python3兼容性。

  • new cubicweb.dataimport.massive_store module,一个使用copy语句加速海量数据导入的PostgreSQL特定存储。此功能以前是CubicWeb DataIO的一部分(但是,与以前的版本存在一些API差异)。

  • 多维数据集自定义SQL脚本在创建表之前执行。这允许他们创建新的类型或扩展。

  • 这个 ejsonexport 视图可以使用新的 ISerializable 实体适配器。默认情况下,它将返回实体的(非字节和非密码)属性以及 cw_etypecw_source 钥匙。

  • 定义自定义最终类型的多维数据集现在由 add_cube 迁移命令。

  • 外部源的同步可以由具有适当特权的用户通过新的 cw.source-sync 行动。

用户可见的更改

  • ldapfeed源现在取决于 ldap3 模块而不是 python-ldap .

  • 回复没有得到 Expires 默认为标题。然而,当他们这样做的时候,他们也得到了一致的 Cache-Control .

  • 每次请求时都会重新生成数据文件,它们不再由缓存 cubicweb.web.PropertySheet .对于缺少实例哈希的数据文件的请求,将通过重定向而不是直接答复来处理,以允许正确的与缓存相关的答复头。

API更改

  • config.repository() 每次创建一个新的存储库对象,而不是返回缓存的对象。警告:如果最终使用了多个存储库,这可能会导致意外问题。

  • 迁移脚本以及由执行的其他脚本 cubicweb-ctl shell ,在启用打印功能标记的情况下加载(为了向后兼容,如果失败,则在没有该标记的情况下重新加载)

  • 这个 cw_fti_index_rql_queries 实体类的方法替换为 cw_fti_index_rql_limit 产生 ResultSet 包含要索引的实体的对象。默认情况下,每次返回1000个实体。

  • IDownloadableAdapter API澄清: download_urldownload_content_typedownload_file_name 返回unicode对象, download_data 返回字节。

  • 这个 Repository.extid2eid() 外部源的入口点已弃用。导入应使用来自 cubicweb.dataimport 改为打包。

  • 这个 cubicweb.repoapi.get_repository() 函数的 uri 不应再使用参数。

  • 通用数据源XML解析器被弃用,取而代之的是CubicWeb3.21中引入的“存储”API。

  • 会话管理器位于 sessions 注册表而不是 components .

  • TZDatetime 属性作为时区感知的python datetime对象返回。警告:这将中断比较或使用涉及时区原始日期时间对象的算术的客户端应用程序。

  • 所有实体的创建日期和修改日期属性现在都可识别时区 (TZDatetime )而不是本地时间 (Datetime )。一般来说, Datetime 类型应视为已弃用。

不推荐使用的代码删除

  • 这个 cubicweb.server.hooksmanager 模块已删除

  • 这个 Repository.pinfo() 方法已删除

  • 这个 cubicweb.utils.SizeConstrainedList 类已删除

  • 配置目录中的“startorder”文件不再适用

3.21(2015年7月10日)

新特点

  • datadir url配置选项允许您选择静态数据文件的服务位置(而不是默认的$base url/data/)

  • 之前在python中实现的一些完整性检查被移到了SQL后端。这包括一些约束和引用完整性。一些后果是:

    • 禁用完整性挂钩不再禁用这些检查

    • 在sqlite上运行时,修改约束的升级将失败(但在sqlite上仍然不支持升级)

    注意:从3.21.0开始,升级脚本只在PostgreSQL上工作。SQLServer的迁移将在将来的错误修复版本中添加。

  • 为了便于监视,CubicWeb可以定期将一些json格式的统计信息(基本上是由“info”和“gc”视图公开的统计信息)转储到文件中。

用户可见的更改

  • 默认情况下,对文本表单字段使用fckeditor是禁用的,要重新启用它,只需安装 cubicweb-ckeditor 立方体(然后 add_cude('ckeditor') 在迁移或shell中)

  • “https deny anonymous”配置设置不再存在

代码移动

CubicWeb.web.views.Timeline模块(提供Timeline JSON、Timeline和静态Timeline视图)已移动到独立的 cube

API更改

  • 设置cookie的“expires”参数,如果不是“none”,则应该是UTC中的日期或日期时间。它以前被解释为本地时间和服务器启动时的UTC偏移量,这是不一致的(我们不知道该API的任何用户)。

  • 在PostgreSQL后端上运行测试的方式略有变化,请使用cubicweb.devtools。启动、停止安装模块中的pgscluster和teardownmodule

  • CubicWeb3.19中引入的连接和客户端连接对象已统一。要连接到存储库,请使用:

    session = repo.new_session(login, password=...)
    with session.new_cnx() as cnx:
        cnx.execute(...)
    

    在测试中,repoaccess的“repo-cnx”和“client-cnx”方法现在是“cnx”的别名。

不推荐使用的代码删除

  • 用户的回调API已被删除;人们应该改用普通的Ajax函数。

  • 这个 PyroZmq-pickle 远程存储库访问方法已完全删除(应使用RqlController和CWClientlib等新兴替代方法)。注意,作为副作用,“仅存储库”实例(即没有HTTP组件)不再可能。如果您有任何这样的实例,则需要将配置文件从repository.conf重命名为all-in-one.conf并运行 cubicweb-ctl upgrade 更新它。同样,远程CubicWeb CTL外壳不再可用。

  • 旧款(自3.19起已弃用) DBAPI API已完全删除

  • 已删除cubicWeb.toolsutils.config_connect()。

3.20(2015年1月6日)

新特点

  • 虚拟关系:可以在schema.py中使用新的computedRelation类;它的 rule 属性是定义新关系的RQL片段。

  • 计算属性:现在可以使用 formula 参数(也是一个RQL片段);它将是只读的,并自动更新。

    这两个功能在 CWEP-002 以及CubicWeb手册中更新的“数据模型”章节。

  • CubicWeb CTL插件可以使用 cubicweb.utils.admincnx 函数从实例名称获取连接对象。

  • 新的“Tornado”wsgi后端

  • 会话cookie具有httponly标志,因此它们不再暴露于javascript中。

  • 富文本字段可以格式化为标记。

  • 编辑控制器检测并发版本,如果在表单生成和提交之间修改了实体,则会引发validationError。

  • CubicWeb可以为其表使用PostgreSQL“schema”(命名空间)

  • “cubicWeb ctl configure”可用于在源配置文件中设置管理用户凭据的值。

  • 在调试模式下,在请求上设置_cwtracehtml参数允许跟踪输出的每个位的生成位置。

API更改

  • ucsvreader()ucsvreader_pb()dataimport 模块有2个新的关键字参数 delimiterquotechar 替换 separatorquote 各自的论点。这使得API与Python的API相匹配 csv.reader() .尽管已弃用,但仍支持旧参数。

  • 迁移环境的 remove_cube 现在调用函数 drop_cube .

  • CubicWeb.old.css现在是CubicWeb.css。先前的“new”cubicweb.css及其cubicweb.reset.css伴侣已被删除。

  • jQuery TreeView插件已更新为其最新版本

不推荐使用的代码删除

  • 3.10和3.11向后兼容的大部分都已消失;这包括:

    • ctxcomponent.box_action()和ctxcomponent.build_link()。

    • cubicweb.devtools.htmlparser.XMLDemotingValidator

    • 实体上的各种方法和属性,替换为cw_edited和cw_attr_cache

    • 钩子上的“commit-event”方法,替换为“postcommit-event”

    • server.hook.set_operation(),替换为operation.get_instance(…)。

    • view.div_id()、view.div_class()和view.create_url()。

    • *VComponent

    • 在窗体中,field.value()和field.help()必须将窗体和字段本身作为参数

    • form.render()必须获取 w 作为命名参数,并且renderer.render()必须 w 作为第一个论点

    • 在面包屑中,可选 recurs 参数必须是集合,不能为false

    • cubicweb.web.views.idownloadable.{download_box,IDownloadableLineView}

    • 主视图不再具有 render_entity_summarysummary 方法

    • WFHistoryV组件 cell_call 方法被替换为 render_body

    • cubicWeb.dataimport.objectstore.add(),替换为create_实体

    • ManageView.{folders,display_folders}

3.19(2015年4月28日)

新功能

  • 实现跨源站资源共享(CORS)(请参阅 #2491768

  • System_source.create_eid可以获取一系列ID,以减少批量实体创建的开销。

行为改变

  • 会话和连接的匿名属性现在是从相关的用户登录中计算出来的。如果它与 anonymous-user 在配置中,连接是匿名的。当心的是 anonymous-user 配置是特定于Web的。因此,在仅存储库设置中,任何会话都不能是匿名的。

新建存储库访问API

连接替换会话

新的显式连接对象将会话替换为主存储库入口点。连接保留服务器端使用的所有必要方法 (executecommitrollbackcall_serviceentity_from_eid 等等)。使用 session.new_cnx() .连接对象需要有一个明确的开始和结束。将它们用作上下文管理器,以确保不会错过结尾:

with session.new_cnx() as cnx:
    cnx.execute('INSERT Elephant E, E name "Babar"')
    cnx.commit()
    cnx.execute('INSERT Elephant E, E name "Celeste"')
    cnx.commit()
# Once you get out of the "with" clause, the connection is closed.

在多个线程中使用相同的连接对象将使您能够访问同一事务。但是,连接对象不是线程安全的(因此由您自己承担风险)。

repository.internal_session 被否决,赞成 repository.internal_cnx .注意内部连接现在 safe 默认情况下,即启用完整性挂钩。

在会话中保持向后兼容性。

DBAPI与repoapi

引入了新的API来替换DBAPI。它被称为 repoapi .

目前有三个相关功能:

  • repoapi.get_repository 当用作时从URI返回存储库对象 repoapi.get_repository(uri) 当用作 repoapi.get_repository(config=config) .

  • repoapi.connect(repo, login, **credentials) 返回与由凭据标识的用户关联的客户端连接。clientConnection与其自己的会话关联,该会话在clientConnection关闭时关闭。clientConnection是一个类似连接的对象,用于客户端。

  • repoapi.anonymous_cnx(repo) 如果在配置中描述,则返回与匿名用户关联的客户端连接。

repoapi.clientconnection替换dbapi.connection和company

在客户端/Web端,请求现在使用 repoapi.ClientConnection 而不是 dbapi.connection . 这个 ClientConnection 有多个向后兼容的方法,使其看起来像 dbapi.Cursordbapi.Connection .

Web端使用的会话现在与使用的服务器端相同。在服务器端会话上安装了一些向后兼容方法以简化转换。

身份验证堆栈已更改为使用 repoapi 而不是 dbapi .将新元素添加到此堆栈的多维数据集可能会中断。

会话数据可以使用cnx.data字典访问,而事务数据可以通过cnx.transaction_数据访问。这些替代了 [gs] et_与可选的txid kwarg共享了_数据方法。

测试中的新API

用于访问回购的所有当前方法和属性 CubicWebTC 已弃用。您现在可以使用 RepoAccess 对象。一 RepoAccess 对象链接到新的 Session 对于指定的用户。它能够创造 ConnectionClientConnection 以及链接到此会话的Web端请求:

access = self.new_access('babar') # create a new RepoAccess for user babar
with access.repo_cnx() as cnx:
    # some work with server side cnx
    cnx.execute(...)
    cnx.commit()
    cnx.execute(...)
    cnx.commit()

with access.client_cnx() as cnx:
    # some work with client side cnx
    cnx.execute(...)
    cnx.commit()

with access.web_request(elephant='babar') as req:
    # some work with client side cnx
    elephant_name = req.form['elephant']
    req.execute(...)
    req.cnx.commit()

默认情况下 testcase.admin_access 包含一个 RepoAccess 默认管理会话的对象。

API更改

  • RepositorySessionManager.postlogin 现在用两个参数(请求和会话)调用。现在,这发生在会话链接到请求之前。

  • SessionManagerAuthenticationManager 现在在初始化时取一个repo对象而不是vreg。

  • 这个 async 的参数 _cw.call_service 已删除。所有调用现在都是同步的。ZMQ通知总线看起来是大多数异步用例的一个很好的替代品。

  • repo.stats() 现已弃用。同样的信息也可以通过服务获得。 (_cw.call_service('repo_stats')

  • repo.gc_stats() 现已弃用。同样的信息也可以通过服务获得。 (_cw.call_service('repo_gc_stats')

  • repo.register_user() 现已弃用。该功能现在通过服务提供 (_cw.call_service('register_user')

  • request.set_session 不再需要可选 user 争论。

  • CubicWebTC不再将repo和cnx作为类属性。它们是标准实例属性。 set_cnx_init_repo 类方法成为实例方法。

  • set_cnxsetfree_cnxset 已弃用。CNX集现在自动管理。

  • 删除时级联删除的实现 composite 实体已更改。语义发生了变化:仅仅删除一个复合关系就不再需要删除关系的组件端。

  • _cw.user_callback_cw.user_rql_callback 已弃用。鼓励用户编写实际的控制器(例如使用 ajaxfunc )而不是在会话数据中存储闭包。

  • 一个新的 entity.cw_linkable_rql 方法提供RQL以使用给定的关系获取已经或可能与当前实体相关的所有实体。

不推荐使用的代码删除

  • session.hickage_用户机制已被删除。

  • etyperestrictioncomponent已被删除,其功能在不久前已被facets替换。

  • 旧的多源支持已被删除。只保留基于副本的源,如数据源或ldapfeed。

3.18(2014年1月10日)

迁移脚本不处理sqlite或mysql实例。

新功能

  • 添加安全调试工具(请参见 #2920304

  • 介绍 add 对属性的权限,仅在实体创建时解释,并允许复杂的 update 不阻止实体创建的规则(在此之前 update 在实体创建和更新时解释了属性权限)

  • 主视图显示控制器(uicfg)现在有一个 set_fields_order 类似于可用于表单的方法

  • 新方法 ResultSet.one(col=0) to retrive a single entity and enforce the result has only one row (see #3352314

  • 新方法 RequestSessionBase.find to look for entities (see #3361290

  • 嵌入式jquery副本已更新为1.10.2版,jquery用户界面已更新为1.10.3版。

  • 对调试模式的wsgi的初始支持,通过新的 wsgi cubicweb ctl命令,可以使用python的内置wsgi服务器或werkzeug模块(如果存在)。

  • rql-table 指令现在在REST字段中可用

  • CubicWeb CTL升级现在可以直接生成静态数据资源目录,而无需手动调用gen static datadir。

API更改

  • 不是真正的API更改,但实体权限检查现在系统性地延迟到操作,而不是a)尝试钩子;b)如果失败,稍后在操作中重试。

  • 属性的默认值存储不再是字符串,而是字节。这为存储任意的python对象(例如numpy数组)开辟了道路,并修复了一个错误,即未正确迁移真值为false的默认值。

  • symmetric 关系不再由RQL重写处理,而是由钩子处理(来自 activeintegrity 类别);这可能会对执行低级数据库操作或有时禁用(某些)挂钩的应用程序产生一些影响。

  • unique together 约束(多列唯一性约束)获取 name 将CubicWeb约束实体映射到相应后端索引的属性。

  • breadcrumbentyvcomponent的open_breadcrumbs方法现在包括第一个breadcrumbs分隔符

  • 可以比较实体的相等性和哈希值

  • 这个 on_fire_transition 谓词接受一系列可能的转换名

  • group concat rql aggregate函数不再在sqlite和postgresql后端重复重复值。

贬低

  • pyrorql sources have been deprecated. Multisource will be fully dropped in the next version. If you are still using pyrorql, switch to datafeed NOW!

  • 旧的多源系统

  • find_one_entity and find_entities in favor of find (see #3361290)

  • 这个 TmpFileViewMixin and TmpPngView classes (see #3400448

不推荐使用的代码删除

  • ldapuser 被丢弃;使用 ldapfeed 现在(见 #2936496

  • 行动 GotRhythm 已删除,请确保不将其导入多维数据集中(甚至不注销)(请参见 #3093362

  • 所有3.8向后兼容都消失了

  • 所有3.9后向兼容(包括javascript端)都消失了

  • 这个 twisted (仅限Web)实例类型已被删除

3.17(2013年5月2日)

新功能

  • 添加命令以比较数据库模式和文件系统模式(请参见 #464991

  • 使用HTTP请求的内容添加cubicWebRequestBase.content(请参见2742453)(请参见 #2742453

  • 向REST呈现添加指令书签(请参见 #2545595

  • 允许用户定义的最终类型(请参见 #124342

API更改

  • 删除类型为uid(),而不是int()(请参见 #2742462

  • SIOC视图和适配器已从CubicWeb中删除并移动到 sioc 立方体。

  • 网页嵌入视图和适配器已从CubicWeb中删除并移动到 embed 立方体。

  • 电子邮件发送视图和控制器已从CubicWeb中删除并移动到 massmailing 立方体。

  • RenderAndSendNotificationView 被否决,赞成 ActualNotificationOp 新操作使用的效率更高 data 成语。

  • 循环任务现在可以有一个间隔<= 0 .负间隔完全禁用循环任务。

  • 我们现在提供HTML而不是XHTML。(参见 #2065651

贬低

  • ldapuser have been deprecated. It'll be fully dropped in the next version. If you are still using ldapuser switch to ldapfeed NOW!

  • hijack_user 已弃用。它很快就会掉下来。

不推荐使用的代码删除

  • 进度视图和适配器已从CubicWeb中删除。这些类自3.14.0以来已被弃用。它们仍然可以在 iprogress 立方体。

  • 已删除自3.7以来弃用的API。

3.16(2013年1月25日)

新功能

  • 添加新的数据导入存储 (SQLGenObjectStore )。通过直接刷新SQL中的信息,此存储允许在CubicWeb中快速导入数据(实体创建、链接创建)。这只能用于PostgreSQL,因为它需要'copy from'命令。

API更改

  • 窗体: set_attributesset_relations 统一的(不推荐使用的)有利于 cw_set 在任何情况下都有效。

  • db api/配置:所有外部存储库连接信息现在都在一个URL中(请参见 #2521848 ,允许删除pyro nameserver主机、组等的特定选项并修复损坏的 ZMQ 来源。与配置相关的更改:

    • 从客户端配置中删除了“pyro-ns-host”、“pyro-instance-id”、“pyro-ns-group”,而不是“repository-uri”。 未完成迁移 假设在野外没有纯网络配置。

    • 停止通过发现连接方法 repo_method 配置的类属性,根据配置类而变化。这是实现更简单配置处理的第一步。

    DB-API相关变更:

    • 停止指示连接方法使用 ConnectionProperties .

    • 跌落 _cnxtype 属性来自 ConnectioncnxtypeSession .前者被替换为 is_repo_in_memory 而后者则完全无用。

    • 转弯 repo_connect into `_ repo_connect`将其标记为私有函数。

    • 贬低 in_memory_cnx which becomes useless, use `_ 如有必要,请改为repo_connect。

  • tcp://”uri方案用于 ZMQ 通信(在某种程度上让人联想到Pyro)现在被命名为“zmqpickle tcp://”,以便为将来基于zmq的轻量级通信(不使用python对象pickle)腾出空间。

  • request.base_url获取 secure=True 可选参数,如果可能,生成一个https URL,允许hook生成的内容发送安全的URL(例如,发送邮件通知时)

  • dataimport ucsvreader获取新的布尔值 ignore_errors 参数。

非侵入式API更改

  • 下降 cubicweb.web.uicfg.AutoformSectionRelationTags.bw_tag_map ,自3.6以来已弃用。

用户界面更改

  • RQL搜索栏现在有一些自动完成支持。这意味着在键入时可以建议关系类型或实体类型。与目前的行为相比,这是一个了不起的改进!

  • 这个 action box 与关联 table 视图(来自 tableview.py )已经转换成一系列好看的小选项卡;这意味着可以立即看到可能的操作,无需单击右上角几乎不可见的图标即可发现。

  • 这个 uicfg 模块已移动到web/views/并且现在可以选择UI配置对象。在许多情况下,这将减少定制UI行为通常需要的子类化和整个方法替换的数量。

  • 删除ChangeLog视图,因为CubicWeb和已知多维数据集/应用程序都没有正确地提供相关文件。

其他变化

  • “Pyrorql”源将自动更新,以使用URL定位源而不是配置选项。zmqrql的源在这次更改之前被破坏,所以不需要升级…

  • 已添加挂钩和操作的调试筛选器。

  • 一些cubicWeb ctl命令用于显示 msgcatmsgfmt 他们不再是了。

3.15(2012年4月12日)

新函数

  • 添加基于尖端ZMQ(http://www.zeromq.org/)套接字库的ZMQ服务器。这允许以与Pyro类似的方式访问远程实例。

  • 使用ZMQ发布/订阅机制在CubicWeb实例之间进行通信。新的zmq-address-sub和zmq-address-pub配置变量定义了通信发生的位置。从这个版本开始,这个机制用于实体缓存失效。

  • 改进了WSGi支持。尽管还有一些警告,但是大多数只被扭曲的代码现在是通用的,并且允许相关功能与WSGi前端一起工作。

  • 完全撤销/事务支持:修改的撤销最终已经实现,配置也简化了(基本上是在实例基础上激活还是不激活)。

  • 控制使用的HTTP状态代码并不容易:

    • WebRequest 现在有一个 status_out 属性控制响应状态;

    • 大多数Web端异常都是可选的 status 争论。

API更改

  • 基本注册表实现已移动到新的 logilab.common.registry 模块(见1916014)。这包括以下代码:

    • cubicweb.vreg (里面的东西)

    • cw.appobject (基本选择器和全部)。

    在此过程中,进行了一些重命名:

    • 顶级注册表现在是 RegistryStoreVRegistry ,但这不应影响CubicWeb客户端代码;

    • 以前的选择器函数现在称为“谓词”,尽管您仍然使用谓词来构建对象的选择器;

    • 为了保持一致性, objectify_selector 因此,装饰物被重新命名为 objectify_predicate

    • 在CubicWeb侧, selectors 模块已重命名为 predicates .

    调试重构不再需要 lltrace 装饰师。应该有完整的向后兼容和适当的拒绝警告。注意 yes 谓词和 objectify_predicate 装饰师,以及 traced_selection 现在应该从中导入函数 logilab.common.registry 模块。

  • 所有登录表单现在都提交到<app_root>/login。到请求页面的重定向现在由登录控制器处理(以前由会话管理器处理)。

  • Publisher.publish 已重命名为 Publisher.handle_request .此方法现在包含以前由Twisted处理的通用逻辑版本。 Controller.publishnot 影响。

非侵入式API更改

  • 新的“ldapfeed”源类型,旨在用数据馈送(即基于副本的)源思想替换“ldapuser”源。

  • 新的“zmqrql”源类型,类似于“pyrorql”,但使用“mq”而不是pyro。

  • 一个新的注册表 services 已经出现,您可以在其中注册服务器端 cubicweb.server.Service 儿童班。他们的 call 方法可以使用new从Web端AppObject实例调用 self._cw.call_service 方法或服务器端方法 self.session.call_service .这是一种调用服务器端方法的新方法,它比修补存储库类更干净,这已成为一种不推荐使用的执行类似任务的方法。

  • 一个新的 ajax-func 注册表现在承载所有远程函数(即通过 asyncRemoteExec JS应用程序接口)。方便 ajaxfunc decorator允许您在没有所有AppObject标准样板文件的情况下轻松地公开您的python函数。保持向后兼容性。

  • “json”控制器现在已被弃用,取而代之的是“ajax”控制器。

  • WebRequest.build_url 现在可以采取 __secure__ 参数。当真的cubicWeb尝试生成一个https URL时。

用户界面更改

新的“UndoHistory”视图将公开可撤消的事务,并授予撤消其中一些事务的访问权。

3.14(2011年11月9日)

第一个注意事项CW 3.14依赖于YAMS 0.34(这与以前的CubicWeb版本中有关实例重新创建的版本不兼容)。

API更改

  • Entity.fetch_rql restriction 参数已被弃用,应替换为对新参数的调用 Entity.fetch_rqlst 方法,获取返回值(a rql Select 节点),并使用rql语法树API包含上述限制。

    向后兼容保持适当的警告。

  • Entity.fetch_orderEntity.fetch_unrelated_order 类方法已被替换为 Entity.cw_fetch_orderEntity.cw_fetch_unrelated_order 使用不同的原型:

    • 现在,它们不采用(attr,var)作为两个字符串参数,而是采用(select,attr,var),其中select是rql语法树beinx构造的,var是变量 node .

    • 它必须修改语法树,而不是返回一些要插入orderby子句的字符串。

    除以下情况外,向后兼容还保留适当的警告:

    • 自定义订单方法返回 变量名,有或没有排序顺序 (例如,在跟踪程序中对注册过程的值进行排序的情况)。在这种情况下,会记录一个错误,指示在API升级之前忽略此排序。

    • 客户机代码使用对实体上这些方法之一的直接访问(没有已知的代码)。

  • Entity._rest_attr_info class method has been renamed to Entity.cw_rest_attr_info

    还没有向后兼容,因为这是一个受保护的方法,所以在CubicWeb本身之外没有已知的代码使用它。

  • AnyEntity.linked_to 已作为重构此功能的一部分删除(在创建步骤将一个实体链接到另一个实体)。它被一个 EntityFieldsForm.linked_to 财产。

    在同样的重构中, cubicweb.web.formfield.relvoc_linkedtocubicweb.web.formfield.relvoc_initcubicweb.web.formfield.relvoc_unrelated 已被移除并替换为具有相同名称的RelationField方法,这些方法的形式为参数。

    还没有向后兼容性 .现在仍然是为之哭泣的时候。已知受影响的多维数据集:跟踪器、VCS文件、VCReview。

  • CWPermission 实体类型及其关联的需要权限关系类型(抽象)和需要组关系定义已移动到新的 localperms 立方体。随着这一点,一些功能从 cubicweb.schemas 包以及一些视图。这使得CubicWeb本身更小,而您将所有本地权限都放在一个单独的、有文档记录的地方。

    保留现有实例的向后兼容性, 尽管您应该安装localperms多维数据集 .当尝试迁移到3.14实例时,应显示正确的错误使用 CWPermission 没有安装新多维数据集。对于新实例/测试,您应该使用此功能在多维数据集中添加对新多维数据集的依赖性,以及对CubicWeb的依赖性>=3.14。

  • jquery已更新为1.6.4,jquery tablesorter已更新为2.0.5。没有已知的向后兼容问题。

  • 表视图重构:新建 RsetTableView and EntityTableView, as well as rewritten an enhanced version of PyValTableView on the same bases, with logic moved to some column renderers and a layout. Those should be well documented and deprecates former TableView, EntityAttributesTableView and CellView, which are however kept for backward compat, with some warnings that may not be very clear unfortunatly (you may see your own table view subclass name here, which doesn't make the problem that clear). Notice that _ cw.view('table',rset,*kwargs)`将路由到新的 `RsetTableView 还是老的 TableView 取决于给定的额外参数。见1986413。

  • display_name 不再调用.lower()。这可能导致用户界面发生更改。不同的msgid用于实体类型名称的大小写版本,因为这是用某些语言处理此问题的唯一正确方法。

  • IEditControlAdapter 已弃用,赞成 EditController 通过添加名为 match_edited_typematch_form_id .

  • 但是,3.6版之前的API向后兼容已被删除 data 迁移兼容性已保持。在运行迁移之前,您可能需要修复由于实例的旧API使用而导致的错误,但是您甚至应该能够升级3.6之前的数据库。

  • 已弃用 cubicweb.web.views.iprogress 支持新的 iprogress 立方体。

  • 已弃用 cubicweb.web.views.flot 支持新的 jqplot 立方体。

非侵入式API更改

  • 重构属性窗体(如用户首选项和站点范围的属性)以及分页组件,以便于覆盖。

  • 新的 cubicweb.web.uihelper 为uicfg提供高级助手的模块。

  • 新的 anonymized_request decorator以匿名用户的身份临时运行资料,不管当前登录的用户是什么。

  • 新建“Verbatimatr”属性视图。

  • 用于存储二进制掩码的整数的新方面和窗体小部件。

  • 新的 js_href 函数生成正确的javascript href。

  • match_kwargsmatch_form_params 选择器都接受新的 once_is_enough 争论。

  • printable_value 现在是一种请求的方法,可以对

    要使用的格式化程序。

  • [Rset]TableView 允许在“headers”中设置“none”,这意味着默认情况下应从结果集中提取标签。

  • 关于实体创建的字段词汇计算现在需要 __linkto 信息输入accounet。

  • 开始了一个 cubicweb.pylintext 帮助pylint分析多维数据集的pylint插件。

RQL

  • 支持在“set”和“delete”查询中使用。

  • 新的 AT_TZ 函数返回给定时区的时间戳。

  • 新的 WEEKDAY 日期提取函数

用户界面更改

  • 数据源现在提供最新导入日志的历史记录,包括导入期间发出的全局状态和调试/信息/警告/错误消息。早于可配置时间的导入日志将自动删除。

  • 创建带有“uu linkto”的实体时,breadcrumbs组件被正确保存。

  • 用户和组管理现在真的导致了这一点(即包括 管理层)。

  • 带有“jsonexport”和“ejsonexport”视图的新“jsonp”控制器。

配置

  • 添加了“resources concat”选项,使javascript/css文件连接成为可选的。