在Plone中管理链接完整性。
项目描述
plone.app.linkintegrity
概览
此包在Plone中实现链接完整性检查。它利用zope3事件系统来尽可能少地修改Plone本身。
功能
此包处理在Plone用户界面中删除一个项(即在视图folder_contents中通过操作/删除删除项)。
每当一个通过<a>或<img>标签引用的对象即将被删除时,都会向用户显示一个确认表单。同样适用于通过关系字段引用并在zc.relation目录中索引的内容,如通过相关项目行为。然后他们可以决定确实删除该对象,破坏网站的链接完整性,或者首先编辑指向该项目的链接对象。
对于设置在文本字段中的关系,使用isRelated引用。对于这些引用,plone.app.linkintegrity还处理修改,如果通过isRelated引用的内容被修改。对于所有其他相关内容,其他机制处理更新。这种处理程序可以在plone.app.relationfield中找到。
3.0版本中的更改
Linkintegrity关系不再存储在Products.Archetypes的reference_catalog中。而是使用zc.relation。
不再拦截在manage_deleteObjects上的请求。这意味着使用其他方法(如manage_deleteObjects、plone.api.content.delete、ZMI中的ttw)删除不再会警告关于链接完整性的破坏。现在它现在简单地将在用户界面中添加有关链接完整性破坏的信息。
LinkIntegrityNotificationException不再在任何地方抛出。
刷新链接完整性网站状态
如果您需要更新/刷新整个网站的链接完整性状态,可以调用@@updateLinkIntegrityInformation视图。
这可能是一项非常耗时的操作。
自定义
在对象创建、添加、修改事件上,将调用modifiedContent处理程序。如果找到,此处理程序会适配一个IRetriever对象。该包包含一个针对Dexterity内容的通用适配器。您可以轻松编写自定义适配器,实现IRetriever接口以用于您的内容类型。请参阅此包中的retriever模块以获取示例。
API
要检查删除一个或多个对象时是否会出现破坏,可以使用以下代码
from plone import api
portal = api.portal.get()
view = api.content.get_view(
'delete_confirmation_info',
portal,
self.request)
breaches = view.get_breaches([obj1, obj2])
get_breaches会忽略由删除项目(及其子项目,如果项目是文件夹)而引起的任何破坏。
每个 breaches 的违规都是一个字典,包含一个 target(一个包含要删除的对象信息的字典)和一系列 sources。每个来源又是一个字典,包含 uid、title、url 和 accessible(一个布尔值,表示用户是否能访问该来源)。
要检查 html 字段中的链接项,可以使用 plone.app.linkintegrity.utils 中的方法。
- utils.hasIncomingLinks(obj)
测试一个对象是否被其他对象链接。
- utils.hasOutgoingLinks(obj)
测试一个对象是否链接到其他对象。
- utils.getIncomingLinks(obj, from_attribute)
返回一个包含入站关系的生成器。 from_attribute 是可选的,默认为 plone.app.linkintegrity.utils.referencedRelationship。如果设置为 None,将搜索指向该对象的全部引用。
- utils.getOutgoingLinks(obj, from_attribute)
返回一个包含出站关系的生成器。 from_attribute 是可选的,默认为 plone.app.linkintegrity.utils.referencedRelationship。如果设置为 None,将搜索从该对象指向的所有引用。
- utils.linkintegrity_enabled()
测试 linkintegrity 功能是否对用户启用。
变更日志
4.0.6 (2024-06-13)
测试
为损坏的复制粘贴添加回归测试。见 https://github.com/plone/Products.CMFPlone/issues/2866 [pbauer] (#71)
4.0.5 (2024-05-30)
错误修复
修复了具有相同前缀的对象计算违规的潜在问题 [pgrunewald] (#97)
4.0.4 (2024-05-06)
错误修复
改进了计算违规的性能。 [pgrunewald] (#100)
修复了具有多个链接的文档的违规报告。 [pgrunewald] (#102)
4.0.3 (2023-09-29)
错误修复
在 delete_confirmation_info 中按违规一次报告来源。 [jaroel] (#95)
4.0.2 (2023-08-31)
错误修复
在删除内容项时,从目录中删除出站 'isReferencing' 关系值。 [ksuess] (#93)
内部
更新配置文件。 [plone 开发者] (7723aeaf)
4.0.1 (2023-04-14)
内部
更新配置文件。 [plone 开发者] (5623f8b3)
4.0.0 (2023-03-13)
破坏性更改
放弃与 Plone 5.2 的兼容性,仅支持 Plone 6。 [maurits] (#60)
错误修复
修复了测试层设置。创建的内容从其他包的层中泄漏。 [maurits] (#846)
3.6.1 (2022-04-28)
错误修复
测试修复:仅在 Python 2 上加载 plone.app.contenttypes 迁移层。 [maurits] (#641)
3.6.0 (2022-02-23)
新功能
跟踪在 IFRAME SRC 引用中引用的 PDF 和其他网站对象的链接完整性。 (#84)
3.5.0 (2021-12-29)
新功能
跟踪 HTML 源标签中视频和音频文件的完整性。 (#77)
3.4.1 (2021-03-02)
错误修复
尽可能使用 base64.decodebytes 代替 decodestring。修复了测试中的 Python 3.9 兼容性问题。 [maurits] (#81)
3.4.0 (2021-02-23)
新功能
放弃对 Plone 5.1 的支持,因为可能与较旧的 plone.app.uuid 不兼容。 [maurits] (#79)
错误修复
修复了编辑链接到您无权查看的页面的页面时出现的未授权异常。修复了 问题 79。 [maurits] (#79)
3.3.14 (2020-09-07)
错误修复
修复了对 ComponentLookupError 的弃用警告。 [maurits] (#3130)
3.3.13 (2020-04-20)
错误修复
小的打包更新。 (#1)
3.3.12 (2019-10-12)
错误修复
显式加载依赖项的 zcml,而不是使用 includeDependencies。 [maurits] (#2952)
3.3.11 (2019-06-27)
错误修复
添加缺失的 i18n:translate 调用 [erral] (#73)
3.3.10 (2019-06-19)
错误修复
在测试中接受没有 aq_parent 的损坏对象 [jensens] (#72)
3.3.9 (2019-05-01)
错误修复
修复了错误的 i18n:translate 以避免在翻译文件中 ${DYNAMIC_CONTENT} [erral] (#69)
3.3.8 (2019-02-08)
没有重大变化。
3.3.7 (2018-09-23)
错误修复
修复了 Python 3 中的测试 [pbauer]
3.3.6 (2018-06-19)
错误修复
修复了与合并的 plone.login 一起工作的测试 [jensens]
Python 3 兼容性。 [pbauer]
3.3.5 (2018-04-04)
错误修复
将删除确认屏幕中的字符串标记为可翻译 [erral]
3.3.4 (2018-02-04)
错误修复
优化旧 Archetypes 引用的迁移。 [davisagli]
为 Python 2/3 兼容性做准备。 [ale-rt, pbauer]
3.3.3 (2017-10-02)
新功能
防止在注册表中关闭 linkintegrity-handler 时执行任何操作。此更改还防止了从 AT 到 DX 迁移时的一些问题,因为迁移期间 linkintegrity 已禁用。 [pbauer]
错误修复
修复了在 delete_confirmation_info.pt 中缺失的tal条件,导致段落总是可见,即使没有链接破坏。 [arsenico13]
修复了在Language='all'后view @@updateLinkIntegrityInformation不再工作的问题。[pbauer]
3.3.2 (2017-08-14)
错误修复
3.3.1 (2017-06-01)
错误修复
改进了代码质量。[gforcada]
移除了unittest2依赖。[kakshay21]
3.3 (2017-04-20)
新功能
支持由delete_confirmation_info对话框检查任何zc.relation引用,而不仅仅是文本中链接的引用。[thet]
错误修复
遵守PEP8。[thet]
更新代码以遵循Plone风格指南。[gforcada]
3.2.2 (2017-04-02)
新功能
使用plone.namedfile进行图像测试。[didrix]
错误修复
修复了日志方法中的拼写错误。[tomgross]
3.2.1 (2017-02-20)
错误修复
即使目录不同步,也显示破坏信息。[tomgross]
3.2.0 (2017-02-12)
新功能
与ZCatalog 4兼容(升级步骤)[pbauer, jensens]
3.1 (2016-12-30)
新功能
关于要删除文件夹内内容的详细信息。这些信息包括已删除对象的数量、子文件夹的数量和已发布对象的数量。[karalics]
3.0.8 (2016-11-09)
错误修复
在python文件上添加编码头。[gforcada]
再次移除对Archetypes的硬依赖。[davisagli]
3.0.7 (2016-09-16)
错误修复
在调用@@updateLinkIntegrityInformation时使用事务保存点,以控制内存使用。[ale-rt]
3.0.6 (2016-08-17)
错误修复
修复了删除确认中的对象URL。[vangheem]
使用zope.interface装饰器。[gforcada]
3.0.5 (2016-04-15)
修复
修复测试隔离问题:如果测试直接或间接调用transaction.commit(),则不能是集成测试,或者避免提交或将层更改为功能层。修复:https://github.com/plone/plone.app.linkintegrity/issues/36 [gforcada]
3.0.4 (2016-02-02)
修复
处理尚未具有intid的链接。应有助于解决升级问题。[vangheem]
当Web服务器重写门户名称时,使handler.findObject()正常工作。[tschorr]
3.0.3 (2015-11-26)
新功能
引入IRetriever适配器以提供定制灵活性。[tomgross]
3.0.2 (2015-09-27)
从delete_confirmation_info.pt中移除xml:lang和错误的xmlns。[vincentfrentin]
3.0.1 (2015-09-11)
在删除确认中不再显示两次delete_confirmation_info。修复#27 [pbauer]
3.0 (2015-09-08)
通过使用zc.relation而不是reference_catalog(Products.Archetypes)来放弃对Archetypes的依赖。[bloodbare, pbauer, vangheem]
不再拦截manage_deleteObjects上的请求。而是在delete_confirmation中仅注入警告。这意味着使用其他方法(如manage_deleteObjects、plone.api.content.delete、ZMI中的ttw)删除不再警告链接破坏。[bloodbare, pbauer, vangheem]
LinkIntegrityNotificationException不再在任何地方抛出。[bloodbare, pbauer, vangheem]
2.1.2 (2015-05-04)
修复了confirmation.pt中的HTML结构。[vincentfretin]
2.1.1 (2015-03-13)
当使用dexterity对象的更新视图时,只有当对象提供IReferenceable时才调用方法。[frapell]
从publisher monkey patch中移除了对Zope 2.10的兼容性。[davisagli]
2.1.0 (2014-10-23)
从plone.app.registry而不是从portal_properties读取enable_link_integrity_checks设置。[timo]
重构包以完全支持dexterity框架。在plone.app.testing中使用两个不同的测试层,将所有doctests迁移到实际的TestCases。[saily, do3cc]
2.0.0 (2014-04-13)
适应DT、DD和DL元素的移除。从模板中移除DL的门户消息。https://github.com/plone/Products.CMFPlone/issues/153 [khink, mrtango]
1.5.6 (2015-08-13)
将plone5分支的改进回滚到@@updateLinkIntegrityInformation。[pbauer]
1.5.4 (2014-01-27)
添加了对resolveuid uid之后的子路径的支持。[hoka]
1.5.3 (2013-08-13)
在解压缩请求数据时设置最大大小。[davisagli]
修复了dexterity referenceablebehavior集成。[maurits]
修复#13681,现在相互引用的文档也会触发链接完整性警告。[do3cc]
1.5.2 (2013-05-23)
异常现在返回对象的repr()而不是str()。这样,对于文件内容类型,我们可以避免将整个对象数据加载到内存中。这解决了https://dev.plone.org/ticket/13519 [ericof]
1.5.1 (2013-03-05)
Unicode链接不应引发错误。修复了https://dev.plone.org/ticket/13468 [vangheem]
Dexterity:为支持Plone 4.3,使用zope.lifecycleevent而不是zope.app.container接口。[jone]
避免在删除过程中源或目标已经被删除时的引用完整性检查错误。这在大型删除过程中可能会发生。[thomasdesvenain]
通过Monkey补丁将Zope HTTPResponse的status_code映射到linkintegritynotificationexception,以返回200代码。[thepjot]
1.5.0 (2013-01-17)
修复移除确认视图的bug。显示的是门户类型标题而不是名称。此更改还破坏了一些检查名称而不是标题的测试,但我已经修复了它们。[jianaijun]
添加对Dexterity内容类型的支持。Dexterity的链接完整性支持需要启用plone.app.referenceablebehavior行为,以便Dexterity项可以与Archetypes引用一起使用。[jpgimenez]
1.4.7 (2012-10-03)
修复了extractLinks上的UnicodeDecodeError。这关闭了https://dev.plone.org/ticket/13168 [ericof]
1.4.6 (2012-07-02)
不再有zope.app依赖。[hannosch]
删除对Archetypes的硬依赖。[davisagli]
1.4.5 - 2012-02-24
修复处理 portal 内对象绝对链接时的错误,这阻止了基于这些链接创建引用。这关闭了https://dev.plone.org/ticket/12402 [davisagli]
稳定了确认视图中返回的违规源排序顺序。[davisagli]
如果实例不提供访问器方法,则使用get方法检索字段值。这适用于通过模式扩展添加的字段。[malthe]
显式支持resolveuid/UID引用,通过解析和解析这些引用而不是依赖于视图或脚本(这些脚本不起作用)。这修复了启用了按UID链接的站点的链接完整性。这关闭了https://dev.plone.org/ticket/12104 [mj]
1.4.4 - 2011-10-04
为克隆内容项添加完整性引用。这修复了http://dev.plone.org/plone/ticket/12254。[gotcha]
在内容项的复制粘贴期间跳过事件订阅者。这修复了http://dev.plone.org/plone/ticket/12206。[gotcha]
如果不可用,提供仅适用于Archetypes的回退,以恢复与Plone 4.0.x的兼容性。[witsch]
1.4.3 - 2011-09-14
修复编辑器无法访问的内容的完整性引用生成。[witsch]
修复相对链接的处理,而不是依赖于Acquisition。[witsch]
1.4.2 - 2011-07-04
没有UUID的对象不能导致链接完整性违规。这修复了http://dev.plone.org/plone/ticket/11904。[WouterVH]
调整测试以不再依赖于子集合。[hannosch]
添加新的测试以证明现在可以安全地使用isLinked。[gotcha]
1.4.1 - 2011-05-12
修复请求中确认的oids冒号分隔列表的解码错误,其中一个oids包含冒号。[davisagli]
添加MANIFEST.in。[WouterVH]
1.4.0 - 2011-01-03
使用plone.uuid查找内容UUID。[toutpt, davisagli]
1.3.3 - 2011-07-05
添加新的测试以证明现在可以安全地使用isLinked。[gotcha]
1.3.2 - 2011-05-12
修复请求中确认的oids冒号分隔列表的解码错误,其中一个oids包含冒号。[davisagli]
1.3.1 - 2010-08-08
调整测试以不再依赖于子集合。[hannosch]
使用官方aq_get API从上下文获取请求。[hannosch]
1.3.0 - 2010-07-18
将许可证更新为仅GPL版本2。[hannosch]
1.3b2 - 2010-06-13
避免使用已弃用的five:implements指令。[hannosch]
1.3b1 - 2010-06-03
修复findObject以捕获ZTK NotFound异常,该异常可能由request.traverseName引发。修复了http://dev.plone.org/plone/ticket/10549 [davisagli]
1.3a5 - 2010-05-01
正确处理重试异常,而不是在发布时使用 debug=1 的特殊异常处理方式 [davisagli]
1.3a4 - 2010-03-06
如果文本字段为 None,则不要终止。在这种情况下,HTML解析器会引发一个 TypeError,而不是 HTMLParseError。 [wichert]
1.3a3 - 2010-02-18
更新模板以匹配最近的标记规范。参见 http://dev.plone.org/plone/ticket/9981 [spliter]
将测试设置转换为 collective.testcaselayer。 [witsch]
更新测试,使其不依赖于特定的CSS类或ID。参见 http://dev.plone.org/plone/ticket/10231 [limi, witsch]
1.3a2 - 2009-12-02
修复Zope 2.12中删除确认页面最终提交的问题。此修复关闭了 http://dev.plone.org/plone/ticket/9699。 [davisagli]
1.3a1 - 2009-11-17
由于标签默认隐藏,现在可以直接访问子主题页面。 [davisagli]
部分禁用关于撤销日志的测试,因为Plone 3和4的结果不同,这可能是由于测试设置的变化。参见 http://dev.plone.org/plone/ticket/7784 [witsch]
添加测试以验证删除操作后删除项的撤销日志条目不会丢失。参见 http://dev.plone.org/plone/ticket/7784 [witsch]
1.2 - 2009-10-10
在尝试解析链接对象时,也捕获 NotFound 异常。 [optilude]
1.1 - 2009-08-31
与repoze.zope2兼容。有关部署说明,请参阅README.txt。 [optilude]
不要使用id()记录确认项。它可能在请求边界上更改。使用编码的_p_oid代替。 [optilude]
在尝试将链接解析为其对应的对象时,也考虑遍历适配器。 [witsch]
修复了一些测试,以确保在Zope 2.12中将文本值视为text/html,因为zope.contenttype在猜测MIME类型时更为严格。 [davisagli]
不要在不再需要的Zope 2.12中安装异常钩子,这会破坏异常处理。 [davisagli]
1.0.12 - 2009-06-03
在清理违规信息时,比较UID而不是对象,以避免在“在...中...”表达式中的昂贵的哈希计算。这使得删除链接对象的速度更快。 [regebro]
1.0.11 - 2008-11-15
修复代码以防止静默吞咽 ConflictErrors。 [witsch]
修复对已删除对象的悬空引用问题。修复了 http://dev.plone.org/plone/ticket/8349 和 http://dev.plone.org/plone/ticket/8390。 [witsch]
1.0.10 - 2008-07-07
修复了识别包含空格的ID的文件(或任何对象)链接的问题。修复了 http://dev.plone.org/plone/ticket/8167。 [maurits]
更新测试,以与LinguaPlone一起工作,通过在新对象上取消标记创建标志。 [maurits]
1.0.9 - 2008-05-08
使用获取API来支持“philikon-aq”分支。 [witsch]
修复了在请求期间更新链接完整性引用时的问题,该请求尝试删除多个其他对象。 [witsch]
1.0.8 - 2008-04-21
向 confirmation.pt 添加了缺少的i18n标记,同时也修复了 http://dev.plone.org/plone/ticket/7995。 [witsch]
1.0.7 - 2008-03-27
修复了意外删除与链接完整性无关的引用的问题。 [dunny]
1.0.6 - 2008-03-08
添加了缺少的命名空间声明,以避免有关它的警告。 [wiggy]
1.0.5 - 2008-02-13
向 confirmation.pt 添加了缺少的i18n标记。此修复关闭了 http://dev.plone.org/plone/ticket/7688。 [hannosch]
1.0.4 - 2008-01-03
处理没有附加请求对象的 IObjectRemovedEvents。 [witsch]
更新测试以与Plone 4.0一起工作。 [hannosch]
引用项现在按字母顺序列出 [witsch]
1.0.3 - 2007-12-05
修复了在GenericSetup更新后设置测试层的问题 [witsch]
1.0.2 - 2007-11-07
修复了解析错误时解析错误的问题 [witsch]
修复了由于使用pickle导致的安全问题(参见CVE-2007-5741) [witsch]
1.0.1 - 2007-09-10
为所有站点内容添加了更新链接完整性的视图[witsch]
在info.py中,当遇到缺少属性表时,代码的容错性更高[hannosch]
1.0 - 2007-08-16
小错误修复和增强[witsch]
1.0rc1.1 - 2007-07-12
升级到Zope 2.10.4后的错误和测试修复[witsch]
1.0rc1 - 2007-07-08
错误修复和额外的测试[witsch]
1.0b3 - 2007-05-04
无更改。
1.0b2 - 2007-04-30
集成Plone的“删除确认”页面[witsch]
1.0b1 - 2007-03-03
修复与更改的< cite >folder_contents cite>和Unicode问题相关的测试[witsch]
针对五个异常所需的monkey补丁的更新[wiggy]
1.0a2 - 2007-02-07
错误修复和其他小增强[witsch]
鸡蛋化和移动到plone.app命名空间[optilude]
概念证明和初始版本[witsch]
初始包结构[zopeskel]
项目详情
下载文件
下载您平台对应的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分布
构建分布
plone_app_linkintegrity-4.0.6.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | be0035838fc2963cf42a40fe6fc09c171ef249a7286f84f38fc0d91469bbf406 |
|
MD5 | e99bfefbc5f4a845b6fc1117caae75e9 |
|
BLAKE2b-256 | 581b605e1b9dd129afaf4c3df782969b7a358bbdd20222e3eb4770d2a7e7f9ef |
plone.app.linkintegrity-4.0.6-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d3fea0d05fe5bf5fb0d34428d1596d92884af87f2d2528d96520e592e73dd838 |
|
MD5 | e8648ba09b92ad9812a32c30c4fa756c |
|
BLAKE2b-256 | 222e15130bbe534a2ecdfa3282d83ac6d9901d88dbb8dfefd9779e00bd8701b7 |