跳转到主要内容

BBB: Plone 2.1-4.3的默认内容类型

项目描述

AT内容类型

安装

在安装此产品之前,请阅读 INSTALL.txt 以获取要求列表。ATContentTypes 需要新的 Python、Zope、Plone 和 Archetypes 版本。请确保已更新所有产品。

报告错误/功能请求

请在 http://dev.plone.org/plone 使用 Plone 错误跟踪器,并使用内容类型组件!

比较 CMF 类型与 ATContentTypes

这是旧 CMF 类型与新 ATContentTypes 类型之间差异的非常粗略和简短的列表。

  • Archetypes:所有类型都使用 Archetypes 编写,并具有所有基于默认 Archetypes 的类型功能,如

    • 基于模式的自动生成编辑表单

    • 可引用

    • 可以通过子类化或向模式添加字段轻松扩展

    • 转换,如重新结构化文本、Python 源代码高亮显示、PDF 到 HTML、办公软件到 HTML 等。

    • 字段的插件式验证

  • 干净且文档齐全的 API。

  • 使用 LinguaPlone 可翻译。

  • 动态视图:所有类型都使用新的动态视图 FTI,允许您根据实例选择视图模板。您可以在 portal_types 工具中配置模板。此功能用于通过简单切换到不同的视图将普通文件夹转换为相册。

  • 每个类型和功能的权限:每个类型都有自己的添加权限,所有模板混合等功能都有其自己的修改权限。

  • 对所有类型进行的大量小调整和增强,例如

    • 图像可以通过网络旋转,并具有 EXIF 信息

    • 新闻条目有一个图像加标题

    • 事件有一个正文文本

    • 文档有一个历史记录选项卡,以统一差异视图显示 ZODB 历史记录中的最后更改。

变更日志

3.0.7 (2022-03-16)

错误修复

  • 修复测试后 PortalTransforms 使用 lxml html 方法序列化(而不是 xml 方法)。[陷阱] (#68)

3.0.6 (2022-01-28)

错误修复

  • 安全修复:防止 Referer 标头缓存中毒。请参阅 安全咨询 <https://github.com/plone/Products.ATContentTypes/security/advisories/GHSA-g4c2-ghfg-g5rh>。[maurits] (#1)

3.0.5 (2021-10-07)

错误修复

  • 防止在 Python 3 上安装,因为我们知道 Archetypes 在那里不起作用。[maurits] (#3330)

3.0.4 (2020-09-28)

错误修复

  • 删除模板中的 test() 使用。[pbauer] (#24)

3.0.3 (2020-04-20)

错误修复

  • 更新测试以在 Zope 4.2.1/4.2 上运行。[maurits] (#644)

3.0.2 (2019-06-19)

错误修复

  • 修复 Plone 5.2 中的 full_folder_view 视图。[pbauer] (#64)

3.0.1 (2019-05-21)

错误修复

  • 修复 portal_factory 中的遍历,使用 url-quoted 类型名称。在 Zope4 重定向期间,URL(例如“新闻条目”)中的空格(例如)被引号化到 %20。这阻止了在 __bobo_traverse__ 中找到 portal_type。请参阅 https://github.com/plone/buildout.coredev/pull/586 [pbauer] (#63)

3.0.0 (2018-10-30)

新功能

  • 添加了 isExpired.py 和 getObjSize.py 皮肤脚本,因为它们将从 CMFPlone 中删除。(#58)

错误修复

  • Zope4 兼容性。修复了与 Zope 4.0b4 结合的测试。不要在 TAL 中调用视图。修复 checkPermission 调用(它在 CMF 2.3 之前是从 portal_membership 获得的)。修复 doctests 以适应 http-headers 的变化。[davisagli, pbauer, maurits] (#50)

  • 添加了多个 GS 配置文件的详细程度。将所有内容标记为 旧版本向后兼容。这有望减少站点设置中的错误率。[jensens] (#51)

  • 处理 folder_tabular_view 中的无内容图标。[davisagli] (#53)

  • 切换到新的 TestCase,使用 AT,在 PloneTestcase 现在是 DX 之后。[pbauer] (#56)

  • 使用来自CMFPlone的新utils.check_id。[maurits] (#60)

2.3.6 (2017-06-26)

错误修复

  • 修复MimeTypeException弃用警告。[ale-rt]

2.3.5 (2017-05-29)

错误修复

  • 添加对processQueue的条件导入,因为该包仍在5.0版本中使用。[gforcada]

  • 移除“更改门户事件”权限。[kakshay21]

2.3.4 (2017-04-01)

错误修复

2.3.3 (2017-02-12)

错误修复

  • 修复在Zope 4上的测试。[davisagli, pbauer, mauritsvanrees]

2.3.2 (2017-01-20)

新功能

  • 将Products.CMFPlone中的plone_content皮肤模板移到这里。[gforcada]

2.3.1 (2016-11-17)

错误修复

  • 修复从 Globals 导入的导入问题,该问题已在Zope4中删除。[pbauer]

  • 即使Plone本身不需要,也要求安装plone.app.imaging。[davisagli]

2.3 (2016-10-03)

新功能

  • 不要尝试安装p.a.imaging.widgets。在Plone 5中,它们的默认配置文件是占位符。[maurits]

  • 添加了fulluninstall配置文件。此配置文件属于“default”配置文件,只能通过portal_setup安装。[maurits]

  • 添加了uninstall配置文件。此配置文件属于“base”配置文件,它是安装ATContentTypes时应用的配置文件。[maurits]

  • 不再注册archetypes皮肤,因为Products.Archetypes自身会这样做。[maurits]

2.2.13 (2016-07-29)

新功能

  • 使测试与旧的和新的安全HTML清理器(PLIP 1441)兼容。[tomgross]

错误修复

  • 使用zope.interface装饰器。[gforcada]

2.2.12 (2016-05-15)

修复

  • 从某些方法中删除了docstrings,以避免发布它们。来自Products.PloneHotfix20160419。[maurits]

  • 修复了安装期间出现的AttributeError unmarkCreationFlag。这可能会在已存在来自plone.app.contenttypes的Members文件夹时发生。修复了问题https://github.com/plone/Products.CMFPlone/issues/1519 [maurits]

2.2.11 (2016-02-14)

修复

  • 添加了安全装饰器。[maurits]

  • 从simpleint标准中删除了双行。这导致post_validate始终为value2提供一个错误。可能该功能根本未使用,因为这个功能已经存在多年了。[maurits]

  • 添加了utf-8编码魔术注释。[maurits]

  • 使用isort排序导入。[maurits]

  • 修复了pep8错误。[maurits]

  • 防止topic-criteria具有unicode作为id。Unicode-id在Zope4中导致ZCatalog索引准则时中断,因为obj.getPhysicalPath()在zope4中更喜欢obj.id而不是obj.getId()。[pbauer]

2.2.10 (2015-12-21)

修复

2.2.9 (2015-11-26)

修复

2.2.8 (2015-10-28)

修复

  • 仅进行空格的pep8清理。不在皮肤中。[maurits]

  • 从Topic中删除了use_folder_tabs。[maurits]

2.2.7 (2015-09-20)

  • 从配置注册表中拉取link_redirect、types_view_action_in_listings设置的值。[esteele]

2.2.6 (2015-07-18)

  • 将createObject移动到Archetpyes。[tomgross]

  • 在createObject脚本中添加CSRF验证器。[ebrehault]

2.2.5 (2015-05-04)

  • 将测试从PloneTestCase移动到plone.app.testing。[tomgross, timo]

  • 在新注册表上设置语言设置setupPortalContent。[timo]

2.2.4 (2015-03-26)

  • 合并PLIP 13091,plone.app.multilingual。[bloodbare]

2.2.3 (2015-03-08)

  • 在propertiestool.xml配置文件中定义default_page_types。[thet]

  • 添加配置文件“base”,允许在Plone 5中依赖ATContentTypes的插件,而无需卸载dexterity默认类型。[pbauer]

2.2.2 (2014-10-23)

  • 更新模板标记以匹配Barcelonetta。[albertcasado, sneridagh]

  • 删除弃用的导入。[tomgross]

2.2.1 (2014-04-13)

  • 从portalMessage模板中删除DL。[khink]

2.2.0 (2014-03-01)

  • 在event_view中不要使用spamProtect脚本;它没有做多少事情。[davisagli]

  • 使用新的成员搜索表单作为成员文件夹的布局。[davisagli]

  • 将Products.CMFFormController依赖关系从Products.CMFPlone移动到Products.ATContentTypes(PLIP #13770)[ale-rt]

  • 将 portal_factory 和 portal_metadata 从 Products.CMFPlone 移至 Products.ATContentTypes。 (PLIP #13770) [ale-rt]

  • 删除测试测试讨论 test_discussion,该测试测试旧的讨论(Plone 4.1之前的)工具。 [timo]

  • 添加 'content' 配置文件,该文件添加演示/测试内容。这曾经位于 CMFPlone 中,并且仍然在 Plone 5 中由 PloneTestCase 使用。 [davisagli]

  • 更新 ICONMAP(从 .gif 到 .png)。 [mathias.leimgruber]

  • 将内容类型配置文件定义从 Products.CMFPlone 移入此处。(PLIP 12344 的合并) [davisagli 等.]

  • 从文档中删除演示模式设置。如果还需要此功能,请使用 plone.app.s5slideshow 插件。 [davisagli]

  • 删除向后兼容存根 Products.ATReferenceBrowserWidget [tomgross]

  • 如果 atct_topic_view 在非主题上调用,则不要抛出迹线。将重定向到上下文的默认视图 [tomgross]

  • 将 ATContent types 视图移动到此处而不是 CMFPlone [encolpe]

2.1.12 (2013-03-05)

  • 修复在复制(旧式)集合路径标准和相关项目在库存内容中使用 schema 标志 keepReferencesOnCopy 时缺失的引用。参考:https://dev.plone.org/ticket/9919 [seanupton]

2.1.11 (2013-01-13)

  • 修复从 Archetypes 中弃用的导入:使用 atapi 而不是 public [toutpt]

2.1.10 (2012-12-09)

2.1.9 (2012-10-11)

  • 在启动时忽略关于 ATTopic.setText 的虚假安全警告。 [hannosch]

  • 当通过转换图像标签将图像转换为图像时通知修改。这更新了修改日期并刷新 Etag。参考:http://dev.plone.org/ticket/13169 [thomasdesvenain]

  • 为 IFileContent 添加 @@download 视图 [vangheem]

  • 在 4.3 中实现 folder 和 topic 的 ISyndicatable [vangheem]

2.1.8 (2012-08-18)

  • 修复相册视图 - 当缩略图生成失败时,文件名出现两次。参考:http://dev.plone.org/ticket/13082 [thomasdesvenain]

  • PEP 8(忽略 W602、E301、E501 和 E701)。 [hvelarde]

  • 在测试中替换了弃用的别名。 [hvelarde]

  • ical 导出:不要在 TEXT 属性中转义冒号字符。修复 http://dev.plone.org/ticket/11540。 [jenskl 的补丁,kleist 应用]

  • 将弃用的 getSiteEncoding 更改为硬编码的 utf-8 [tom_gross]

2.1.7 (2012-04-09)

  • 恢复主题选项卡视图中的图标显示 [tom_gross]

2.1.6 (2012-01-26)

  • 修复用于更改或管理主题/集合标准的变化/修改权限 [rossp]

  • 根据 UTC 时间计算本地化日期字符串。参考:https://dev.plone.org/ticket/12197 [malthe, ajung]

  • 根据需要用 __parent__ / aq_parent 替换 getParentNode()。 [elro]

2.1.5 (2011-10-06)

  • 启用按 getObjPositionInParent 索引排序。 [davisagli]

2.1.4 (2011-08-31)

2.1.3 (2011-07-12)

  • 当查询类型索引时,PortalType-criteria 应该使用 archetype_name 作为值。修复 http://dev.plone.org/plone/ticket/11913 [WouterVH]

  • 非 RefCatalogContent-对象(例如,标准),不应获取 UUID。修复 http://dev.plone.org/plone/ticket/11904 [WouterVH]

  • 当文件夹与其父文件夹类型不同时,如果该文件夹获得约束,则允许的类型是该文件夹在全局允许类型和其父文件夹的本地允许类型的交集。这修复了http://dev.plone.org/plone/ticket/11950。[thomasdesvenain]

  • 对于以表格视图显示的集合,显示本地化的日期格式。修复了http://dev.plone.org/plone/ticket/11155。[WouterVH]

  • 修复:添加不允许的子对象时,如果禁止与内容类型限制相关,则引发ValueError而不是Unauthorized。[thomasdesvenain]

  • 在relatedItems字段上激活手动排序。[toutpt]

2.1.2 (2011-05-12)

  • 使用DateTime的内建支持进行datetime.datetime转换。[hannosch]

  • 修复了atdocument测试,使其与Archetypes 1.7.5兼容。[hannosch]

  • 优化图像和图标文件大小。[hannosch]

  • 文件夹对象HEAD的实现严重过时,一开始就没有多少意义。用basic WebdavResource.HEAD替换。[stefan]

2.1.1 (2011-02-04)

  • 为集合添加了对新BooleanIndex和UUIDIndex的支持。[hannosch]

  • 删除“项目类型”标准中的多余和/或运算符。这修复了http://dev.plone.org/plone/ticket/10882。[msmith64]

2.1.0 (2011-01-03)

  • 依赖Products.CMFPlone而不是Plone。[elro]

  • 在atct_topic_view.pt中的subtopics-header添加CSS id以允许样式化。[tom_gross]

  • 确保使用plone.uuid确保主题标准获得有效的UUID。[toutpt, davisagli]

2.0.7 (2011-01-03)

  • 将批处理参数传递到集合queryCatalog方法中的目录查询调用。[hannosch]

  • 为各种权限添加Site Administrator角色,以便与Plone 4.1兼容。[davisagli]

  • 避免在Zope 2.13下出现一些弃用警告。[hannosch]

  • 在atct_topic_view模板中添加缺少的内容-core宏定义。[davisagli]

2.0.6 (2010-09-28)

  • 修复:由于atctListAlbum脚本对主题API的滥用,集合的相册视图在三个部分(图像、文件夹、其他)中显示图像。[thomasdesvenain]

2.0.5 (2010-09-08)

  • 更改atct_manageTopicIndex.cpt和atct_manageTopicMetadata.cpt中输入字段的顺序。复选框字段必须不是第一个,否则http请求:records会混乱。这修复了http://dev.plone.org/plone/ticket/10896。[petschki]

  • 为集合管理模板添加浏览器测试。[petschki]

2.0.4 (2010-08-08)

  • 调整测试以反映新的子集合默认策略。[hannosch]

2.0.3 (2010-08-04)

  • 修复测试失败。[davisagli]

2.0.2 (2010-07-29)

2.0.1 (2010-07-18)

2.0 (2010-07-01)

  • 从收藏设置控制面板中移除了一些过时的硬编码HTML。[limi]

  • 删除由路径标准引用的对象导致收藏既不可查看也不可编辑。这修复了http://dev.plone.org/plone/ticket/10708。[fRiSi]

2.0b11 (2010-06-13)

  • 避免在Zope 2.13下出现弃用警告。[hannosch]

  • 避免测试对zope.app.testing的依赖。[hannosch]

2.0b10 (2010-06-03)

  • 确保各种收藏视图显示文本。与http://dev.plone.org/plone/changeset/36850相关,该链接修复了http://dev.plone.org/plone/ticket/10226。[hannosch]

  • Products.ATContentTypes.content.folder.ATBTreeFolder现在已弃用。大多数情况下,正常ATFolders(如plone.app.folder中实现)适合存储大量项目。如果您需要一个完全不跟踪顺序的文件夹,请使用设置排序属性为u'unordered'的正常ATFolder(来自plone.app.folder)。[davisagli]

  • 合并1.3.6分支中test_queryCatalogOverrideCriteria的修复。[toutpt]

2.0b9 (2010-05-01)

2.1.4 - 未发布

  • 尚未有任何更改。

2.0b8 - 2010-05-01

  • 检查存储日期的ISO,而不是现在由访问器返回的ISO8601(带有时区)。[davisagli]

2.0b7 - 2010-04-12

  • 在子收藏视图中列出子收藏,而不是所有子对象。[elvix]

  • 修复了收藏控制面板以再次显示偏好面板。[davisagli]

  • 修复了在“显示为表格”被选中时显示链接和图标的问题。链接使用'typesUseViewActionInListings'显示,图标使用plone_view.getIcon显示。[kcleong]

2.0b6 - 2010-03-08

  • 现在由于存储的DateTime对象带有时区,调整测试。[witsch]

2.0b5 - 2010-03-07

2.0b4 - 2010-03-05

  • 通过使用DateTime的ISO8601方法而不是ISO(不包括时区)来修复滑动修改/发布日期的问题。参照http://dev.plone.org/plone/ticket/10140、10141 & 10171。[davisagli, witsch]

  • 对集合管理屏幕上的“选项卡模拟”的标记进行了润色,以在Sunburst中表现良好。[spliter]

  • 修复了atct_manageTopicMetadata.cpt和atct_manageTopicIndex.cpt的验证。[spliter]

  • 更新atct_manageTopicMetadata.cpt和atct_manageTopicIndex.cpt以遵循最近的标记约定。参照http://dev.plone.org/plone/ticket/9981。[spliter]

2.0b3 - 2010-02-17

2.0b2 - 2010-01-25

  • 从topic.py中移除了与displayContentsTab相关的黑客技术。无论这本来打算做什么,都已经改变了很久。[hannosch]

  • 针对 http://dev.plone.org/plone/ticket/7324 的端口修复 - 无法清空集合的“文本”字段。再次修复 #7324 [naro]

2.0b1 - 2010-01-02

  • 不要指定 PIL 作为直接依赖项。它并非在所有平台上都以 egg 形式安装。[hannosch]

2.0a6 - 2009-12-27

  • 尊重集合表格视图中的“显示内容类型图标”设置。这修复了 http://dev.plone.org/plone/ticket/9630。[dukebody]

  • 从测试中移除了 cmf_klass 的残留。[hannosch]

  • 移除了所有类型的图标名称的无用手动测试。[hannosch]

  • 从 webdav 测试中移除了过度创意的代码,该代码使用访问规则。[hannosch]

  • 为新文件夹类型添加了 manage_options 限制。[hannosch]

  • 移除了不再需要的 ATCTContent.manage_options 限制。[hannosch]

  • 纠正了包依赖关系。[hannosch]

2.0a5 - 2009-12-16

2.0a4 - 2009-12-03

  • 对于主题和事件,使用“修改门户内容”和“添加门户内容”而不是之前使用的特定类型的权限。[esteele]

2.0a3 - 2009-12-03

  • 由于路径遍历到缩放需要,因此替换了处理 ATNewsItem 和 ATImage 上图像缩放的自定义 __bobo_traverse__。[davisagli]

2.0a2 - 2009-12-02

2.0a1 - 2009-11-18

  • 在对象初始化时更新字段时传递 _initializing_ 标志,以避免重复索引(因为 CMF 在 ObjectAddedEvent 上索引项,而 ObjectAddedEvent 现在发生在 initializeArchetype 调用之后)。[davisagli]

  • 将日期标准“过去/现在之前”替换为“过去/未来”。[vincentfretin]

  • help_criteria_field_name msgid 被使用了两次,但具有不同的默认消息。已修复。[vincentfretin]

  • 如果提供,ATImage 将从其标题计算其 ID。关闭 http://dev.plone.org/old/plone/ticket/9186。[erikrose]

  • 将接口的规范位置更改为标准复数形式中名为 interfaces 的子包。在 interface.py 中保留 BBB 导入。[hannosch, davisagli, witsch]

  • 更新 ATCT 工具升级以将新工具注册到门户站点管理器。[davisagli]

  • 子主题不应当始终获取“开始”查询。修复了 http://dev.plone.org/plone/ticket/8827。[pelle]

  • 使用正确的位置用于 IObjectEvent。[hannosch]

  • 移除了仅用于测试的 PluggableAuthService 依赖项。[hannosch]

  • 将 CMFPlone 中的与 GenericSetup 相关的功能特定于内容类型的功能移入此包。[hannosch]

  • 删除了对 simplejson 的依赖。它在 Python 2.6 中已集成为 json。[hannosch]

  • 避免获取 portal_properties 并通过适当的 API 调用它。[hannosch]

  • 将 objectIds 和 objectValues 调用更改为使用 IContainer API。[hannosch]

  • 不要假设常规(非 btree)文件夹用于前后支持。[witsch]

  • 删除了对 CMFPlone 的各种依赖。[hannosch]

  • 进一步清理了测试。不再依赖于 testfixture 扩展配置文件,而是将测试调整为默认 Plone。[hannosch]

  • 声明包依赖关系,并修复了使用 Globals 的弃用警告。[hannosch]

  • 将 getXMLSelectVocab.py 脚本中的参数名称从“method”更改为“vocab_method”,以避免被 ZPublisher.HTTPRequest 覆盖。这关闭了 http://dev.plone.org/plone/ticket/6960。[igbun]

  • 将页面和新闻条目的描述标签更改为摘要。这关闭了 http://dev.plone.org/plone/ticket/8700。[hannosch]

  • 调整功能测试,使其不依赖于登录组件。[hannosch]

  • 将 manage_renameObject 方法从 autosort 代码移动到有序基础类中。虽然不是很明显,但代码实际上被使用了。[hannosch]

  • 从第三方文件夹中删除了 icalendar 包。我们不使用它,并且现在对需要它的人来说很容易安装。[hannosch]

  • 删除了从未完全实现的 autosort 和 urlupload 模块。[hannosch]

  • 删除了奇特的 Zope2 接口到 zope.interface 之间的桥接代码。[hannosch]

  • 从源文件中删除了讨厌的许可声明。我们有一个中央的 license.txt 用于此。[hannosch]

  • 删除了在 ATCT 1.0 之前创建的内容的模块别名。[hannosch]

  • 在删除了一些已弃用的代码后,调整了代码以符合当前的 Plone trunk。将 old_folder_contents 代码移动到 atct_topic_subtopics。[hannosch]

  • 修复了一些与标准编辑相关的测试失败。[hannosch]

  • 调整了重新索引的测试以反映索引调用顺序的变化。[hannosch]

  • 将版本号提高到 2.0,以便能够为 Plone 3.x 线发布次要功能版本。[hannosch]

  • 调整了事件测试以反映新的现实,包括 zope.app.container 和 DCWorkflow 事件。[hannosch]

  • 删除了半实现且未维护的存档和适配器代码。[hannosch]

  • 删除了未维护且未使用的收藏内容类型。[hannosch]

  • 在注释中删除了对外部编辑器的引用。[hannosch]

  • 从基本测试用例中删除了空 test_getobjpositioninparent 测试。[hannosch]

  • 调整了测试以反映使用 png 而不是 gifs 作为内容类型的做法。[hannosch]

  • 用人类可理解的术语描述相对日期范围标准。这解决了 http://dev.plone.org/plone/ticket/6841。[hannosch]

  • 修复了自定义主题视图中重复的链接图标。这解决了 http://dev.plone.org/plone/ticket/6049。[hannosch]

  • 删除了 ATEvent 混合 eventType 和 Subject 的令人困惑的行为。这解决了 http://dev.plone.org/plone/ticket/5058。[hannosch]

  • 将 application/x-shockwave-flash 添加到内嵌 MIME 类型中,以便在不引起下载提示的情况下在页面上显示。这解决了 http://dev.plone.org/plone/ticket/5778。[hannosch]

  • 从相对路径标准中删除了一个快捷方式,它不会在所有情况下都工作。这解决了 http://dev.plone.org/plone/ticket/7785。[hannosch]

  • 照片专辑视图从未显示子文件夹中的图片数量。这解决了 http://dev.plone.org/plone/ticket/7759。[hannosch]

  • 从文件内容类型中删除了 txng_get 方法。钩子已被弃用,并且 TextIndexNG 3 不再使用它。这解决了 http://dev.plone.org/plone/ticket/4297。[hannosch]

  • 修复了在 exif 元数据中解析 GPS 信息的问题。这解决了 http://dev.plone.org/plone/ticket/7057。[hannosch]

  • 将链接的 url 字段的最大长度从 255 增加到 511。这解决了 http://dev.plone.org/plone/ticket/6422。[hannosch]

  • 为了与 Zope 2.12 兼容,清除旧 Zope 2 Interface 接口。如果需要在 Plone 4 之前发布,请在此修订之前分支。[elro]

  • 从 ATNewsItem 和 ATImage 中删除 __bobo_traverse__。而是依赖于 Archetypes 的通用 ImageTraverse 发布遍历器,并删除了与其相关的测试。[wichert, hannosch]

  • 添加了测试 utils.dt2DT 和 utils.DT2dt,这些测试揭示了 Vice 中发现的转换日期成为无时区日期的漏洞。已修复。[matthewwilkes]

  • 将接口声明从 ZCML 移动到类本身。[hannosch]

  • 将 editing.txt、events.txt、reindex_sanity.txt 和 traversal.txt 测试从 Archetypes 移植过来,并根据 ATContentTypes 的特定行为进行了调整。[hannosch]

  • 调整了测试以反映 Archetypes 的更改后的测试基类。[hannosch]

  • 删除了包括报告脚本在内的未维护的实用工具文件夹。[hannosch]

  • 将旧文件夹内容从CMFPlone迁移过来,因为它们仍在atct_topic_subtopics.pt中使用。[hannosch]

  • 修复了编辑.txt浏览器测试,通过打开‘http://nohost/plone’而不是‘http://nohost/plone/login_form’,因为后者错误地重定向到‘http://nohost/plone/localhost’ [sirgarr]

1.3.4 - 未发布

  • 修复了criterion_edit_form.cpt中的先前的Chameleon修复,该修复破坏了新标准的创建。这关闭了http://dev.plone.org/ticket/9522 [davisagli]

1.3.3 - 2009-09-06

  • 子主题不应当始终获取“开始”查询。修复了 http://dev.plone.org/plone/ticket/8827。[pelle]

  • 在atct_topic_subtopics.pt中实现了“也在本节中”的国际化。这关闭了http://dev.plone.org/plone/ticket/8383 [massimo]

  • 修改了lib/constraintypes.py中的getDefaultAddableTypes方法,仅对允许的类型检查isConstructionAllowed,而不是对所有内容类型在portal_types中。isConstructionAllowed对每个类型调用了两次。[vincentfretin]

  • 修复了criterion_edit_form.cpt中的XHTML错误 [davisagli]

1.3.2 2009-05-20

  • 为引用标准添加了适当的国际化处理。如果uid目录具有语言意识,则它应仅在相同或中性的语言中显示引用的内容。[hannosch]

1.3.1 2009-04-28

1.3.0 - 2009-03-11

1.2.7 - 2009-01-30

  • 不要假设常规(非 btree)文件夹用于前后支持。[witsch]

  • 由于Flash 10需要此功能,因此使Flash文件显示为内联。修复了http://dev.plone.org/plone/ticket/8624 [alecm]

1.2.6 - 2008-10-06

1.2.5 - 2008-04-22

1.2.4 - 2008-01-03

1.2.3 - 2007-12-02

  • 修复 http://dev.plone.org/plone/ticket/7102:上传 xhtml 文件不正确。感谢 lucie 的补丁。[alecm]

  • 修复 portaltype 标准中的错误 - 它在多选小部件中使用 portal 类型标题作为键和值,而应使用 Id 和标题。标题(作为 DisplayList 键)翻译错误,导致 #6981 http://dev.plone.org/plone/ticket/6981 [naro, jensens]

  • 修复 formatCatalogMetadata.py 中的 Unicode 编码错误,当 atct_topic_view.py 使用它以表格形式显示无法编码为 ascii 的文本字段(如“位置”)时。[stevem]

  • 重新排序 ATDateCriteria 架构字段 => 更直观。[zegor]

  • 修复了直接使用 ATContentTypeSchema 时发生的神秘错误:验证层未初始化 'id' 字段。这修复了 http://dev.plone.org/plone/ticket/7221 [deo]

1.2.2 - 2007-10-05

  • 修复 ATLink XSS 问题。[alecm, reinout]

  • 在请求“所有字段”时,更新集合控制面板中的目录索引和元数据列表。[ldr]

  • 由于标题字段可以从上传的文件名中获取(如果不存在),因此文件和图片不需要强制执行标题字段。这修复了 http://dev.plone.org/plone/ticket/6051,这是用户在上传文件/图片时的常见烦恼来源。

1.2.1 - 2007-09-12

  • 对于事件,将主题字段设置为只读且不可见。这修复了 http://dev.plone.org/plone/ticket/6967 [alecm]

  • 使用小部件视图简化标准视图模板的行内编辑。[limi]

1.2.0-final - 2007-08-16

  • 不再对 constraintypes 字段强制使用词汇表,这基本上是没有意义的,不强制使用它们有助于解决一个奇怪的错误:http://dev.plone.org/plone/ticket/6734 [alecm]

  • 修复了事件日期验证错误消息的 i18n 标记。[hannosch]

  • 仅显示相关项目一次,而不是两次。[wichert]

1.2.0-rc2 - 2007-06-11

  • 将链接验证添加到事件字段。[alecm]

1.2.0-rc1 - 2007-06-08

  • 修复了主题中相关项目与查询结果之间的连接问题。[alecm]

  • 修复了 atct 工具迁移中的迁移错误。这关闭了 http://dev.plone.org/plone/ticket/6549http://dev.plone.org/plone/ticket/6550。[hannosch]

  • 在主题视图中显示文本字段和相关项目。[wichert]

  • 通过使用 ATCTMessageFactory 正确 i18n 化 imagetransforms TRANSPOSE_MAP。[hannosch]

  • 删除了所有使用 PloneMessageFactory 的用法,并替换为使用 ATCT 自身的消息工厂。提取工具无法处理用于单个包的两个不同的消息工厂。[hannosch]

  • 修复了一些 i18n 标记,以使用新的 ids 为相关集合消息,因此它们不会与使用智能文件夹的老旧 ones 冲突。[hannosch]

  • 正确隐藏字段。用户可能没有权限编辑它们!还修复了由打字错误引起的相关安全漏洞。[optilude]

  • 在新的 ATDocumentBase 类上更正了 cmf_edit_kws,该类用作 ATNewsItem 的基础。它的缺失导致 CMFPlone 的测试失败,该测试需要特殊处理 text_format。[hannosch]

1.2.0-beta2 - 2007-04-29

  • 将一些状态消息更改为“错误”类型。[hannosch]

  • 支持从GenericSetup配置文件更新现有主题索引和元数据 [wichert]

  • 移除了tests/runalltests.py和tests/framework.py。要运行测试,请使用Zope的测试运行器:./bin/zopectl test –nowarn -s Products.ATContentTypes [stefan]

1.2.0-beta1 - 2007-03-04

  • 调整测试以处理布尔字段的默认新词汇。 [wichert]

  • 调整测试以处理从GenericSetup配置文件中移除旧CMF类型。这参考了http://dev.plone.org/plone/ticket/6156。 [hannosch]

  • 将ATFile的文件字段设置为“可搜索”。这意味着它将被正确索引,包括转换。如果您不希望这样做,请设置自己的“index_method”,或在您的代码中将“searchable”设置为False。 [nouri]

  • 在URL支持中消除了旧portal_status_message的最后出现。 [hannosch]

  • 合并了plip174-reusable-i18n分支。上传文件名的规范化现在基于plone.i18n.normalizer。 [hannosch]

1.2.0-alpha2 - 2007-02-08

  • 从内容类型类中移除了各种过时的类属性。这些现在由GenericSetup配置文件管理。 [hannosch]

  • 更新了安装测试,因为ATCT不再“快速安装”。 [hannosch]

  • 在finalizeATCTSchema中移除了allowDiscussion字段的schemata='default'。这没有意义,并阻止了通过修补来定制。 [ender]

  • 将内容类型字段移动到几个模式中。 [fschulze]

  • 移除了属性标签页,因为我们现在使用Archetypes的单页所有模式的特性。 [fschulze]

  • 进行了一些通用的测试清理,以便使测试输出可读。 [hannosch]

  • 移除了所有标准内容类型的index.html视图别名。这使得在批量导入旧网站到网站时创建和上传名为index.html的文件成为可能。由于可能有人依赖于以前的行为,我们不会迁移任何现有的类型信息。这关闭了http://dev.plone.org/plone/ticket/4837。 [hannosch]

  • 摆脱了zLOG的最后残余。Grep是我们的朋友! [stefan]

1.2.0-alpha1 - 2006-10-02

  • 修复了一些小的i18n问题。 [hannosch]

  • 重新工作了Python脚本的i18n,以使用新的MessageFactory,并基于statusmessages产品来处理门户状态消息。 [hannosch]

  • 将标准定义更改为使用Zope3 Messages进行本地化描述和标签,而不是旧Archetypes方法使用特殊属性。为“atcontenttypes”i18n域中的消息添加了ATCTMessageFactory。 [hannosch]

  • 修复了从CMFPlone到CMFPlone.utils的transaction_note的一些导入。 [hannosch]

  • 修复了TALValidator的弃用警告。 [hannosch]

  • 将类型定义更改为使用Zope3 Messages进行本地化描述和标签,而不是旧Archetypes方法使用特殊属性。 [hannosch]

  • 移除了基于ZConfig的主题工具配置,因为它现在由GenericSetup配置文件处理。移除了在get*调用中神奇地重新创建索引和元数据的做法。 [hannosch]

  • 为Plone基本配置文件中的ATCT工具添加了导出导入处理程序。 [hannosch]

  • 调整了一些已弃用的getActionById调用,以使用getActionInfo调用。 [hannosch]

  • 移除了Zope2.10中不再需要的five:traversable语句。 [hannosch]

  • 简化了测试设置,并根据需要调整了一些测试。 [hannosch]

  • 调整了Archetypes.public的导入位置为Archetypes.atapi以适用于AT1.5。 [hannosch]

1.1.4-final - 2006-12-18

1.1.3-final - 2006-09-20

1.1.2-final - 2006-09-11

  • 将集成测试的标题更改为测试Unicode标题而不是纯ASCII。 [hannosch]

  • 为atct_topic_view添加了审阅状态着色。这解决了http://dev.plone.org/plone/ticket/5481。 [hannosch]

  • 不再设置“ATCT Setup”控制面板类别,因为它不再使用。 [hannosch]

1.1.1-final - 2006-06-08

  • 将两个logging.PROBLEM更改为logging.WARNING。PROBLEM级别仅为zLOG。 [hannosch]

1.1.0-final - 2006-06-03

  • 将TextIndexNG3添加到索引列表中。 [ajung]

  • 将相册视图的CSS规则移动到Plone的public.css中,而不是将其内联在模板中。这样就可以覆盖它们。这解决了http://dev.plone.org/plone/ticket/4765。 [hannosch]

  • 通过Bader的补丁,使ATTopic queryCatalog正确支持b_size。修复了http://dev.plone.org/plone/ticket/5526 [alecm]

  • 删除了未使用的locales文件夹。翻译文件现在是PloneTranslation产品的部分。 [hannosch]

  • 通过WebDAV上传HTML现在支持读取标签作为新内容项的标题。 <a href="http://dev.plone.org/plone/ticket/4877" rel="nofollow">http://dev.plone.org/plone/ticket/4877</a> [rocky]</p></li> <li><p>为使用mx.Tidy时确定字符集添加了半智能嗅探。这解决了<a href="http://dev.plone.org/plone/ticket/5006" rel="nofollow">http://dev.plone.org/plone/ticket/5006</a>。 [rocky]</p></li> <li><p>事件URL字段中的内部链接不起作用。这解决了<a href="http://dev.plone.org/plone/ticket/5004" rel="nofollow">http://dev.plone.org/plone/ticket/5004</a> [hannosch]</p></li> <li><p>对iCal/vCal导出进行了各种修复(感谢Steve提供的补丁)</p> <blockquote> <ul class="simple"> <li><p>时区问题</p></li> <li><p>折叠超过75个八进制字符的行(遵循RFC)</p></li> <li><p>转义逗号、冒号和分号(遵循RFC)</p></li> <li><p>添加URL和CONTACT字段</p></li> </ul> </blockquote> <p>这解决了<a href="http://dev.plone.org/plone/ticket/4512" rel="nofollow">http://dev.plone.org/plone/ticket/4512</a>。 [hannosch]</p> </li> <li><p>事件列表中的EventType字段列出所有相关的事件类型,而不仅仅是其中一个。修改iCal输出逻辑以正确生成逗号分隔的事件类型。修复了<a href="http://dev.plone.org/plone/ticket/4881" rel="nofollow">http://dev.plone.org/plone/ticket/4881</a> [wichert]</p></li> <li><p>应用了来自Plone问题#5384的补丁,以对iCal和vCal输出执行正确的UTC转换。添加了测试。修复了#5384。 [alecm]</p></li> <li><p>使用Zope 3接口进行约束类型和浏览器默认值。依赖于CMFDynamicViewFTI主干和Plone 2.5分支的更改。 [optildue]</p></li> <li><p>使HistoryAwareMixin成为Archetypes ATHistoryAwareMixin的子类,它是archetypes的可用历史感知实现。 [mj]</p></li> <li><p>添加了z3模块和BBB(Ploneboard)的别名。 [alecm]</p></li> <li><p>更新thirdparty/icalendar到版本iCalendar-0.11。删除了codespeak SVN的svn:external。这会产生副作用,即消除Zope 2.9测试运行器中令人讨厌的测试失败,即使在这种情况下icalendar测试既不可导入也不通过。 [stefan]</p></li> </ul> </section> <section id="beta1"> <h3>1.1.0-beta1</h3> <ul class="simple"> <li><p>将ftests集成到正常测试中。删除了对Archetypes测试的依赖。 [hannosch]</p></li> <li><p>更新事务导入,删除子事务使用,到处使用python logger,其他与弃用相关的清理,空格清理。 [alecm]</p></li> <li><p>为eventType使用KeywordWidget。 [fschulze]</p></li> <li><p>新闻条目和事件类型的正文现在可以为空。 [fschulze]</p></li> </ul> </section> <section id="alpha2-2006-02-22"> <h3>1.1.0-alpha2 - 2006-02-22</h3> <ul class="simple"> <li><p>将z3接口重组到接口包中,创建了一套完整的z3接口,以及这些接口的测试。[jfroche, russf]</p></li> <li><p>增加了一些适配器和视图,可以将文件夹和文档(以及其他类型,根据额外的配置)导出为zip文件。[jfroche, russf]</p></li> </ul> </section> <section id="alpha1-2006-01-26"> <h3>1.1.0-alpha1 - 2006-01-26</h3> <ul class="simple"> <li><p>通过更改对cmfcore.permissions的引用和删除format_stx的使用,使主分支与cmf > 1.5兼容。[k_vertigo, hannosch]</p></li> </ul> </section> <section id="final-unreleased"> <h3>1.0.6-final - 未发布</h3> <ul class="simple"> <li><p>禁用了在智能文件夹配置屏幕上更改索引和元数据名称和描述的可能性。将这些内容与浏览器设置为非英语的区域设置保存将破坏所有这些文本的国际化。这解决了<a href="http://dev.plone.org/plone/ticket/5612" rel="nofollow">http://dev.plone.org/plone/ticket/5612</a>。[hannosch]</p></li> <li><p>清理了一些索引和元数据友好的名称和描述。[hannosch]</p></li> <li><p>将索引友好名称的索引ID更改为与getId索引相同的名称。[hannosch]</p></li> <li><p>我们不再翻译目录和元数据ID。从配置屏幕中删除了i18n标记。[hannosch]</p></li> </ul> </section> <section id="final-2006-06-03-1"> <h3>1.0.5-final - 2006-06-03</h3> <ul class="simple"> <li><p>通过Bader的补丁,使ATTopic queryCatalog正确支持b_size。修复了<a href="http://dev.plone.org/plone/ticket/5526" rel="nofollow">http://dev.plone.org/plone/ticket/5526</a> [alecm]</p></li> <li><p>将TextIndexNG3添加到索引列表中。 [ajung]</p></li> </ul> </section> <section id="final-2006-05-17"> <h3>1.0.4-final - 2006-05-17</h3> <ul class="simple"> <li><p>将ftests合并到单元测试中。这种区分是任意性的。[stefan]</p></li> <li><p>删除了未使用的locales文件夹。翻译文件现在是PloneTranslation产品的部分。 [hannosch]</p></li> <li><p>通过WebDAV上传HTML现在支持读取<title>标签作为新内容项的标题。 <a href="http://dev.plone.org/plone/ticket/4877" rel="nofollow">http://dev.plone.org/plone/ticket/4877</a> [rocky]</p></li> <li><p>为使用mx.Tidy时确定字符集添加了半智能嗅探。这解决了<a href="http://dev.plone.org/plone/ticket/5006" rel="nofollow">http://dev.plone.org/plone/ticket/5006</a>。[rocky]</p></li> <li><p>事件URL字段中的内部链接不起作用。这解决了<a href="http://dev.plone.org/plone/ticket/5004" rel="nofollow">http://dev.plone.org/plone/ticket/5004</a> [hannosch]</p></li> <li><p>事件列表中的EventType字段列出所有相关的事件类型,而不仅仅是其中一个。修改iCal输出逻辑以正确生成逗号分隔的事件类型。修复了<a href="http://dev.plone.org/plone/ticket/4881" rel="nofollow">http://dev.plone.org/plone/ticket/4881</a> [wichert]</p></li> <li><p>更新thirdparty/icalendar到版本iCalendar-0.11。删除了codespeak SVN的svn:external。这会产生副作用,即消除Zope 2.9测试运行器中令人讨厌的测试失败,即使在这种情况下icalendar测试既不可导入也不通过。 [stefan]</p></li> <li><p>使manage_afterPUT和manage_afterMKCOL使用PATH_INFO获取原始ID,以便在标题中使用,因此在WebDAV名称混淆环境中,标题将被设置为原始文件名。[sidnei]</p></li> <li><p>添加了ATFolder和ATBTreeFolder MKCOL的测试。[sidnei]</p></li> <li><p>修改getLocallyAllowedTypes和getImmediatelyAddableTypes以接受一个上下文,其中类型创建将被测试。这用于确定用户是否可以在当前上下文中而不是在父文件夹中创建类型。<a href="http://dev.plone.org/plone/ticket/5255" rel="nofollow">http://dev.plone.org/plone/ticket/5255</a>。[wichert]</p></li> </ul> </section> <section id="final-2006-01-20"> <h3>1.0.3-final - 2006-01-20</h3> <ul class="simple"> <li><p>修复了IE中缩略图视图中的非可点击缩略图。<a href="http://dev.plone.org/plone/ticket/5119" rel="nofollow">http://dev.plone.org/plone/ticket/5119</a>。[hannosch]</p></li> </ul> </section> <section id="final-2006-01-03"> <h3>1.0.2-final - 2006-01-03</h3> <ul class="simple"> <li><p>修复了#5028:constraintypes.py在与PortalFactory获取类型时不正确。[panjunyong]</p></li> <li><p>修复了缩略图视图中的样式。[spliter]</p></li> <li><p>content/events.py:使事件类型查找尊重动态类型。[raphael]</p></li> <li><p>get_size()中不返回“n/a”。这修复了Plone的#5030。[nouri]</p></li> <li><p>修复了#5026:设置ZCatalog排序限制会干扰结果分批。仅在禁用分批时使用sort_limit优化。<a href="http://dev.plone.org/plone/ticket/5026" rel="nofollow">http://dev.plone.org/plone/ticket/5026</a>。[alecm]</p></li> <li><p>修复了#4567:添加了portal_atct方法来修复具有空portal_type的CMF对象的portal_type,因为这些对象被错误地实例化。这种情况会导致迁移失败。该方法在类型迁移表单中可用,并在安装时自动运行。<a href="http://dev.plone.org/plone/ticket/4567" rel="nofollow">http://dev.plone.org/plone/ticket/4567</a>。[alecm]</p></li> <li><p>修复了#4937:从文本索引中删除了列表标准,因为它没有意义,必须显式使用AND和OR。[alecm]</p></li> <li><p>为#4865添加了迁移以修复现有实例的语法。[alecm]</p></li> <li><p>使索引类型映射的标准更加合理。[alecm]</p></li> <li><p>修复了#4915:带有路径标准的智能文件夹在未索引时由于部分引用支持而抛出错误。<a href="http://dev.plone.org/plone/ticket/4915" rel="nofollow">http://dev.plone.org/plone/ticket/4915</a>。[alecm]</p></li> <li><p>将And/Or运算符添加到选择标准。[alecm]</p></li> <li><p>修复了#4590:如果子文件夹与父文件夹类型相同,则子文件夹将继承所选布局。[alecm]</p></li> <li><p>修复了#4512 - vCal导出与Outlook不兼容。<a href="http://dev.plone.org/plone/ticket/4512" rel="nofollow">http://dev.plone.org/plone/ticket/4512</a>。[hannosch]</p></li> <li><p>如果可用,则使用Marshall产品中的ControlledMarshaller。回退到现有的marshaller。[sidnei]</p></li> <li><p>默认在ATTopic、ATFolder和ATBTreeFolder上启用 __dav_marshall__。[sidnei]</p></li> <li><p>修复了 #4572 和 #4909 - 使用 kupu 与 mxTidy 一起使用时的 Unicode 问题。[hannosch]</p></li> <li><p>修复了 #4865 - 位置条件中的拼写错误。[hannosch]</p></li> <li><p>在无效的 mimetypes 上,ATFile 的 getIcon 方法不再抛出异常,而是生成日志条目。这应该最小化一些迁移问题或至少告诉具有无效 mimetypes 的确切对象。这应该修复 <a href="http://plone.org/collector/4979" rel="nofollow">http://plone.org/collector/4979</a>。[hannosch]</p></li> <li><p>纠正了一些错误的安全设置。[hannosch]</p></li> <li><p>代码清理,移除大量未使用的导入语句。[hannosch]</p></li> <li><p>修复了与 PathCriterion 相关的两个问题。它使用深度 0 来获取子文件夹,正确的参数是深度 -1。此外,为了正确处理它持有的引用,它自身必须在 UID 目录中编目,并且其引用必须编目。[alecm]</p></li> <li><p>修复了由于主题在 initializeArchetype 中未检查订阅状态而导致架构体模式更新失败的问题。[alecm]</p></li> <li><p>为文件夹类型添加了缺失的备用视图。[alecm]</p></li> </ul> </section> <section id="final-2005-10-13"> <h3>1.0.1-final - 2005-10-13</h3> <ul class="simple"> <li><p>修复了 <a href="http://plone.org/collector/4709" rel="nofollow">http://plone.org/collector/4709</a> __bobo_traverse__ 不需要或不需要一个 RESPONSE 参数。[alecm]</p></li> <li><p>修复了 <a href="http://plone.org/collector/4734" rel="nofollow">http://plone.org/collector/4734</a> 在 bobo_traverse 方法中检查权限通常是一个坏主意,尤其是检查不存在的权限,特别是如果你然后尝试抛出一个你实际上没有导入的异常。[alecm]</p></li> <li><p>修复了两个小的 i18n 默认文本不一致问题。[hannosch]</p></li> </ul> </section> <section id="final-2005-09-05"> <h3>1.0.0-final - 2005-09-05</h3> <ul class="simple"> <li><p>打包了 1.0.0 最终版本,向 Christian Heimes 致敬,他已经从我们的雷达上消失。我们想念你,伙计。[stefan]</p></li> <li><p>使迁移对由 manage_afterAdd 或类似操作自动创建的内容导致的冲突 id 更有容忍度。修复 <a href="http://plone.org/collector/4468" rel="nofollow">http://plone.org/collector/4468</a>。[alecm]</p></li> <li><p>根据 limi 的要求,将“排除从导航中”复选框移回属性选项卡,在文件夹对象上。[alecm]</p></li> <li><p>修复了两个智能文件夹问题: <a href="http://plone.org/collector/4594" rel="nofollow">http://plone.org/collector/4594</a> 现在我们对错误的限制设置失败时能够优雅地失败,并且 <a href="http://plone.org/collector/4601" rel="nofollow">http://plone.org/collector/4601</a> 添加了显示/隐藏所有链接到元数据控制面板。[alecm]</p></li> <li><p>将主题索引/元数据标题更改为关键字,并添加了适当的描述。[alecm]</p></li> </ul> </section> <section id="rc5-2005-08-18"> <h3>1.0.0-rc5 - 2005-08-18</h3> <ul class="simple"> <li><p>通过更新 modifySelectList.js 来修复 <a href="http://plone.org/collector/4429" rel="nofollow">http://plone.org/collector/4429</a> 以处理 IE 缺陷。[alecm]</p></li> <li><p>如果文件是文本/- mimetypes,则将其显示为内联文件 - 多亏了 LaurenceRowe 的补丁。[alecm]</p></li> <li><p>修复了 <a href="http://plone.org/collector/4448" rel="nofollow">http://plone.org/collector/4448</a> 智能文件夹的准则编辑表单中的索引标题未翻译 [hannosch]</p></li> </ul> </section> <section id="rc4-2005-08-09"> <h3>1.0.0-rc4 - 2005-08-09</h3> <ul class="simple"> <li><p>在 ATCTOrderedFolder 和 ATCTBTreeFolder 中实现了自定义 PUT_factory,因为从 ATCTFolderMixin 继承它会在 LinguaPlone 介入时中断。[stefan]</p></li> <li><p>默认在主题上启用订阅。[alecm]</p></li> <li><p>当智能文件夹的父项也是智能文件夹时,才显示继承准则字段。[alecm]</p></li> <li><p>添加了对 listSubTopics 的权限检查。[alecm]</p></li> <li><p>由于 CMF 中的动作类别已更改,删除了智能文件夹的订阅动作。[alecm]</p></li> <li><p>修复了子主题列表中的错误。[alecm]</p></li> </ul> </section> <section id="rc3-2005-08-01"> <h3>1.0.0-rc3 - 2005-08-01</h3> <ul class="simple"> <li><p>将 manage_copyObjects 的权限更改为复制或移动,仅从 Plone 的 PortalFolder 复制。[panjunyong]</p></li> <li><p>添加了修复 CMF 基于对象(从未迁移站点导入或从迁移站点复制)的门户类型名称的方法。该修复方法可在类型迁移选项卡中使用。[tiran]</p></li> <li><p>添加了删除已弃用的外部方法的代码。[tiran]</p></li> <li><p>修复了 exif 库模块别名代码中的错误。修复 <a href="http://plone.org/collector/4352" rel="nofollow">http://plone.org/collector/4352</a> - 上传某些图像会导致 ATCT 解冻错误 [tiran]</p></li> <li><p>通过在 portal_atct 工具中使用新的属性,向用户公开一些高级迁移选项。[tiran]</p></li> <li><p>增强并更新了文档,主要是门户_atct工具中的功能文档。[tiran]</p></li> <li><p>将迁移相关代码从tool/atct.py移至tool/migration.py。工具类变得太长。[tiran]</p></li> </ul> </section> <section id="rc2-2005-07-28"> <h3>1.0.0-rc2 - 2005-07-28</h3> <ul class="simple"> <li><p>更新了需求,要求CMFDynamicViewFTI 1.0.0和ATRefBrowserWidget 1.1。[tiran]</p></li> <li><p>修复了配置加载代码中的错误。加载器必须在加载第一个配置文件后停止,或者配置文件被默认文件覆盖。[panjunyong]</p></li> <li><p>将可选参数添加到ATTopic.queryCatalog中,使其与getFolderContents兼容(可选分批处理,返回完整对象而不是brains)。使album_view兼容Smart Folders。[alecm]</p></li> <li><p>添加了在调整原始图像大小时修复EXIF问题的修复。现在在设置图像之前存储EXIF信息。[tiran]</p></li> <li><p>为几个模板添加了主宏,以便在讨论回复表单中使用时显示良好。[alecm]</p></li> <li><p>添加了针对损坏的WebDAV/FTP客户端(如Mac OS X Finder)的工作区。PUT_factory已修补,使用默认_PUT_factory,它创建标准Zope对象而不是CMF/AT内容对象。感谢Nate和ATAudio的想法。[tiran]</p></li> <li><p>修复了<a href="http://members.plone.org/collector/4321" rel="nofollow">http://members.plone.org/collector/4321</a>,这是由三个不同的错误引起的。1) CMF对象的初始重命名没有保留顺序,而是将对象移动到列表的末尾。2) 在迁移文件夹时,由于self.new在此点为None,所以总是失败,因此未尝试排序。3) 在遍历文件夹的子对象时,记录了位置,然后删除了对象,下一个对象现在与先前的对象在相同的位置,顺序丢失。现在有一个单独的循环在标记顺序后删除对象,从而保留了对象。[alecm]</p></li> <li><p>修复了ATFavorite中相对URL和CMF uid处理的一些小问题。[tiran]</p></li> <li><p>将AT和CMF uid迁移添加到迁移系统中。[tiran]</p></li> <li><p>修复了单元测试固定和ATFavorite单元测试。现在只有在真正需要时才以Manager身份运行测试。[tiran]</p></li> </ul> </section> <section id="rc1-2005-07-23"> <h3>1.0.0-rc1 - 2005-07-23</h3> <ul> <li><p>修复了版本解析中的错误,这导致门户_types消失。[alecm]</p></li> <li><p>默认启用swallowResizeExceptions并添加了警告,即原始图像调整大小在保存数据之前会破坏EXIF信息。[tiran]</p></li> <li><p>修复了ATTopic安全声明中的拼写错误。[tiran]</p></li> <li><p>修复了关键的迁移问题。本地添加的角色和本地更改的权限现在已迁移。还添加了单元测试以验证迁移。[tiran]</p></li> <li><p>清理单元测试和日志以减少噪音[tiran]</p></li> <li><p>从EXIF标签中删除了“MakerNote JPEGThumbnail”。某些相机可能会将缩略图存储在此标签中。[tiran]</p></li> <li><p>删除了未使用的自定义策略,包括单元测试。Plone 2.1总是安装ATCT。[tiran]</p></li> <li><p>修复了4330问题:ATCT迁移失败,无法将类型迁移到CMFDynamicViewFTI。迁移到新FTI是版本迁移的一部分。[tiran]</p></li> <li><p>添加了针对“(所选布局)”更改的迁移步骤和单元测试。[tiran]</p></li> <li><p>优化了getRawRelatedItems索引添加。在添加单个索引时,无需重新索引整个目录。[tiran]</p></li> <li><p>使“view”方法别名指向“(所选布局)”而不是“(默认视图)”。这确保了与之前行为的一致性,因此URL末尾的/view始终获取项目本身,忽略任何可能设置的默认页面。注意,'view' <em>操作</em>仍然指向'string:${object_url}',因此'view'选项卡以及'(默认)'目标仍然为类型除File和Image以外的类型获取'(动态视图)'(因此默认页面)。[optilude]</p></li> <li><p>为其他迁移器(如CMFPhoto和CMFPhotoAlbum)添加了migration/othermigrator.py。这些迁移器已编写,但尚未提供给最终用户。需要编写一些粘合代码。[tiran]</p></li> <li><p>将EXIF库移动到新目录thirdparty/。此目录应包含运行ATCT所需的所有第三方扩展。为此,首次添加了lib/。在大多数情况下,thirdparty/被添加到sys.path的位置三,即在Zope实例主目录和zope主目录之后。[tiran]</p></li> <li><p>移除了许多未使用的导入。[tiran]</p></li> <li><p>修复了<a href="http://plone.org/collector/4083" rel="nofollow">http://plone.org/collector/4083</a>对于atct_album_view.pt。[ender]</p></li> <li><p>通过使模板合理化修复了<a href="http://sf.net/tracker/?func=detail&atid=645337&aid=1215755&group_id=55262" rel="nofollow">http://sf.net/tracker/?func=detail&atid=645337&aid=1215755&group_id=55262</a>。[alecm]</p></li> <li><p>修复了ATImage的get_size。它应仅返回原始图像的文件大小。[tiran]</p></li> <li><p>对基于文件夹的内容类型的HEAD修复。[tiran]</p></li> <li><p>修复了formatCatalogMetadata.py中的权限问题。[alecm]</p></li> <li><p>ConstrainTypes默认应禁用,除非父对象与同一门户类型。[alecm]</p></li> <li><p>一般get_size修复。get_size()方法返回主字段的长度或对于文件夹返回1。[tiran]</p></li> <li><p>将尚未实现的URL上传功能从主代码中移除。[tiran]</p></li> <li><p>修复了constraintypes的allowedContentTypes和invokeFactory,使ENABLED模式在portal_type与父对象不同时也能工作。[panjunyong]</p></li> <li><p>添加了http访问功能和http测试。[tiran]</p></li> <li><p>向Topic添加了HEAD()方法。如果主题至少有一个标准或可以获取查询200 OK,则返回404 NotFound。[tiran]</p></li> <li><p>修复了[Plone] 4295/ 1请求“ATCT和相关项目字段”。[tiran]</p></li> <li><p>为[ 1229206 ] 2.0.5 > 2.1迁移失败添加了补丁。失败的重新排序大多无害。[tiran]</p></li> <li><p>为EXIF MakerNote错误添加了补丁。一些相机的确是<em>真的</em>损坏了。最好是不要记录笔记,也不要记录任何EXIF信息。[tiran]</p></li> <li><p>修复并改进了cleanupFilename()的最近更改。您不能在不保持向后兼容性的情况下删除功能,并且新功能必须无懈可击![tiran]</p></li> <li><p>清理了多个Topic文件夹_contents选项卡。[alecm]</p></li> <li><p>重新添加了用于ATCTFileContent的单独_cleanupFilename方法,以使其更适合打补丁。[panjunyong]</p></li> <li><p>修复了<a href="http://plone.org/collector/4218" rel="nofollow">http://plone.org/collector/4218</a> ATCT现在使用来自PloneTool的normalizeString。[hannosch]</p></li> <li><p>修复了<a href="http://plone.org/collector/4170" rel="nofollow">http://plone.org/collector/4170</a> 链接检查疯狂,[ 1197068 ] [hannosch]</p></li> <li><p>使constraintypes的默认ACQUIRE模式与portal_factory一起工作。[panjunyong]</p></li> <li><p>添加了Five/Zope3接口桥。[tiran]</p></li> <li><p>默认禁用了text/x-python和text/plain-pre。如果需要它们,请自定义atcontenttypes.conf。[tiran]</p></li> <li><p>从文件夹对象中移除了relatedItems字段。[tiran]</p></li> <li><p>使文件和图像的下载选项卡不可见。[tiran]</p></li> <li><p>修复了ATImage中的__bobo_traverse__,安全检查是不必要的,并且匿名用户需要具有“查看”权限才能供任何人使用。[alecm]</p></li> <li><p>另一次迁移优化:向迁移系统添加了catalogpatch。该补丁正在更改portal_catalog.catalog_object和uncatalog_object。有关更多信息,请参阅迁移/catalogpatch.py。可以通过将use_catalog_patch=True传递给迁移函数来启用目录补丁。[tiran]</p></li> <li><p>修复了<a href="http://plone.org/collector/3060" rel="nofollow">http://plone.org/collector/3060</a>的最后部分。不要让缺少CMF类型使portal_atct.disableCMFTypes()崩溃。[alecm]</p></li> <li><dl class="simple"> <dt>增强迁移代码</dt> <dd><ul class="simple"> <li><p>CatalogWalkerWithLevel现在基于ExtendedPathIndex,并像CatalogWalker一样表现。[tiran]</p></li> <li><p>添加了walker参数,用于事务大小、完整事务和保存点。迁移系统可以使用ZODB保存点来回滚到合理的点。[tiran]</p></li> <li><p>迁移器也可以通过(src,dst)元类型进行注册。[tiran]</p></li> <li><p>新的函数migratePortalType()可以通过仅传递src和dst门户类型到函数来迁移单个内容类型。两个门户类型都必须在portal_types中注册,并且必须存在从src到dst元类型的迁移。[tiran]</p></li> </ul> </dd> </dl> <p>[tiran]</p> </li> <li><p>如果传入的列表为空,则不要在_catalogTypesByMetatype中列出所有类型。[jenner, alecm]</p></li> <li><p>修改模板以使用来自plone的新的pretty_title_or_id功能。[alecm]</p></li> <li><p>让atct_album_view像其他列表一样使用目录,并重用folder_listing中的宏。[alecm]</p></li> <li><p>再次实现Zope2.7兼容性:用from Products.CMFPlone import transaction替换import transaction。[hannosch]</p></li> <li><p>进行了一些小的国际化调整。[hannosch]</p></li> <li><p>更新了CMF 1.5的INSTALL.txt文件,以支持Zope 2.8及以上版本。[tiran]</p></li> <li><dl class="simple"> <dt>CMF 1.5 / Zope2.8兼容性</dt> <dd><ul class="simple"> <li><p>将CMFCorePermissions替换为permissions</p></li> <li><p>将get_transaction()替换为transaction</p></li> <li><p>从TooolInit()中移除product参数</p></li> <li><p>logging.getLogger()和LOG.debug()等。</p></li> </ul> </dd> </dl> <p>[tiran]</p> </li> <li><p>在迁移过程中大大增强了日志记录。[tiran]</p></li> <li><p>分块迁移到更小的部分。待续![tiran]</p></li> <li><p>修复了finalize迁移,使其不会重新初始化工作流状态。为工作流、local_role和所有者迁移添加了单元测试。[alecm]</p></li> <li><p>使用来自DynamicViewFTI的迁移代码,而不是自己的FTI迁移代码。[tiran]</p></li> <li><p>将ATCTImageTransform类移动到lib。[tiran]</p></li> <li><p>添加了PIL质量和调整大小的算法的配置选项。[tiran]</p></li> <li><p>在FTI->FTI与动态视图迁移中修复了一些错误。[rafrombrc]</p></li> <li><p>将max_size配置选项重命名为max_file_size。添加max_image_dimension配置选项以设置图像原始大小的最大边框。[tiran]</p></li> <li><p>添加了一些额外的i18n标记。[hannosch]</p></li> </ul> </section> <section id="snapshot-2005-07-05"> <h3>2005-07-05快照</h3> <ul class="simple"> <li><p>首次安装时不要运行版本迁移。应在类型迁移后运行它。[tiran]</p></li> <li><p>在类型迁移后禁用了完整的目录更新。如果需要,人们可以在迁移后执行它。[tiran]</p></li> <li><p>将迁移添加到DynamicFTIs。[fschulze]</p></li> <li><p>修改了ATCTOrderedFolder上的index_html方法,以优雅地处理获取index_html属性返回None的情况。[rafrombrc]</p></li> <li><p>为智能文件夹添加了聚合支持。[alecm]</p></li> <li><p>修复了CMF 1.5风格的browser-default代码的别名和动作,使用CMFDynamicViewFTI。[optilude]</p></li> <li><p>与browser默认相关的某些代码已移动到CMFDynamicViewFTI。所有新的ATCT版本现在都依赖于该产品。[tiran]</p></li> <li><p>修复了Windows上的某些测试。图像文件必须用'rb'打开。[hannosch]</p></li> <li><p>移动了一些字段。excludeFromNav在属性表中(除了folderish项目),而讨论在主表中(除了folderish和Favorite)。[tiran]</p></li> <li><p>添加了finalizeATCTSchema函数以正确放置字段。[tiran]</p></li> <li><p>修复了<a href="http://plone.org/collector/4127" rel="nofollow">http://plone.org/collector/4127</a>在listSubtopics上的权限不正确。[alecm]</p></li> <li><p>添加了更改主题配置小部件名称的迁移。[alecm]</p></li> <li><p>修复了<a href="http://members.plone.org/collector/4076" rel="nofollow">http://members.plone.org/collector/4076</a>,将exclude_from_nav添加到所有内容架构中。[optilude]</p></li> <li><p>修复了迁移目录化非内容对象的问题。现在在迁移步骤之前检查meta_type和portal_type。[alecm]</p></li> <li><p>修复了<a href="http://members.plone.org/collector/3804" rel="nofollow">http://members.plone.org/collector/3804</a>,当适用时使用check_id进行文件名验证。[alecm]</p></li> <li><p>为relatedItems添加了索引,并将迁移安装到已安装的实例中。[alecm]</p></li> <li><p>当工具发现新的索引时,它将检查配置条目是否可用,这样如果需要,它可以自动启用,并最大限度地减少迁移的需要。[alecm]</p></li> <li><p>默认情况下禁用所有索引表单中的索引,只有具有默认值的索引才会自动启用。这防止了像ZWiki这样的东西破坏我们漂亮的编辑表单。它们可以在工具中启用和美化。[alecm]</p></li> <li><p>春季i18n清理:- 将i18n:domain从plone更改为atcontenttypes - 添加缺少的i18n标记 - 修复页面模板XHTML错误 - 重新缩进和清理空白 [deo]</p></li> <li><p>制作了 portal_type、selection 和 reference 标准的合理排序列表。[alecm]</p></li> <li><p>更新了 folderlisting 动作,使其能够正确地与 optiludes 新的浏览器默认行为配合。[alecm]</p></li> <li><p>在 Topic 自定义视图中实现了日期本地化。[alecm]</p></li> </ul> </section> <section id="alpha2"> <h3>1.0-alpha2</h3> <ul> <li><p>禁用了历史标签页。[tiran]</p></li> <li><p>修复了 exif 支持中的一个小的错误。process_file 方法的签名已更改。[tiran]</p></li> <li><p>在目录中捕获第三方索引类型的 KeyError。修复了列表标准的错误导入。修复了我破坏的一些单元测试,并添加了一些(CriterionRegistry)作为补偿。[alecm]</p></li> <li><p>更新了 exif 库。[russf]</p></li> <li><p>使用 ZConfig 为智能文件夹添加了索引/元数据友好名称、描述和标准限制的默认值。添加了无标准索引的能力(对于仅排序标准很有用)。使标准类型的描述更加合理(希望这不会破坏现有的翻译,但当前名称非常糟糕)。还添加了一些缺失的标准相关字符串到 manual.pot。[alecm]</p></li> <li><p>为 topics 添加了 getCriteriaUniqueWidgetAttr 方法,以便在编辑表单中集中编译如 'helper_js' 之类的项。[alecm]</p></li> <li><p>在 base.py 中使用 getMutator(self) 替换了 mutator(self),修复了 [ 1196809 ] 号错误。[stefan]</p></li> <li><p>为 ExtendedPathIndex 添加了新的路径标准,允许用户通过网站地图选择搜索路径。现在使用可爱的 ATReferenceBrowserWidget。[alecm]</p></li> <li><p>在迁移过程中将 Topic 添加到允许的子对象列表中。之前缺失是因为类允许_content_types 属性被 CMFTopics 覆盖了。[alecm]</p></li> <li><p>BrowserDefaultMixin.getAvailableLayouts() 现在返回一个元组列表而不是 DisplayList。这是 Plone 接口更改所要求的。[optilude]</p></li> <li><p>添加了由传奇人物 Vidar Anderson 制作的 vCal/iCal 导出和图像旋转/翻转的酷图标。[blacktar, tiran]</p></li> <li><p>将 AttributeStorage 替换为 AnnotationStorage 用于 Document:text、File:file、Image:image、Event:text 和 NewsItem:text、image。这需要 Archetypes 1.3.5。[tiran]</p></li> <li><p>添加了新的“当前作者”标准,当与 Creator 索引一起使用时,获取由当前登录用户创建的所有对象。还修复了一些阻止普通用户查看已发布主题的权限问题。修复了问题 [ 1176355 ]。[alecm]</p></li> <li><p>修改了 processForm 以检查 id 冲突,如果可用则使用 check_ids,否则只使用 <cite>id in parent</cite>。此外,提交子事务以使 portal_factory 之后的重命名工作。[alecm]</p></li> <li><p>添加了主要来自 plone 的版本迁移系统。在 Plone 2.1 迁移期间自动运行,以将 ATCT >= 0.2 开始的 plone 2.0 网站更新到最新状态,包括更改和注销 ATTopic 标准以及迁移 CMF Topics。[alecm]</p></li> <li><p>修复了在合并期间引入的 Topic 迁移中的一个小错误。[alecm]</p></li> <li><p>使 topic.addCriterion() 返回新添加的标准对象。之前没有这样做让 Python 产品开发者感到困难。[alecm]</p></li> <li><p>修复了 bug #3773(<a href="http://plone.org/collector/3773" rel="nofollow">http://plone.org/collector/3773</a>)验证空/不存在的文件/图像的检查。[alecm]</p></li> <li><p>更改了日期标准的操作,使每个字段的含义更加清晰。现在可以使用“超过 2 周”之类的查询,并且将按预期行为。这导致导入 CMFTopics 时出现一些不一致。现在形式为“min” “x 天” “ago”的查询现在是“小于 x 天 ago”,这是一个具有现在上限的 min:max 查询。同样适用于“max” “x 天” “ahead”,所有其他查询应该非常相似(除了一个 earliestTime() 之外,这在有意义的场合)。这种不一致性不应该太重要,因为 CMF 日期标准是完全无法理解的。还更改了一些标准描述的字符串,以保持一致性。修复了 bug [ 1181418 ]。感谢 Dean Jackson 提出此错误并设计了一个合理可用的用户界面。[alecm]</p></li> <li><p>使门户类型(portal_types)的准则与类型(Types)或门户类型(portal_types)索引正常工作。在TopicTool中禁用了类型限制,现在使用Plone 2.1的新搜索黑名单来限制类型(site_properties.unfriendly_types)。这创建了对Plone 2.1的依赖。还对atct_subtopic_form进行了更改,现在它使用来自Plone 2.1的宏,这解决了问题[ 1164541 ]。 [alecm]</p></li> <li><p>重新设计用于准则的链接选择列表,以使用包含在modifySelectList.js中的自定义XMLHTTPRequest代码。我最终会将它转换为AT MasterSelectWidget,用于两个链接选择列表的主选择。 [alecm]</p></li> <li><p>为话题添加并启用配置单元,并为准则添加单元测试。修复了TopicsTool中的持久性错误和在准则列表中的排序错误。将Missing.MV添加为布尔准则的可能错误值。 [alecm]</p></li> <li><p>从config.py和ZConfig模式中删除了一些配置变量。 [tiran]</p></li> <li><p>将外部类型从ATCT移动到新的ATCTAddons产品。 [tiran]</p></li> <li><p>当使用MS IE上传文件时,从ATFile的标题中删除文件名路径。 [panjunyong]</p></li> <li><p>从旧的plone svn仓库合并uiteam-plip73-sanitize-short-names:diff <a href="http://svn.plone.org/svn/plone/ATContentTypes/branches/1.0@6168" rel="nofollow">http://svn.plone.org/svn/plone/ATContentTypes/branches/1.0@6168</a> <a href="http://svn.plone.org/svn/plone/ATContentTypes/branches/uiteam-plip73-sanitize-short-names" rel="nofollow">http://svn.plone.org/svn/plone/ATContentTypes/branches/uiteam-plip73-sanitize-short-names</a> [tiran]</p></li> <li><p>添加了标志以确定内容对象是否已成功进行了初始编辑。使用此标志以及默认命名的检测,在初始编辑时重命名对象。 [alecm]</p></li> <li><p>将主题工具分支合并到1.0 XXX:在此插入历史记录。 [tiran]</p></li> <li><p>重构ConstrainTypesMixin以支持PLIP 78</p> <blockquote> <ul class="simple"> <li><p>DISABLED表示使用portal_types中的标准允许类型</p></li> <li><p>ENABLED表示使用设置的限制</p></li> <li><p>ACQUIRE表示使用与父级相同门户类型的父级类型,否则与ENABLED相同(从任何内容类型继承没有意义)</p></li> <li><p>immediatelyAddableTypes字段 - 用于在“添加”菜单中显示的允许类型的子集</p></li> <li><p>关闭并删除禁用约束类型标志</p></li> </ul> </blockquote> <p>[tiran]</p> </li> <li><p>为所有内容启用TemplateMixin - 现在通过“显示”菜单直接在Plone中支持。 [tiran]</p></li> <li><p>合并plip #3分支:自动排序/排序到1.0分支。功能/更改</p> <blockquote> <ul class="simple"> <li><p>为所有类型添加getObjPositioninParent和getObjSize作为基于目录的文件夹列表的辅助方法</p></li> <li><p>向ATCT添加AutoSortSupport和AutoOrderSupport。AutoSortSupport用于基于目录的文件夹列表,AutoOrderSupport还根据OrderedFolder添加一些自动排序</p></li> <li><p>从AutoOrderSupport+AutoSortSupport派生ATFolder,仅从AutoSortSupport派生ATBTreeFolder</p></li> </ul> </blockquote> <p>[tiran]</p> </li> <li><p>ATEvent:从可搜索文本中删除结束日期和开始日期。 [tiran]</p></li> <li><p>实现了ATCT的PLIP #2:使用ZConfig配置ATContentTypes的类型和功能。 [tiran]</p></li> <li><p>将文档、事件和新闻条目的默认输出更改为text/x-safe-html。X-safe-html使用CMFDefault.utils.scrubHTML删除有害标签,如script。 [tiran]</p></li> <li><p>合并tiran-notypesdir-branch。它重命名并移动了许多模块。所有内容类型都在content/包中,准则被移动到criteria/,工具到tool/,以及像history aware这样的模块到lib/。此外,所有模块和包都被重命名为了小写。 [tiran]</p></li> <li><p>为ATEvent的文本字段添加了历史支持,就像文档和新闻条目。 [tiran]</p></li> <li><p>更新README.txt和INSTALL.txt:新版本,从ATCT 0.2更新和一些其他信息。 [tiran]</p></li> <li><p>更改ATNewsItem.EditableBody()的权限为ModifyPortalContent。 [tiran]</p></li> <li><p>向portal_atct工具的ZMI视图添加了一些选项卡:概述、缩放迁移和重新编目。现在使用工具而不是外部方法来使用这些方法。 [tiran]</p></li> <li><p>恢复Plone 2.0.x兼容性。 [deo]</p></li> <li><p>在约束类型列表中不显示PloneSite、TempFolder和准则。 [tiran]</p></li> <li><p>禁用了ATEvent的电话字段验证器。有些人报告说他们遇到了问题,因为每个国家的数字,尤其是分机号的处理方式都不同。也请参阅[ 974102 ] 无法在电话号码字段中输入电话分机号。[tiran]</p></li> <li><p>将XXX报告工具添加到ATCT。这主要是从Zope3 XXX工具复制的。注意:XXX是一个标记,表示“这里有问题”。这不是色情。 :) 工具还报告TODO和BBB(为了向后兼容)。[tiran]</p></li> <li><p>修复了[ 1049018 ] Link上的URL字段不允许mailto。还添加了isMailto验证器进行验证,并增强了isUrl验证器以支持更多协议。[tiran]</p></li> <li><p>修复了[ 1114696 ] reStructuredText的正确MIME类型,以及[ 1122135 ] ATCT编辑未保留文本类型选择,不是ATCT错误,将text/restructured重命名为text/x-rst。[tiran]</p></li> <li><p>修复了[ 1158950 ] ATTopic默认视图错误。此修复需要CMFPlone 2.1的SVN更新。[tiran]</p></li> <li><p>将ATFile和ATImage的外部存储基于的变体移动到单独的模块。除非存储工作良好并且类型经过测试,否则它们不会出现在官方分支中。[tiran]</p></li> <li><p>添加了基于CMFPhotoAlbum模板的“atct_album_view”和“atct_album_image”模板。[tiran]</p></li> <li><p>用新的权限替换了权限配置变量。</p> <blockquote> <ul class="simple"> <li><p>修改ConstrainTypes用于约束类型混合。</p></li> <li><p>修改ViewTemplate用于模板混合。</p></li> <li><p>ViewHistory用于历史混合。</p></li> <li><p>UploadViaURL用于新的通过URL上传功能。</p></li> </ul> </blockquote> <p>默认情况下,权限仅限于管理员。[tiran]</p> </li> <li><p>添加了新的通过URL上传功能,用于通过URL上传文件或图像。文件通过urllib2从远程服务器下载。由于此功能尚未完成,因此默认情况下不可用。[tiran]</p></li> <li><p>根据CMFPhoto代码实现了针对ATImage的一些非常有用的功能。新功能包括</p> <blockquote> <ul class="simple"> <li><p>使用Gene Cash的exif库从图像中获取EXIF信息</p></li> <li><p>从EXIF数据中获取图像方向(旋转和镜像)</p></li> <li><p>使用PIL库旋转和翻转图像,包括一个新标签页</p></li> </ul> </blockquote> <p>[tiran]</p> <p>CMFPhoto的EXIF和转换代码是由包括Oliver Baltzer和我在内的几个人编写的。我无法确定其他编码者。如果您想为您的出色工作获得认可,请给我发电子邮件![tiran]</p> </li> </ul> </section> <section id="alpha1"> <h3>1.0-alpha1</h3> <ul class="simple"> <li><p>重构了迁移套件的很大一部分。更多内容将在以后提供。[tiran]</p></li> <li><p>修复了[ 1026616 ] 动作未迁移。如果cmf fti中不存在具有该id的动作,则从cmf fti迁移动作到atct fti。[tiran]</p></li> <li><p>将筛选内容类型、允许的内容类型和允许的讨论从cmf fti迁移到atct fti。[tiran]</p></li> <li><p>更新了要求到CMFQuickinstaller 1.5/cvs。[tiran]</p></li> <li><p>开始移除switch*和migrate*外部方法。[tiran]</p></li> <li><p>修复了ATFolder的默认视图。再次指向视图会导致循环并引发难以调试的异常,因为TemplateMixin试图将其自身用作默认视图,这不起作用。[tiran]</p></li> <li><p>FTests:如果可用,则安装kupu和epoz。将功能测试套件移动到ftests/。[tiran]</p></li> <li><p>修复了[ 1157812 ] ival/vcal动作图标不可用。[tiran]</p></li> <li><p>修复了ATTopic以使用atct_edit,就像所有其他ATCT类型一样。[tiran]</p></li> <li><p>添加了ERRATA.txt,其中涵盖了已知问题。[tiran]</p></li> <li><p>添加了针对讨论的集成测试。[tiran]</p></li> <li><p>将主题迁移和标准增强以及ender主题分支的附加标准从端迁移。感谢Alec Mitchell为他的出色工作!新的标准是:ATSelectionCriterion、ATDateRangeCriterion、ATReferenceCriterion和ATBooleanCriterion。[allecm, tiran]</p></li> <li><p>更改了标准和ATTopic的架构名称,并删除了AT前缀。[tiran]</p></li> <li><p>为标准和ATTopic添加了单元测试。[allecm, tiran]</p></li> <li><p>在安装或重新安装时,如果LinguaPlone可用,则添加了翻译选项卡。[tiran]</p></li> <li><p>添加了200x200的迷你比例。[tiran]</p></li> <li><p>为视图和编辑模板添加了集成测试。[tiran]</p></li> <li><p>我对单元测试套件进行了重大更改。我还添加了更多的字段测试、一些重要的接口测试以及更干净、更好的测试基类。[tiran]</p></li> <li><p>准备ATFolder与TemplateMixin一起使用,使用通用的/view代替默认的/folder_listing进行即时查看。[yenzenz]</p></li> <li><p>更改了ConstrainTypes的混入方式:现在ATCT始终从ConstrainTypes类继承文件夹,并且模式始终在文件夹模式中。在此更改之前,人们无法依赖API。当该功能被禁用时,字段不会在模式中显示,重写的方法使用对默认方法的“快捷方式”。[tiran]</p></li> <li><p>将约束混入中的某些方法重命名为以_ct_开头,以获得干净的命名空间。[tiran]</p></li> <li><p>为NewsItem添加了标签方法以获取其图像。还将标题从TextField更改为StringField,因为它应只包含一小句或类似的内容。标题应用于新闻项图像的标题。[tiran]</p></li> <li><p>在运行单元测试时,所有功能(如约束混入和模板混入)都强制启用,以保持测试正常并测试所有情况下的所有功能。[tiran]</p></li> <li><p>将types/和types/criteria中的大怪物schemata.py拆分。模式与类型在相同的模块中。[tiran]</p></li> <li><p>添加了内容模块,其中包含所有重要类。[tiran]</p></li> <li><p>将所有<cite>from foo import *</cite>替换为显式导入。[tiran]</p></li> <li><p>使用了Ben的伟大Bricolite产品中的某些代码,以实现每个类型的添加权限。它允许细粒度的权限设置。[tiran]</p></li> <li><p>修复了bug [1154073] criterion_edit_form.cpt(.metadata)没有默认操作。准则编辑表单的默认操作是保存。[tiran]</p></li> <li><p>添加了portal_atct工具。新工具将用于新主题功能以及Plone控制面板。[tiran]</p></li> <li><p>界面geddon:将所有接口合并到单个文件中。[tiran]</p></li> <li><p>合并了limi的ui分支,该分支向ATEvent添加了文本字段,并向ATNewsItem添加了图像及其图像标题。[limi, tiran]</p></li> <li><p>向所有使用Danny的引用浏览器小部件的类型添加了相关项引用字段。ATReferenceBrowserWidget必须可用。<a href="http://svn.plone.org/archetypes/MoreFieldsAndWidgets/ATReferenceBrowserWidget" rel="nofollow">http://svn.plone.org/archetypes/MoreFieldsAndWidgets/ATReferenceBrowserWidget</a>。[tiran]</p></li> <li><p>删除了旧的debian/目录。我不再维护它,因此没有必要在CVS中保留它。[tiran]</p></li> <li><p>删除了QuotaSupport.py。它永远不会出现在ATCT的官方树中。[tiran]</p></li> <li><p>在迁移系统中引入了重大变化:ATCT类型的门户类型名称与CMF类型相同。CMF类型将在安装时重命名。[tiran]</p></li> <li><p>引入了基于ZConfig的配置。它将替换customconfig.py文件。[tiran]</p></li> </ul> </section> <section id="rc5-2005-02-26"> <h3>0.2.0-rc5 - 2005-02-26</h3> <ul class="simple"> <li><p>更新了要求到Zope 2.7.4+、Python 2.3.4+和AT 1.3.2-rc1+。[tiran]</p></li> <li><p>稍微清理了迁移套件,并增强了文档字符串。[tiran]</p></li> <li><p>用createTypeByName替换了globalAllow黑客,该函数不会进行安全检查,例如“该类型是否在文件夹中隐式或显式可添加”。它与PloneUtilities中我以前编写用于修复create member area方法的函数共享相同的代码库。[tiran]</p></li> <li><p>在迁移套件中增加了更好的回溯支持。[tiran]</p></li> <li><p>添加了可切换LinguaPlone在ATCT安装中安装的旋钮。[tiran]</p></li> <li><p>向所有ATCT类型添加了显式门户类型名称。[tiran]</p></li> <li><p>将newTypeFor重命名为_actc_newTypeFor。旧名称令人困惑。[tiran]</p></li> <li><p>添加了通过IHistoryAware访问最后一个编辑者名称的功能。[ctheune]</p></li> <li><p>在迁移遍历程序中修复了一个bug。不再跳过空文件夹。[panjunyong]</p></li> <li><p>在迁移套件中增加调试,以查找globalAllow中缺少类型的问题。[tiran]</p></li> <li><p>从HEAD端口移植atct_topic_view图标修复。[tiran]</p></li> <li><p>上传.pdf和.doc文件时不要创建ATDocuments。[batlogg]</p></li> <li><p>在文件夹迁移中遇到损坏的对象时恢复警告信息。[tiran]</p></li> <li><p>迁移时保留本地角色和创建者。[panjunyong]</p></li> <li><p>更新要求以兼容即将发布的AT 1.3.2版本和SVN。[tiran]</p></li> <li><p>向ATFile和ATImage添加了update_data和manage_edit兼容方法。[tiran]</p></li> <li><p>为[ 1095242 ] EditableBody在ATNewsItem中添加临时修复,它将保留在ATNewsItem中,直到Plone修复。[tiran]</p></li> <li><p>修复了[ 1075193 ] ATEvent中的无限递归。__cmp__钩子很久以前就修复了,但我忘记在这里提了。[tiran]</p></li> <li><p>修复了[ 1098347 ] validate_add_criterion.vpy有错误。文件是DOS编码的。[tiran]</p></li> <li><p>应用了[ 1104069 ] ATCT迁移补丁,解决了更多排序问题。[hahnfeld]</p></li> <li><p>atct_topic_view现在不再调用getObject(),性能略有提升。这也减轻了一些唤醒对象的压力。(Bug 1079030)[ctheune]</p></li> <li><p>将HTML设置为文档(和新闻条目)的默认内容类型。[ctheune]</p></li> <li><p>修复了[ 1080729 ] ATDocument.EditableText / setFormat的权限错误。[tiran]</p></li> <li><p>在迁移中使用StdoutStringIO,以便更详细地记录。[tiran]</p></li> <li><p>修复了atct_topcic_view:确保在引用属性之前存在对象。这通常发生在访问AccessContentsInfo权限有问题的情况下。[tesdal]</p></li> <li><p>从INSTALL.txt中移除了对Python 2.1和2.2的支持。一些代码(如迁移)需要Python 2.3的新功能,如生成器。[tiran]</p></li> <li><p>在INSTALL.txt中添加了说明,ATCT将很快停止支持Zope < 2.7.2。[tiran]</p></li> </ul> </section> <section id="rc4-2004-11-30"> <h3>0.2.0-rc4 - 2004-11-30</h3> <ul class="simple"> <li><p>ATTopic:将标准类型添加到生成的ID中,以便可以在同一字段上进行排序和筛选。[ctheune]</p></li> <li><p>修复了单元测试,使其可以在没有(和希望有)运行器的情况下再次工作。[ctheune]</p></li> <li><p>添加了不显示给用户非可排序标准的功能。[ctheune]</p></li> <li><p>添加了删除重复或不合理标准的功能(allowedRolesAndUsers,id/getId)。[ctheune]</p></li> <li><p>按翻译对标准列表进行排序。[ctheune]</p></li> <li><p>添加了德语翻译。[ctheune]</p></li> <li><p>在模板中添加了更多i18n支持。[ctheune]</p></li> <li><p>修复了非常令人烦恼的坏ID问题。这应该是一劳永逸的。[ctheune]</p></li> <li><p>扩展了德语翻译。[ctheune]</p></li> <li><p>修复了ATDocument,防止在提交空文本区域时删除上传的文件。[ctheune]</p></li> <li><p>修复了ID保护中的小错误。[ctheune]</p></li> <li><p>修复了当门户没有“成员”文件夹或当它有其他名称时的问题。[deo]</p></li> <li><p>修复了[ 1055347 ]当成员偏好设置为不显示时和[ 1055348 ] ATCTFile在ATCTFileContent._setATCTFileContent()中的ID问题。[tiran]</p></li> <li><p>禁用了基于外部存储类型的存储,因为我没有时间支持它。[tiran]</p></li> <li><p>向ATImage添加了长描述字段和图像标签。修复了[ 1056050 ]将longdesc添加到ATImage。[tiran]</p></li> <li><p>修复了[ 1057691 ]使ATContentTypes测试与testrunner.py一起工作的补丁。感谢dan_t。[dan_t, tiran]</p></li> <li><p>添加了对[ 1063549 ] ATCT迁移不将排序迁移到migrator.py的修复。[tiran]</p></li> <li><p>修复了[ 1067719 ] Install.py错误:通过从Install.py中删除不必要的代码修改了属性但没有分配。AT本身已经处理use_folder_tabs。[tiran]</p></li> </ul> </section> <section id="rc3-2004-10-17"> <h3>0.2.0-rc3 - 2004-10-17</h3> <ul class="simple"> <li><p>添加了ATContentTypes站点定制策略。[tiran]</p></li> <li><p>修复了[ 1041830 ] TypeError:cmf_edit() 函数至少需要3个非关键字参数,通过更改 edit() 实现来解决这个问题。引入了一个名为 cmf_edit_kws 的类变量以修复该问题。[tiran]</p></li> <li><p>ATLink:使用 urlparse 库来清理 URL,移除多余的斜杠。这修复了 <a href="http://plone.org/collector/3296" rel="nofollow">http://plone.org/collector/3296</a> 中的 ATCT 问题。[tiran]</p></li> <li><p>为 CMF 文档添加了对清除格式功能的支持。[tiran]</p></li> </ul> </section> <section id="rc2-2004-10-06"> <h3>0.2.0-rc2 - 2004-10-06</h3> <ul class="simple"> <li><p>修复了对象未在站点中包装时 isIDAutoGenerated 的问题。[tiran]</p></li> <li><p>修复了下载选项卡。[tiran]</p></li> <li><p>通过添加 index_html,使图像/文件在直接调用时可见。[tiran]</p></li> <li><p>替换了 ATImage 的标签方法。[tiran]</p></li> <li><p>修复了迁移问题:当文件夹中有损坏的对象时,迁移失败。[tiran]</p></li> <li><p>修复了属性迁移:如果对象已经具有此属性,则继续。[tiran]</p></li> <li><p>添加了 talkback 讨论迁移。[tiran]</p></li> <li><p>将描述设置为 ATEvent 的主字段。还使用更简单的语法设置描述为 isMetadata = False。[tiran]</p></li> <li><p>将选项卡从“历史”重命名为“最后更改”。添加了一个大警告,指出历史是基于 zodb 修订版的。[tiran]</p></li> <li><p>添加了 ExtendingType howto(更多内容将随后提供)。[tiran]</p></li> <li><p>重新编写了迁移遍历器,使用生成器而不是返回列表,使其更加内存高效。[tiran]</p></li> <li><p>重新编写了文件夹迁移,使用文件夹结构中的深度而不是递归到整个侧面。[tiran]</p></li> <li><p>为 ATCT 添加了一个名为 findStaledObjects 的外部方法来查找过时的对象。在运行迁移之前清理站点非常有用。[tiran]</p></li> <li><p>修复了 ATDocument 中的一个丑陋的错误,该错误在复制时破坏了引用。[tiran]</p></li> <li><p>将 ConstrainTypesMixin 从分支合并到 HEAD。感谢 Leonardo Rochael Almeida 和 Jens Werner Klein 的工作。[yenzens, rochael]</p></li> <li><p>修复了[ 1013853 ] 文件上传图像在小部件中显示 mime-type 的问题。[tiran]</p></li> <li><p>删除了对 markCreationFlag() 的调用。[tiran]</p></li> <li><p>修复了 ATFavorite 的问题:当对象丢失或用户无权访问时,迁移到 ATFavorite 失败。[tiran]</p></li> <li><p>修复了[ 1027070 ] 下载权限。现在,对于所有具有查看权限的已登录用户,将显示下载选项卡。[tiran]</p></li> <li><p>修复了[ 1027093 ] 编辑权限主题。ATTopic 的编辑操作现在需要 ChangeTopic 权限。[tiran]</p></li> <li><p>修复了[ 1027094 ] ATTopic 的文件夹列出操作。在 ATTopic.py 中移除了使用模块级别 modify_fti 函数的文件夹列出操作。[tiran]</p></li> <li><p>修复了[ 1026379 ] ATDocument:在设置 contentType 时跳过字段会通过删除自定义 setContentType 方法引发错误。现在不再需要它。[tiran]</p></li> <li><p>为每个模式使用 ATContentTypeSchema 的副本,以使自定义更容易。修复了[ 1027283 ] 模式编辑非常困难。[tiran]</p></li> <li><p>修复了[ 1035380 ] createMemberArea 和 ATCT 的问题,通过在 ATDocument 中添加一个 setFormat() 方法,该方法使用 translate 方法在愚蠢的 CMF 内容类型和真实 mime 类型之间映射。[tiran]</p></li> <li><p>更改 mx.Tidy 测试以解决 [ 1033396 ] 刷新时的错误。[tiran]</p></li> <li><p>修复了 [ 1036267 ] customconfig.py 中的某些错误。[tiran]</p></li> <li><p>修复了 [ 1036255 ] switchCMF2ATCT:无法再添加收藏。在切换脚本中禁用了该类型。[tiran]</p></li> <li><p>修复了 [ 1027108 ] 继承标准不工作。[tiran]</p></li> <li><p>修复了 [ 1030660 ] ConstrainMixin:在 ATFolder 中使用默认方法初始化可添加类型列表,使所有类型都可添加。添加了 _globalAddableTypeIds 方法来生成列表。[tiran]</p></li> <li><p>修复了 allowedContentTypes 中的一个可能问题:现在方法使用 fti.isConstructionAllowed(context) 来验证类型是否可构造。[tiran]</p></li> <li><p>添加了一个名为 enableConstrainMixin 的选项,它是一个布尔值(复选框)。当设置为 false 时,禁用约束混合,并使用 portal_types 中的默认值生成默认的可添加类型列表。[tiran]</p></li> <li><p>修复了 [ 1030662 ] ConstrainMixin:无法将 ATTopic 添加到 portal 根,因为没有对 ATCTFolder 进行 ConstrainTypesMixin 子类化。ATCTFolder 必须仅用作文件夹类型(非文件夹类型)的基类。[tiran]</p></li> <li><p>在迁移过程中添加了max_depth的解决方案和日志记录,以处理目录中[ 1039846 ]的Ghosts问题以及无限循环。[tiran]</p></li> </ul> </section> <section id="rc1-2004-07-28"> <h3>0.2.0-rc1 - 2004-07-28</h3> <ul class="simple"> <li><p>从ATTopic中移除了“内容”标签和“添加新项目”菜单。[gotcha]</p></li> <li><p>将标准选项卡更改为表格UI。[gotcha]</p></li> <li><p>当在不选择的情况下点击移除标准时,添加了消息。[gotcha]</p></li> <li><p>依赖于新的AT 1.3.0-beta3版本。[tiran]</p></li> <li><p>将ZMI中相关主题类型的名称更改为“ATContentTypes 主题”。[tiran]</p></li> </ul> <p>0.2-beta8 - 2004-07-21</p> <ul class="simple"> <li><p>修复了mx tidy validator和文件上传的验证问题。[tiran]</p></li> <li><p>将FriendlyDateCriterion中的时间范围整数更改为字符串。[tiran]</p></li> <li><p>重新启用ATFavorite的隐式添加功能。[tiran]</p></li> <li><p>添加了在主题上设置排序顺序的验证。[gotcha]</p></li> <li><p>向ATImage添加getSize、getHeight、getWidth方法和width/height属性。[tiran]</p></li> </ul> <p>0.2-beta7 - 2004-06-27</p> <ul class="simple"> <li><p>将一些代码从ATFolder移动到ATContentType。[tiran]</p></li> <li><p>修复了ATBTreeFolder中index_html的问题。[tiran]</p></li> <li><p>在迁移后修复了Members ATBTreeFolder中的错误门户类型。[tiran]</p></li> <li><p>将initializeArchetype()添加到ATContentType基类,并将其更改为使用edit()而不是update(),以使invokeFactory与旧cmf类型语法兼容。[tiran]</p></li> <li><p>修复了对象创建过程中initializeArchetype()阶段的_getPortalTypeName问题。修复前,门户类型名称是原始类型名称(例如ATDocument),因为在initializeArchetype调用之后,门户类型工具将其更改。这个问题导致了LinguaPlone和工作流的一些奇怪问题。[tiran]</p></li> <li><p>ATFile文件字段和ATImage图像字段现在是语言无关的。如果需要,我将添加I18NImage和I18NFile。我认为为文件和图像创建一个单独的类型来表示语言相关内容更容易理解。此外,这与Zope3类似。[tiran]</p></li> <li><p>从ATContentType基类中移除了TemplateMixin特定的代码。它已经被移到TemplateMixin中。[tiran]</p></li> <li><p>改进了迁移错误的错误报告。[tiran]</p></li> <li><p>修复了安装LinguaPlone时的迁移问题。[tiran]</p></li> <li><p>添加了-作为有效字符用于id。[tiran]</p></li> <li><p>在切换脚本中仅重新索引类型、portal_type和meta_type。[tiran]</p></li> <li><p>将字段测试包装在门户中,以修复缺少工具的问题。[tiran]</p></li> <li><p>修复了修改日期和创建日期的迁移问题,并修复了测试正确日期的单元测试问题。我试图比较编辑对象后的修改日期。:-) [tiran]</p></li> <li><p>在customconfig.py中可以配置ATDocument和ATNewsItem的默认类型。[tiran]</p></li> <li><p>修复了从ATCT模式切换到或从ATCT模式切换后内容类型注册和已注册模板的问题。[tiran]</p></li> <li><p>为ATEvent添加了验证:结束日期必须在开始日期之后。[tiran]</p></li> <li><p>首次发布,所有Archetypes、ATCT和CMFPlone tiran-atct-integration分支的单元测试均通过![tiran]</p></li> </ul> </section> <section id="beta6-2004-06-20"> <h3>0.2-beta6 - 2004-06-20</h3> <ul class="simple"> <li><p>为ATFile和ATImage添加了最大上传大小验证器。[tiran]</p></li> <li><p>更改了ATFile中下载标签的权限,不要让普通用户混淆绿色编辑框架。[jensens]</p></li> <li><p>添加了一个新的类ATCTFileContent,它包含ATFile和ATImage的一些代码。[tiran]</p></li> <li><p>从上传文件的文件名中设置标题(ATImage,ATFile)。[tiran]</p></li> <li><p>为ATTopic添加了限制。[gotcha]</p></li> <li><p>为ATDocument添加了EditableBody方法。[tiran]</p></li> <li><p>为特定索引添加了对标准支持的验证。[gotcha]</p></li> <li><p>为向后兼容CMF添加了edit()方法。[tiran]</p></li> <li><p>添加了对受限文件夹的支持。[jensens]</p></li> <li><p>禁用了受限文件夹支持,直到修复。[tiran]</p></li> </ul> </section> <section id="beta5"> <h3>0.2-beta5</h3> <ul class="simple"> <li><p>修复了多个小错误,并添加了在sf.net的bug跟踪器中请求的功能。[tiran]</p></li> <li><p>为ATImage和ATFile自动设置从文件名生成的id。[tiran]</p></li> <li><p>修复了 CMFCore/WorkflowTool 的 Python 2.1 兼容性问题。感谢 Tiziano Lattisi。[tiran]</p></li> <li><p>迁移到验证链。[tiran]</p></li> <li><p>修复了 HistoryAwareMixin 的安全性。[tiran]</p></li> <li><p>为 AT Event 添加了 iCal/vCal 导出。[tiran]</p></li> <li><p>添加了 LinguaPlone 支持。[gotcha]</p></li> </ul> </section> <section id="beta4"> <h3>0.2-beta4</h3> <ul class="simple"> <li><p>添加了 AT Dyn Document。它是一种类似于 CMFDynamicDocument 类型,支持在正文文本中渲染 TAL。[tiran]</p></li> <li><p>将 AT Dyn Document 迁移到新产品。[tiran]</p></li> <li><p>修复了迁移问题。[tiran]</p></li> <li><p>修复并改进了从/to “ATCT 作为默认类型”方法的切换。[tiran]</p></li> <li><p>更新了文档。[tiran]</p></li> <li><p>将辅助方法移动到 utils。[tiran]</p></li> <li><p>也在 content_type_registry 中切换对象。[lelit]</p></li> <li><p>添加了 isSwitchedToATCT 方法。[tiran]</p></li> <li><p>修复了如文件夹内容重复等杂项 UI 问题。[tiran]</p></li> </ul> </section> <section id="beta3-2004-04-20"> <h3>0.2-beta3 - 2004-04-20</h3> <ul class="simple"> <li><p>更新了 INSTALL.txt [tiran]</p></li> <li><p>修复了 ATBTreeFolder 和 ATFolder 的默认视图(第 2 阶段)。这两种类型都使用 ATContentTypeSchema 和 TemplateMixinSchema。[tiran]</p></li> <li><p>添加了作为外部方法的 recreateATImageScales 方法。[tiran]</p></li> <li><p>为所有基于 ATCTContent 的类型添加了缺失的共享选项卡。[tiran]</p></li> <li><p>修复了 AT Favorite。[jensens]</p></li> <li><p>修复了 atct_edit 宏。[tiran]</p></li> </ul> </section> <section id="beta2-2004-04-11"> <h3>0.2-beta2 - 2004-04-11</h3> <ul class="simple"> <li><p>更新验证器以反映 archetypes 和验证包的最新更改和修复。[tiran]</p></li> <li><p>添加了 ATCT 类的 UML 图。[tiran]</p></li> <li><p>一些小的修复和改进。[tiran]</p></li> </ul> </section> <section id="beta1-2004-04-09"> <h3>0.2-beta1 - 2004-04-09</h3> <ul class="simple"> <li><p>首次官方测试版本。[tiran]</p></li> </ul> </section> </section> </div> </div> <div id="data" data-project-tabs-target="content" class="vertical-tabs__content" role="tabpanel" aria-labelledby="mobile-data-tab" tabindex="-1"> <h2 class="page-title">项目详情</h2> <div class="sidebar-section verified"> <h3 class="sidebar-section__title">验证详情 <i class="fa fa-circle-check check" title="于2022-03-16由PyPI验证"></i></h3> <small><i>这些详情已经 <a href="https://docs.pypi.ac.cn/project_metadata/#verified-details">由PyPI验证</a></i></small> <h6>所有者</h6> <span class="sidebar-section__maintainer"> <a href="/org/plone/" aria-label="plone"> <span class="sidebar-section__user-gravatar"> <img src="/static/images/blue-sitemap.028cde9a.webp" height="43" alt="组织图标" title="组织图标"> </span> <span class="sidebar-section__user-gravatar-text"> Plone </span></a> </span> <h6>维护者</h6> <span class="sidebar-section__maintainer"> <a href="/user/alecm/" aria-label=""> <span class="sidebar-section__user-gravatar"> <img src="https://pypi-camo.freetls.fastly.net/13ab710a4bb32b3d02ff46cccf246d545d053084/68747470733a2f2f7365637572652e67726176617461722e636f6d2f6176617461722f39646531656164356435393539666162343938313231386138396234346563663f73697a653d3530" height="50" width="50" alt="alecm 的 Gravatar 头像" title="alecm 的 Gravatar 头像"> </span> <span class="sidebar-section__user-gravatar-text"> alecm </span> </a> </span> <span class="sidebar-section__maintainer"> <a href="/user/davisagli/" aria-label=""> <span class="sidebar-section__user-gravatar"> <img src="https://pypi-camo.freetls.fastly.net/b82bb7be821065ea4db839da83b1717256dcb0ff/68747470733a2f2f7365637572652e67726176617461722e636f6d2f6176617461722f64393033666262356466373133393736316439653232376563316132323635333f73697a653d3530" height="50" width="50" alt="davisagli 的 Gravatar 头像" title="davisagli 的 Gravatar 头像"> </span> <span class="sidebar-section__user-gravatar-text"> davisagli </span> </a> </span> <span class="sidebar-section__maintainer"> <a href="/user/esteele/" aria-label=""> <span class="sidebar-section__user-gravatar"> <img src="https://pypi-camo.freetls.fastly.net/caf9847a801032a93a3cc0a085be793f1275827a/68747470733a2f2f7365637572652e67726176617461722e636f6d2f6176617461722f66383432363661613635636165313436633661336234313162663963633030653f73697a653d3530" height="50" width="50" alt="esteele 的 Gravatar 头像" title="esteele 的 Gravatar 头像"> </span> <span class="sidebar-section__user-gravatar-text"> esteele </span> </a> </span> <span class="sidebar-section__maintainer"> <a href="/user/evilbungle/" aria-label=""> <span class="sidebar-section__user-gravatar"> <img src="https://pypi-camo.freetls.fastly.net/76ebde95c7bf3c3baa82e03decd5afd577faf569/68747470733a2f2f7365637572652e67726176617461722e636f6d2f6176617461722f30323635323764303065666639653636663934616166343238313231616262383f73697a653d3530" height="50" width="50" alt="evilbungle 的 Gravatar 头像" title="evilbungle 的 Gravatar 头像"> </span> <span class="sidebar-section__user-gravatar-text"> evilbungle </span> </a> </span> <span class="sidebar-section__maintainer"> <a href="/user/hannosch/" aria-label=""> <span class="sidebar-section__user-gravatar"> <img src="https://pypi-camo.freetls.fastly.net/8efd6405823bcbfa3d5676195a3259e61133e9b7/68747470733a2f2f7365637572652e67726176617461722e636f6d2f6176617461722f34343261643638643730626130653033306631363763366163613334363937353f73697a653d3530" height="50" width="50" alt="hannosch 的 Gravatar 头像" title="hannosch 的 Gravatar 头像"> </span> <span class="sidebar-section__user-gravatar-text"> hannosch </span> </a> </span> <span class="sidebar-section__maintainer"> <a href="/user/optilude/" aria-label=""> <span class="sidebar-section__user-gravatar"> <img src="https://pypi-camo.freetls.fastly.net/53608d5674278fc80ea497cf1e0657c8563f20fe/68747470733a2f2f7365637572652e67726176617461722e636f6d2f6176617461722f34323766336134633933356266363439653935376530383838663830353763373f73697a653d3530" height="50" width="50" alt="optilude 的 Gravatar 头像" title="optilude 的 Gravatar 头像"> </span> <span class="sidebar-section__user-gravatar-text"> optilude </span> </a> </span> <span class="sidebar-section__maintainer"> <a href="/user/timo/" aria-label=""> <span class="sidebar-section__user-gravatar"> <img src="https://pypi-camo.freetls.fastly.net/482280b9ff9048429f779242cc4e602803f4c20b/68747470733a2f2f7365637572652e67726176617461722e636f6d2f6176617461722f33623632656263666631626437653739333263613833616662313639663936613f73697a653d3530" height="50" width="50" alt="timo 的 Gravatar 头像" title="timo 的 Gravatar 头像"> </span> <span class="sidebar-section__user-gravatar-text"> timo </span> </a> </span> <span class="sidebar-section__maintainer"> <a href="/user/vincentfretin/" aria-label=""> <span class="sidebar-section__user-gravatar"> <img src="https://pypi-camo.freetls.fastly.net/66dc895ed6b4460bf0be90e9159d707f40218289/68747470733a2f2f7365637572652e67726176617461722e636f6d2f6176617461722f39656366663235343839303439616366653835613237313132633962396134313f73697a653d3530" height="50" width="50" alt="vincentfretin 的 Gravatar 头像" title="vincentfretin 的 Gravatar 头像"> </span> <span class="sidebar-section__user-gravatar-text"> vincentfretin </span> </a> </span> <span class="sidebar-section__maintainer"> <a href="/user/wichert/" aria-label=""> <span class="sidebar-section__user-gravatar"> <img src="https://pypi-camo.freetls.fastly.net/7c9918d18821281c705b228be249e42ffca66d1b/68747470733a2f2f7365637572652e67726176617461722e636f6d2f6176617461722f63643665353136616432383530666437376133623230343438323531663363613f73697a653d3530" height="50" width="50" alt="wichert 的 Gravatar 头像" title="wichert 的 Gravatar 头像"> </span> <span class="sidebar-section__user-gravatar-text"> wichert </span> </a> </span> <span class="sidebar-section__maintainer"> <a href="/user/witsch/" aria-label=""> <span class="sidebar-section__user-gravatar"> <img src="https://pypi-camo.freetls.fastly.net/7241a9e4f71d9a228a7745cd46d71a1696175a76/68747470733a2f2f7365637572652e67726176617461722e636f6d2f6176617461722f37636632323933303539363631616338383636373537663966636336646133343f73697a653d3530" height="50" width="50" alt="witsch 的 Gravatar 头像" title="witsch 的 Gravatar 头像"> </span> <span class="sidebar-section__user-gravatar-text"> witsch </span> </a> </span></div> <div class="sidebar-section unverified"> <h3 class="sidebar-section__title">未验证信息</h3> <small><i>这些信息尚未由 PyPI 验证</i></small> <h6>项目链接</h6> <ul class="vertical-tabs__list"> <li> <a class="vertical-tabs__tab vertical-tabs__tab--with-icon vertical-tabs__tab--condensed" href="http://plone.org/" rel="nofollow"> <i class="fas fa-home" aria-hidden="true"></i>主页</a> </li> </ul> <div class="sidebar-section unverified"> <h6>元数据</h6> <ul> <li> <span> <strong>许可协议:</strong>GNU 通用公共许可证 (GPL) (GPL)</span> </li> <li> <span> <strong>作者:</strong> <a href="mailto:plone-developers@lists.sourceforge.net">AT 内容类型开发团队</a></span> </li> <li class="tags"> <span> <i class="fa fa-tags" aria-hidden="true"></i> <span class="sr-only">标签</span> <span class="package-keyword"> Plone, </span> <span class="package-keyword"> 内容, </span> <span class="package-keyword"> 类型 </span></span> </li> <li> <span> <strong>要求:</strong> Python ==2.7.*</span> </li> </ul> </div> <div class="sidebar-section unverified"> <h6 class="sidebar-section__title">分类器</h6> <ul class="sidebar-section__classifiers"> <li> <strong>开发状态</strong> <ul> <li> <a href="/search/?c=Development+Status+%3A%3A+6+-+Mature">6 - 成熟</a> </li> </ul> </li> <li> <strong>框架</strong> <ul> <li> <a href="/search/?c=Framework+%3A%3A+Plone">Plone</a> </li> <li> <a href="/search/?c=Framework+%3A%3A+Plone+%3A%3A+5.2">Plone :: 5.2</a> </li> </ul> </li> <li> <strong>许可证</strong> <ul> <li> <a href="/search/?c=License+%3A%3A+OSI+Approved+%3A%3A+GNU+General+Public+License+%28GPL%29">OSI批准 :: GNU通用公共许可证 (GPL)</a> </li> </ul> </li> <li> <strong>编程语言</strong> <ul> <li> <a href="/search/?c=Programming+Language+%3A%3A+Python">Python</a> </li> <li> <a href="/search/?c=Programming+Language+%3A%3A+Python+%3A%3A+2+%3A%3A+Only">Python :: 2 :: 仅限</a> </li> <li> <a href="/search/?c=Programming+Language+%3A%3A+Python+%3A%3A+2.7">Python :: 2.7</a> </li> </ul> </li> </ul> </div> </div> <br /> </div> <div id="history" data-project-tabs-target="content" class="vertical-tabs__content" role="tabpanel" aria-labelledby="history-tab mobile-history-tab" tabindex="-1"> <h2 class="page-title split-layout"> <span>发布历史</span> <span class="reset-text margin-top"> <a href="/help/#project-release-notifications">发布通知</a> | <a href="/rss/project/products-atcontenttypes/releases.xml">RSS 源 <i class="fa fa-rss" aria-hidden="true"></i></a> </span></h2> <div class="release-timeline"> <div class="release release--latest release--current"> <div class="release__meta"> <span class="badge">本版本</span> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/blue-cube.572a5bfb.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/3.0.7/"> <p class="release__version"> 3.0.7 </p> <p class="release__version-date"> <time datetime="2022-03-16T16:39:12+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2022年3月16日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/3.0.6/"> <p class="release__version"> 3.0.6 </p> <p class="release__version-date"> <time datetime="2022-01-28T13:55:42+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2022年1月28日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/3.0.5/"> <p class="release__version"> 3.0.5 </p> <p class="release__version-date"> <time datetime="2021-10-07T13:55:06+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2021年10月7日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/3.0.4/"> <p class="release__version"> 3.0.4 </p> <p class="release__version-date"> <time datetime="2020-09-28T08:03:59+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2020年9月28日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/3.0.3/"> <p class="release__version"> 3.0.3 </p> <p class="release__version-date"> <time datetime="2020-04-20T21:29:16+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2020年4月20日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/3.0.2/"> <p class="release__version"> 3.0.2 </p> <p class="release__version-date"> <time datetime="2019-06-19T23:09:51+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2019年6月19日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/3.0.1/"> <p class="release__version"> 3.0.1 </p> <p class="release__version-date"> <time datetime="2019-05-21T19:27:57+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2019年5月21日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/3.0.0/"> <p class="release__version"> 3.0.0 </p> <p class="release__version-date"> <time datetime="2018-10-31T02:09:29+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2018年10月31日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.3.9/"> <p class="release__version"> 2.3.9 </p> <p class="release__version-date"> <time datetime="2018-10-24T18:05:24+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2018年10月24日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.3.8/"> <p class="release__version"> 2.3.8 </p> <p class="release__version-date"> <time datetime="2018-04-03T20:51:43+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2018年4月3日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.3.7/"> <p class="release__version"> 2.3.7 </p> <p class="release__version-date"> <time datetime="2017-11-25T01:08:43+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2017年11月25日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.3.6/"> <p class="release__version"> 2.3.6 </p> <p class="release__version-date"> <time datetime="2017-06-26T12:29:32+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2017年6月26日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.3.5/"> <p class="release__version"> 2.3.5 </p> <p class="release__version-date"> <time datetime="2017-05-29T13:49:38+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2017年5月29日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.3.4/"> <p class="release__version"> 2.3.4 </p> <p class="release__version-date"> <time datetime="2017-03-31T23:14:41+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2017年3月31日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.3.3/"> <p class="release__version"> 2.3.3 </p> <p class="release__version-date"> <time datetime="2017-02-13T01:34:10+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2017年2月13日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.3.2/"> <p class="release__version"> 2.3.2 </p> <p class="release__version-date"> <time datetime="2017-01-20T22:21:00+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2017年1月20日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.3.1/"> <p class="release__version"> 2.3.1 </p> <p class="release__version-date"> <time datetime="2016-11-17T19:13:54+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2016年11月17日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.3/"> <p class="release__version"> 2.3 </p> <p class="release__version-date"> <time datetime="2016-10-03T15:02:29+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2016年10月3日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.2.14/"> <p class="release__version"> 2.2.14 </p> <p class="release__version-date"> <time datetime="2017-06-08T10:17:48+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2017年6月8日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.2.13/"> <p class="release__version"> 2.2.13 </p> <p class="release__version-date"> <time datetime="2016-07-29T19:05:11+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2016年7月29日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.2.12/"> <p class="release__version"> 2.2.12 </p> <p class="release__version-date"> <time datetime="2016-05-14T23:26:04+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2016年5月14日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.2.11/"> <p class="release__version"> 2.2.11 </p> <p class="release__version-date"> <time datetime="2016-02-14T18:27:50+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2016年2月14日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.2.10/"> <p class="release__version"> 2.2.10 </p> <p class="release__version-date"> <time datetime="2015-12-21T15:20:33+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2015年12月21日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.2.9/"> <p class="release__version"> 2.2.9 </p> <p class="release__version-date"> <time datetime="2015-11-26T02:34:51+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2015年11月26日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.2.8/"> <p class="release__version"> 2.2.8 </p> <p class="release__version-date"> <time datetime="2015-10-27T23:03:29+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2015年10月27日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.2.7/"> <p class="release__version"> 2.2.7 </p> <p class="release__version-date"> <time datetime="2015-09-20T18:51:56+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2015年9月20日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.2.6/"> <p class="release__version"> 2.2.6 </p> <p class="release__version-date"> <time datetime="2015-07-18T10:56:53+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2015年7月18日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.2.5/"> <p class="release__version"> 2.2.5 </p> <p class="release__version-date"> <time datetime="2015-05-04T21:44:06+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2015年5月4日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.2.4/"> <p class="release__version"> 2.2.4 </p> <p class="release__version-date"> <time datetime="2015-03-26T22:44:58+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2015年3月26日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.2.3/"> <p class="release__version"> 2.2.3 </p> <p class="release__version-date"> <time datetime="2015-03-09T02:00:08+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2015年3月9日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.2.2/"> <p class="release__version"> 2.2.2 </p> <p class="release__version-date"> <time datetime="2014-10-24T01:08:57+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2014年10月24日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.2.1/"> <p class="release__version"> 2.2.1 </p> <p class="release__version-date"> <time datetime="2014-04-14T00:28:08+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2014年4月14日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.2.0/"> <p class="release__version"> 2.2.0 </p> <p class="release__version-date"> <time datetime="2014-03-02T03:04:53+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2014年3月2日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.1.19/"> <p class="release__version"> 2.1.19 </p> <p class="release__version-date"> <time datetime="2016-05-04T22:49:09+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2016年5月4日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.1.18/"> <p class="release__version"> 2.1.18 </p> <p class="release__version-date"> <time datetime="2016-02-24T13:03:48+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2016年2月24日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.1.17/"> <p class="release__version"> 2.1.17 </p> <p class="release__version-date"> <time datetime="2015-09-28T10:53:47+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2015年9月28日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.1.16/"> <p class="release__version"> 2.1.16 </p> <p class="release__version-date"> <time datetime="2015-08-14T12:32:32+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2015年8月14日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.1.15/"> <p class="release__version"> 2.1.15 </p> <p class="release__version-date"> <time datetime="2015-02-20T21:39:00+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2015年2月20日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.1.14/"> <p class="release__version"> 2.1.14 </p> <p class="release__version-date"> <time datetime="2013-12-08T01:49:59+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2013年12月8日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.1.13/"> <p class="release__version"> 2.1.13 </p> <p class="release__version-date"> <time datetime="2013-05-24T00:40:36+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2013年5月24日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.1.12/"> <p class="release__version"> 2.1.12 </p> <p class="release__version-date"> <time datetime="2013-03-05T19:11:04+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2013年3月5日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.1.11/"> <p class="release__version"> 2.1.11 </p> <p class="release__version-date"> <time datetime="2013-03-05T19:10:11+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2013年3月5日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.1.10/"> <p class="release__version"> 2.1.10 </p> <p class="release__version-date"> <time datetime="2012-12-09T09:49:06+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2012年12月9日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.1.9/"> <p class="release__version"> 2.1.9 </p> <p class="release__version-date"> <time datetime="2012-10-11T09:22:15+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2012年10月11日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.1.8/"> <p class="release__version"> 2.1.8 </p> <p class="release__version-date"> <time datetime="2012-08-18T14:46:34+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2012年8月18日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.1.7/"> <p class="release__version"> 2.1.7 </p> <p class="release__version-date"> <time datetime="2012-04-10T01:14:16+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2012年4月10日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.1.6/"> <p class="release__version"> 2.1.6 </p> <p class="release__version-date"> <time datetime="2012-01-27T02:32:56+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2012年1月27日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.1.5/"> <p class="release__version"> 2.1.5 </p> <p class="release__version-date"> <time datetime="2011-10-06T20:18:39+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2011年10月6日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.1.4/"> <p class="release__version"> 2.1.4 </p> <p class="release__version-date"> <time datetime="2011-09-01T01:21:56+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2011年9月1日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.1.3/"> <p class="release__version"> 2.1.3 </p> <p class="release__version-date"> <time datetime="2011-07-12T11:16:14+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2011年7月12日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.1.2/"> <p class="release__version"> 2.1.2 </p> <p class="release__version-date"> <time datetime="2011-05-12T08:23:07+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2011年5月12日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.1.1/"> <p class="release__version"> 2.1.1 </p> <p class="release__version-date"> <time datetime="2011-02-04T20:18:12+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2011年2月4日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.1.0/"> <p class="release__version"> 2.1.0 </p> <p class="release__version-date"> <time datetime="2011-01-03T19:48:25+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2011年1月3日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.0.7/"> <p class="release__version"> 2.0.7 </p> <p class="release__version-date"> <time datetime="2011-01-03T14:10:53+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2011年1月3日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.0.6/"> <p class="release__version"> 2.0.6 </p> <p class="release__version-date"> <time datetime="2010-09-28T14:17:07+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2010年9月28日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.0.5/"> <p class="release__version"> 2.0.5 </p> <p class="release__version-date"> <time datetime="2010-09-08T09:31:02+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2010年9月8日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.0.4/"> <p class="release__version"> 2.0.4 </p> <p class="release__version-date"> <time datetime="2010-08-08T11:47:36+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2010年8月8日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.0.3/"> <p class="release__version"> 2.0.3 </p> <p class="release__version-date"> <time datetime="2010-08-04T17:14:04+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2010年8月4日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.0.2/"> <p class="release__version"> 2.0.2 </p> <p class="release__version-date"> <time datetime="2010-07-29T19:16:23+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2010年7月29日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.0.1/"> <p class="release__version"> 2.0.1 </p> <p class="release__version-date"> <time datetime="2010-07-18T12:11:20+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2010年7月18日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.0/"> <p class="release__version"> 2.0 </p> <p class="release__version-date"> <time datetime="2010-07-01T15:41:42+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2010年7月1日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.0b11/"> <p class="release__version">2.0b11 <span class="badge badge--warning"> 预发布 </span></p> <p class="release__version-date"> <time datetime="2010-06-13T13:09:37+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2010年6月13日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.0b10/"> <p class="release__version">2.0b10 <span class="badge badge--warning"> 预发布 </span></p> <p class="release__version-date"> <time datetime="2010-06-03T14:19:43+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2010年6月3日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.0b9/"> <p class="release__version">2.0b9 <span class="badge badge--warning"> 预发布 </span></p> <p class="release__version-date"> <time datetime="2010-05-01T17:18:07+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2010年5月1日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.0b8/"> <p class="release__version">2.0b8 <span class="badge badge--warning"> 预发布 </span></p> <p class="release__version-date"> <time datetime="2010-05-01T14:25:53+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2010年5月1日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.0b7/"> <p class="release__version">2.0b7 <span class="badge badge--warning"> 预发布 </span></p> <p class="release__version-date"> <time datetime="2010-04-12T15:35:38+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2010年4月12日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.0b6/"> <p class="release__version">2.0b6 <span class="badge badge--warning"> 预发布 </span></p> <p class="release__version-date"> <time datetime="2010-03-08T15:38:20+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2010年3月8日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.0b5/"> <p class="release__version">2.0b5 <span class="badge badge--warning"> 预发布 </span></p> <p class="release__version-date"> <time datetime="2010-03-06T23:08:41+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2010年3月6日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.0b4/"> <p class="release__version">2.0b4 <span class="badge badge--warning"> 预发布 </span></p> <p class="release__version-date"> <time datetime="2010-03-05T18:24:07+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2010年3月5日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.0b3/"> <p class="release__version">2.0b3 <span class="badge badge--warning"> 预发布 </span></p> <p class="release__version-date"> <time datetime="2010-02-17T17:45:55+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2010年2月17日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.0b2/"> <p class="release__version">2.0b2 <span class="badge badge--warning">预发布版</span></p> <p class="release__version-date"> <time datetime="2010-01-25T20:10:17+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2010年1月25日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.0b1/"> <p class="release__version">2.0b1 <span class="badge badge--warning">预发布版</span></p> <p class="release__version-date"> <time datetime="2010-01-02T18:13:06+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2010年1月2日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.0a6/"> <p class="release__version">2.0a6 <span class="badge badge--warning">预发布版</span></p> <p class="release__version-date"> <time datetime="2009-12-27T17:19:40+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2009年12月27日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.0a5/"> <p class="release__version">2.0a5 <span class="badge badge--warning">预发布版</span></p> <p class="release__version-date"> <time datetime="2009-12-16T19:55:47+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2009年12月16日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.0a4/"> <p class="release__version">2.0a4 <span class="badge badge--warning">预发布版</span></p> <p class="release__version-date"> <time datetime="2009-12-03T20:13:00+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2009年12月3日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.0a3/"> <p class="release__version">2.0a3 <span class="badge badge--warning">预发布版</span></p> <p class="release__version-date"> <time datetime="2009-12-03T12:56:47+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2009年12月3日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.0a2/"> <p class="release__version">2.0a2 <span class="badge badge--warning">预发布版</span></p> <p class="release__version-date"> <time datetime="2009-12-02T22:44:38+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2009年12月2日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/2.0a1/"> <p class="release__version">2.0a1 <span class="badge badge--warning">预发布版</span></p> <p class="release__version-date"> <time datetime="2009-11-17T23:56:22+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2009年11月17日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/1.3.7/"> <p class="release__version"> 1.3.7 </p> <p class="release__version-date"> <time datetime="2010-07-28T15:08:28+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2010年7月28日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/1.3.6/"> <p class="release__version"> 1.3.6 </p> <p class="release__version-date"> <time datetime="2010-05-12T07:33:36+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2010年5月12日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/1.3.5/"> <p class="release__version"> 1.3.5 </p> <p class="release__version-date"> <time datetime="2010-05-01T17:12:46+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2010年5月1日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/1.3.4/"> <p class="release__version"> 1.3.4 </p> <p class="release__version-date"> <time datetime="2009-09-23T06:40:50+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2009年9月23日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/1.3.3/"> <p class="release__version"> 1.3.3 </p> <p class="release__version-date"> <time datetime="2009-09-06T15:15:52+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2009年9月6日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/1.3.2/"> <p class="release__version"> 1.3.2 </p> <p class="release__version-date"> <time datetime="2009-05-20T14:56:59+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2009年5月20日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/1.3.1/"> <p class="release__version"> 1.3.1 </p> <p class="release__version-date"> <time datetime="2009-04-28T15:38:55+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2009年4月28日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/1.3.0/"> <p class="release__version"> 1.3.0 </p> <p class="release__version-date"> <time datetime="2009-03-11T14:16:45+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2009年3月11日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/1.2.8/"> <p class="release__version"> 1.2.8 </p> <p class="release__version-date"> <time datetime="2009-10-10T09:25:14+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2009年10月10日</time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/1.2.7/"> <p class="release__version"> 1.2.7 </p> <p class="release__version-date"> <time datetime="2009-01-30T23:35:43+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2009年1月30日</time> </p> </a> </div> <div class="release release--oldest"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.ac.cn/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/Products.ATContentTypes/1.2.6/"> <p class="release__version"> 1.2.6 </p> <p class="release__version-date"> <time datetime="2008-10-08T23:00:20+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false">2008年10月8日</time> </p> </a> </div> </div> </div> <div id="files" data-project-tabs-target="content" class="vertical-tabs__content" role="tabpanel" aria-labelledby="files-tab mobile-files-tab" tabindex="-1"> <h2 class="page-title">下载文件</h2> <p>下载适合您平台的文件。如果您不确定选择哪个,请了解有关<a href="https://packaging.pythonlang.cn/tutorials/installing-packages/" title="外部链接" target="_blank" rel="noopener">安装包</a>的更多信息。</p> <h3>源分发</h3> <div class="file"> <div class="file__graphic"> <i class="far fa-file" aria-hidden="true"></i> </div> <div class="card file__card"> <a href="https://files.pythonhosted.org/packages/f1/b3/19c85b3f0a710bc1141d26e6a1a4786e812f80d68165f348f003a492fafc/Products.ATContentTypes-3.0.7.tar.gz"> Products.ATContentTypes-3.0.7.tar.gz </a> (328.4 kB <a href="#copy-hash-modal-cc0af6f8-805a-4fb2-a3e9-36b34f0f154c">查看哈希值</a>)<p class="file__meta">上传时间 <time datetime="2022-03-16T16:39:16+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false"> 2022年3月16日 </time> <code>源</code></p> </div> </div> <h3>构建分发</h3> <div class="file"> <div class="file__graphic"> <i class="far fa-file" aria-hidden="true"></i> </div> <div class="card file__card"> <a href="https://files.pythonhosted.org/packages/6e/15/cd476bf444b4c826292885bd24c4136a827e6ad4146ebaa49c5157f77c05/Products.ATContentTypes-3.0.7-py2-none-any.whl"> Products.ATContentTypes-3.0.7-py2-none-any.whl </a> (347.3 kB <a href="#copy-hash-modal-c1f61f31-a69a-43d9-928d-fb5fbb72f448">查看哈希值</a>)<p class="file__meta">上传时间 <time datetime="2022-03-16T16:39:12+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false"> 2022年3月16日 </time> <code>Python 2</code></p> </div> </div> </div> <div id="copy-hash-modal-cc0af6f8-805a-4fb2-a3e9-36b34f0f154c" class="modal modal--wide"> <div class="modal__content" role="dialog"> <a href="#modal-close" title="Close" class="modal__close"> <i class="fa fa-times" aria-hidden="true"></i> <span class="sr-only">关闭</span></a> <div class="modal__body"> <h3 class="modal__title"> <a href="https://pip.pythonlang.cn/en/stable/topics/secure-installs/#hash-checking-mode" title="外部链接" target="_blank" rel="noopener">哈希值</a> for Products.ATContentTypes-3.0.7.tar.gz</h3> <table class="table table--hashes"> <caption class="sr-only">哈希值 for Products.ATContentTypes-3.0.7.tar.gz</caption> <thead> <tr> <th scope="col">算法</th> <th scope="col">哈希摘要</th> <th></th> </tr> </thead> <tbody> <tr data-controller="clipboard"> <th scope="row">SHA256</th> <td><code data-clipboard-target="source">cfcf25c621488e21554712379d91bb1093f63bb7b3313ec8d866bd241ffde3ff</code></td> <td class="table__align-right"> <button type="button" class="button button--small copy-tooltip copy-tooltip-w" data-action="clipboard#copy" data-clipboard-target="tooltip" data-clipboard-tooltip-value="Copy to clipboard">复制</button> </td> </tr> <tr data-controller="clipboard"> <th scope="row">MD5</th> <td><code data-clipboard-target="source">5185eede3e853fc903baca3723e8b8ad</code></td> <td class="table__align-right"> <button type="button" class="button button--small copy-tooltip copy-tooltip-w" data-action="clipboard#copy" data-clipboard-target="tooltip" data-clipboard-tooltip-value="Copy to clipboard">复制</button> </td> </tr> <tr data-controller="clipboard"> <th scope="row">BLAKE2b-256</th> <td><code data-clipboard-target="source">f1b319c85b3f0a710bc1141d26e6a1a4786e812f80d68165f348f003a492fafc</code></td> <td class="table__align-right"> <button type="button" class="button button--small copy-tooltip copy-tooltip-w" data-action="clipboard#copy" data-clipboard-target="tooltip" data-clipboard-tooltip-value="Copy to clipboard">复制</button> </td> </tr> </tbody> </table> </div> <div class="modal__footer"> <a href="#modal-close" class="button button--primary modal__action">关闭</a> </div> </div> </div><div id="copy-hash-modal-c1f61f31-a69a-43d9-928d-fb5fbb72f448" class="modal modal--wide"> <div class="modal__content" role="dialog"> <a href="#modal-close" title="Close" class="modal__close"> <i class="fa fa-times" aria-hidden="true"></i> <span class="sr-only">关闭</span></a> <div class="modal__body"> <h3 class="modal__title"> <a href="https://pip.pythonlang.cn/en/stable/topics/secure-installs/#hash-checking-mode" title="外部链接" target="_blank" rel="noopener">哈希值</a> for Products.ATContentTypes-3.0.7-py2-none-any.whl</h3> <table class="table table--hashes"> <caption class="sr-only">哈希值 for Products.ATContentTypes-3.0.7-py2-none-any.whl</caption> <thead> <tr> <th scope="col">算法</th> <th scope="col">哈希摘要</th> <th></th> </tr> </thead> <tbody> <tr data-controller="clipboard"> <th scope="row">SHA256</th> <td><code data-clipboard-target="source">edca7ba40bbc269cdd9733bcee6b6bf96cdc54e961829c6c0f67985b3b70b690</code></td> <td class="table__align-right"> <button type="button" class="button button--small copy-tooltip copy-tooltip-w" data-action="clipboard#copy" data-clipboard-target="tooltip" data-clipboard-tooltip-value="Copy to clipboard">复制</button> </td> </tr> <tr data-controller="clipboard"> <th scope="row">MD5</th> <td><code data-clipboard-target="source">e58e74096e0f5905e279cb517cfb423e</code></td> <td class="table__align-right"> <button type="button" class="button button--small copy-tooltip copy-tooltip-w" data-action="clipboard#copy" data-clipboard-target="tooltip" data-clipboard-tooltip-value="Copy to clipboard">复制</button> </td> </tr> <tr data-controller="clipboard"> <th scope="row">BLAKE2b-256</th> <td><code data-clipboard-target="source">6e15cd476bf444b4c826292885bd24c4136a827e6ad4146ebaa49c5157f77c05</code></td> <td class="table__align-right"> <button type="button" class="button button--small copy-tooltip copy-tooltip-w" data-action="clipboard#copy" data-clipboard-target="tooltip" data-clipboard-tooltip-value="Copy to clipboard">复制</button> </td> </tr> </tbody> </table> </div> <div class="modal__footer"> <a href="#modal-close" class="button button--primary modal__action">关闭</a> </div> </div> </div> </div> </div> </div> </div> </main> <footer class="footer"> <div class="footer__logo"> <img src="/static/images/white-cube.2351a86c.svg" alt="" class="-js-white-cube"> </div> <div class="footer__menus"> <div class="footer__menu"> <h2>帮助</h2> <nav aria-label="Help navigation"> <ul> <li><a href="https://packaging.pythonlang.cn/tutorials/installing-packages/" title="External link" target="_blank" rel="noopener">安装包</a></li> <li><a href="https://packaging.pythonlang.cn/tutorials/packaging-projects/" title="External link" target="_blank" rel="noopener">上传包</a></li> <li><a href="https://packaging.pythonlang.cn/" title="External link" target="_blank" rel="noopener">用户指南</a></li> <li><a href="https://pythonlang.cn/dev/peps/pep-0541/" title="External link" target="_blank" rel="noopener">项目名称保留</a></li> <li><a href="/help/">常见问题解答</a></li> </ul> </nav> </div> <div class="footer__menu"> <h2>关于 PyPI</h2> <nav aria-label="About PyPI navigation"> <ul> <li><a href="https://blog.pypi.ac.cn" title="External link" target="_blank" rel="noopener">PyPI 博客</a></li> <li><a href="https://dtdg.co/pypi" title="External link" target="_blank" rel="noopener">基础设施仪表板</a></li> <li><a href="/stats/">统计信息</a></li> <li><a href="/trademarks/">标志和商标</a></li> <li><a href="/sponsors/">我们的赞助商</a></li> </ul> </nav> </div> <div class="footer__menu"> <h2>为 PyPI 贡献</h2> <nav aria-label="How to contribute navigation"> <ul> <li><a href="/help/#feedback">错误和反馈</a></li> <li><a href="https://github.com/pypi/warehouse" title="External link" target="_blank" rel="noopener">在 GitHub 上贡献</a></li> <li><a href="https://hosted.weblate.org/projects/pypa/warehouse/" title="External link" target="_blank" rel="noopener">翻译 PyPI</a></li> <li><a href="/sponsors/">赞助 PyPI</a></li> <li><a href="https://github.com/pypi/warehouse/graphs/contributors" title="External link" target="_blank" rel="noopener">开发致谢</a></li> </ul> </nav> </div> <div class="footer__menu"> <h2>使用 PyPI</h2> <nav aria-label="Using PyPI navigation"> <ul> <li><a href="https://policies.python.org/python.org/code-of-conduct/" title="External link" target="_blank" rel="noopener">行为准则</a></li> <li><a href="/security/">报告安全问题</a></li> <li><a href="https://policies.python.org/pypi.org/Privacy-Notice/" title="External link" target="_blank" rel="noopener">隐私政策</a></li> <li><a href="https://policies.python.org/pypi.org/Terms-of-Use/" title="External link" target="_blank" rel="noopener">使用条款</a></li> <li><a href="https://policies.python.org/pypi.org/Acceptable-Use-Policy/" title="External link" target="_blank" rel="noopener">可接受使用政策</a></li> </ul> </nav> </div> </div> <hr class="footer__divider" /> <div class="footer__text"> <p>状态:<a href="https://status.python.org/" title="外部链接" target="_blank" rel="noopener"> <span data-statuspage-domain="https://2p66nmmycsj3.statuspage.io">所有系统正常运行</span></a></p> <p>由 Python 社区开发并维护,为 Python 社区服务。<br /> <a href="https://donate.pypi.org">今天捐赠!</a> </p> <p>"PyPI"、"Python 包索引"和块形标志是<a href="/trademarks/">商标</a>,归<a href="https://pythonlang.cn/psf-landing" target="_blank" rel="noopener">Python 软件基金会</a>所有。<br /> </p> <p>© 2024 <a href="https://pythonlang.cn/psf-landing/" title="外部链接" target="_blank" rel="noopener">Python 软件基金会</a><br /> <a href="/sitemap/">网站地图</a> </p> </div> <div class="centered hide-on-desktop"> <button type="button" class="button button--switch-to-desktop hidden" data-viewport-toggle-target="switchToDesktop" data-action="viewport-toggle#switchToDesktop">切换到桌面版</button> </div> </footer> <div class="language-switcher"> <form action="/locale/"> <ul> <li> <button class="language-switcher__selected" name="locale_id" value="en" type="submit">英语</button> </li> <li> <button name="locale_id" value="es" type="submit">español</button> </li> <li> <button name="locale_id" value="fr" type="submit">français</button> </li> <li> <button name="locale_id" value="ja" type="submit">日语</button> </li> <li> <button name="locale_id" value="pt_BR" type="submit">葡萄牙语 (巴西)</button> </li> <li> <button name="locale_id" value="uk" type="submit">乌克兰语</button> </li> <li> <button name="locale_id" value="el" type="submit">希腊语</button> </li> <li> <button name="locale_id" value="de" type="submit">德语</button> </li> <li> <button name="locale_id" value="zh_Hans" type="submit">中文 (简体)</button> </li> <li> <button name="locale_id" value="zh_Hant" type="submit">中文 (繁体)</button> </li> <li> <button name="locale_id" value="ru" type="submit">俄语</button> </li> <li> <button name="locale_id" value="he" type="submit">希伯来语</button> </li> <li> <button name="locale_id" value="eo" type="submit">世界语</button> </li> </ul> </form> </div> <div class="sponsors"> <p class="sponsors__title">由以下机构支持</p> <div class="sponsors__divider"></div> <a class="sponsors__sponsor" target="_blank" rel="noopener" href="https://aws.amazon.com/"><img class="sponsors__image" src="https://pypi-camo.freetls.fastly.net/ed7074cadad1a06f56bc520ad9bd3e00d0704c5b/68747470733a2f2f73746f726167652e676f6f676c65617069732e636f6d2f707970692d6173736574732f73706f6e736f726c6f676f732f6177732d77686974652d6c6f676f2d7443615473387a432e706e67" alt="AWS" loading="lazy"> <span class="sponsors__name">AWS</span> <span class="sponsors__service"> 云计算和安全赞助商 </span> </a> <a class="sponsors__sponsor" target="_blank" rel="noopener" href="https://www.datadoghq.com/"><img class="sponsors__image" src="https://pypi-camo.freetls.fastly.net/8855f7c063a3bdb5b0ce8d91bfc50cf851cc5c51/68747470733a2f2f73746f726167652e676f6f676c65617069732e636f6d2f707970692d6173736574732f73706f6e736f726c6f676f732f64617461646f672d77686974652d6c6f676f2d6668644c4e666c6f2e706e67" alt="Datadog" loading="lazy"> <span class="sponsors__name">Datadog</span> <span class="sponsors__service"> 监控 </span> </a> <a class="sponsors__sponsor" target="_blank" rel="noopener" href="https://www.fastly.com/"><img class="sponsors__image" src="https://pypi-camo.freetls.fastly.net/df6fe8829cbff2d7f668d98571df1fd011f36192/68747470733a2f2f73746f726167652e676f6f676c65617069732e636f6d2f707970692d6173736574732f73706f6e736f726c6f676f732f666173746c792d77686974652d6c6f676f2d65684d3077735f6f2e706e67" alt="Fastly" loading="lazy"> <span class="sponsors__name">Fastly</span> <span class="sponsors__service"> CDN </span> </a> <a class="sponsors__sponsor" target="_blank" rel="noopener" href="https://careers.google.com/"><img class="sponsors__image" src="https://pypi-camo.freetls.fastly.net/420cc8cf360bac879e24c923b2f50ba7d1314fb0/68747470733a2f2f73746f726167652e676f6f676c65617069732e636f6d2f707970692d6173736574732f73706f6e736f726c6f676f732f676f6f676c652d77686974652d6c6f676f2d616734424e3774332e706e67" alt="Google" loading="lazy"> <span class="sponsors__name">Google</span> <span class="sponsors__service"> 下载分析 </span> </a> <a class="sponsors__sponsor" target="_blank" rel="noopener" href="https://pythonlang.cn/psf/sponsors/#microsoft"><img class="sponsors__image" src="https://pypi-camo.freetls.fastly.net/524d1ce72f7772294ca4c1fe05d21dec8fa3f8ea/68747470733a2f2f73746f726167652e676f6f676c65617069732e636f6d2f707970692d6173736574732f73706f6e736f726c6f676f732f6d6963726f736f66742d77686974652d6c6f676f2d5a443172685444462e706e67" alt="Microsoft" loading="lazy"> <span class="sponsors__name">Microsoft</span> <span class="sponsors__service"> PSF 赞助商 </span> </a> <a class="sponsors__sponsor" target="_blank" rel="noopener" href="https://www.pingdom.com/"><img class="sponsors__image" src="https://pypi-camo.freetls.fastly.net/d01053c02f3a626b73ffcb06b96367fdbbf9e230/68747470733a2f2f73746f726167652e676f6f676c65617069732e636f6d2f707970692d6173736574732f73706f6e736f726c6f676f732f70696e67646f6d2d77686974652d6c6f676f2d67355831547546362e706e67" alt="Pingdom" loading="lazy"> <span class="sponsors__name">Pingdom</span> <span class="sponsors__service"> 监控 </span> </a> <a class="sponsors__sponsor" target="_blank" rel="noopener" href="https://getsentry.com/for/python"><img class="sponsors__image" src="https://pypi-camo.freetls.fastly.net/67af7117035e2345bacb5a82e9aa8b5b3e70701d/68747470733a2f2f73746f726167652e676f6f676c65617069732e636f6d2f707970692d6173736574732f73706f6e736f726c6f676f732f73656e7472792d77686974652d6c6f676f2d4a2d6b64742d706e2e706e67" alt="Sentry" loading="lazy"> <span class="sponsors__name">Sentry</span> <span class="sponsors__service"> 错误记录 </span> </a> <a class="sponsors__sponsor" target="_blank" rel="noopener" href="https://statuspage.io"><img class="sponsors__image" src="https://pypi-camo.freetls.fastly.net/b611884ff90435a0575dbab7d9b0d3e60f136466/68747470733a2f2f73746f726167652e676f6f676c65617069732e636f6d2f707970692d6173736574732f73706f6e736f726c6f676f732f737461747573706167652d77686974652d6c6f676f2d5467476c6a4a2d502e706e67" alt="StatusPage" loading="lazy"> <span class="sponsors__name">StatusPage</span> <span class="sponsors__service"> 状态页面 </span> </a></div> </body></html>