一个介绍具有恢复功能的废纸篓功能的Plone插件。
项目描述
ftw.trash是一个Plone插件,它修改了Plone在内容被删除时的行为。当用户删除内容时,它实际上不会被删除,而是被标记为已删除。当需要时,可以恢复已删除的内容。
安装和使用
请注意,ftw.trash需要并安装了collective.deletepermission。
将ftw.trash添加到您的buildout配置中的eggs
[instance] eggs += ... ftw.trash
在Plone中安装ftw.trash插件(插件控制面板或portal_setup或quickinstaller)。
删除内容看起来与标准Plone完全一样,但实际上不会删除内容,而只是隐藏它。
管理员可以通过用户菜单访问全局废纸篓视图来恢复内容。
目前尚未实现个人废纸篓。
查询
已修补目录,包括默认查询{'trashed': False}。这确保我们默认只处理“未删除”的对象。
如果您想访问已删除的对象,您可以使用以下值之一使用查询关键字trashed
False:仅返回未删除的对象。
True:仅返回已删除的对象。
None:不应用“已删除”过滤器,返回已删除和“未删除”的对象。
这些过滤器仅适用于使用portal_catalog.searchResults时。当使用portal_catalog.unrestrictedSearchResults时,行为不同,特别是对于trashed=None,因为此方法未修补。
删除和删除方法
ftw.trash 修补了 manage_delObjects,使其将内容移入回收站而不是删除。 ftw.trash 还添加了新的方法
parent.manage_trashObjects([id1, id2, ..]):将内容移入回收站。
parent.manage_immediatelyDeleteObjects(([id1, id2, ..]):立即删除内容而不将其移入回收站。
parent.manage_delObjects([id1, id2, ..]):将内容移入回收站。如果从 ZMI(或链接完整性检查器)调用,则内容将被立即删除。
当在路径中安装 ftw.trash 时,补丁应用于网站根目录、DX-和 AT 文件夹。为了使方法正常工作,还必须安装通用设置配置文件。
暂时禁用废纸篓功能
您可以通过手动设置环境变量 DISABLE_FTW_TRASH 或使用提供的上下文管理器来实现。
from ftw.trash.utils import temporary_disable_trash
with temporary_disable_trash():
self.portal.manage_delObjects([container1.getId()])
设置恢复内容所需的权限
恢复页面可以与向容器中添加新页面进行比较。因此,默认情况下,我们需要在父对象上设置 Add portal content 权限才能恢复内容。
然而,这取决于应用程序和内容类型 - 有些内容类型被视为其父内容的一部分,在这种情况下,我们希望要求父对象具有 Modify portal content 权限。这可以通过为要恢复的内容类型注册一个 IIsRestoreAllowedAdapter 来实现。例如
@implementer(IIsRestoreAllowedAdapter)
@adapter(IMyType, IMyBrowserLayer)
def is_restore_allowed_for_my_type(context, request):
parent = aq_parent(aq_inner(context))
return getSecurityManager().checkPermission('Modify portal content', parent)
事件
以下对象事件被触发
ftw.trash.interfaces.IBeforeObjectTrashedEvent:对象将被移入回收站。
ftw.trash.interfaces.IObjectTrashedEvent:对象已被移入回收站。
ftw.trash.interfaces.IBeforeObjectRestoredEvent:对象将被恢复。
ftw.trash.interfaces.IObjectRestoredEvent:对象已被恢复。
内部
当内容被删除时,它被标记为 ITrashed 和 IRestorable,子对象只被标记为 ITrashed。
只能恢复删除结构的根节点,从而提供 IRestorable。在没有其已删除的父对象的情况下恢复子对象是不可能的,因为它们的父对象(们)将缺失。
回收站中的内容不会移动。
目录的 searchResults 方法被修补,以便默认情况下过滤回收站对象。
contentItems 方法被修补以排除回收站内容。它用于 listFolderContents 和 getFolderContents。
除非用户具有 Manager 角色,否则防止回收站内容被发布/通过浏览器访问。
为了恢复内容,需要 Restore trashed content 和 Add portal content 权限。默认情况下,Restore trashed content 被授予网站根目录上的 Manager 和 Site Administrator 角色。
开发
复制此存储库
克隆您的分支
Shell: ln -s development.cfg buildout.cfg
Shell: python bootstrap.py
Shell: bin/buildout
运行 bin/test 以测试您的更改。
或者通过运行 bin/instance fg 启动一个实例。
链接
版权
本软件包由 4teamwork 版权所有。
ftw.trash 根据 GNU 通用公共许可证版本 2 许可。
变更日志
1.7.4 (2021-06-01)
仅针对基于 IItem 的对象检查回收站接口。[mathias.leimgruber]
1.7.3 (2020-01-07)
防止长路径的垃圾项目隐藏垃圾视图中的操作按钮。[djowett-ftw]
1.7.2 (2019-12-09)
将垃圾用户操作从“user_management”重命名为“trash”。如果您使用ftw.usermanagement,则应重新安装它。[jone]
1.7.1 (2019-12-05)
修复迁移Plone站点时的错误。[jone]
1.7.0 (2019-12-05)
迁移Plone站点时禁用垃圾功能。[jone]
1.6.0 (2019-12-04)
引入temporary_disable_trash上下文管理器。[mathias.leimgruber]
1.5.1 (2019-10-18)
在垃圾中递归检查安全性,以便与标准Plone具有相同的行为。[jone]
1.5.0 (2019-10-02)
让contentItems、listFolderContents和getFolderContents不再返回已删除的内容。[jone]
1.4.1 (2019-07-25)
使在垃圾视图中删除单个项目成为可能。[jone]
1.3.1 (2019-04-23)
即使没有足够的权限删除实际项目,也会清理垃圾。[mathias.leimgruber]
1.3.0 (2018-12-17)
添加Plone 5.1支持。[jone]
1.2.1 (2018-11-13)
修复Products.PloneFormGen,使其能够识别垃圾对象。[Nachtalb]
1.2.0 (2018-08-16)
在恢复文件时,重定向到/view,以便不下载文件。[jone]
提供manage_immediatelyDeleteObjects方法。[jone]
修复同时存在父项和子项时清理垃圾的错误。[jone]
修复尝试恢复已删除父项的子项时的错误消息。[jone]
1.1.1 (2018-08-03)
在PyPI上显示更改日志。[jone]
1.1.0 (2018-08-03)
在恢复父项时,不要恢复早期已删除的子项。[jone]
允许从ZMI中删除内容。[jone]
在删除和恢复对象时触发事件。[jone]
不要拦截链接完整性检查器。[jone]
将“清理垃圾”功能添加到垃圾视图中。[jone]
1.0.0 (2018-07-05)
初始实现[jone]
项目详情
ftw.trash-1.7.4.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7f15569c5d34c775e1c93239d8f3bddaea580a85b7625889eae955b388c975fc |
|
MD5 | dc74e4073d60d936eaa2e53b08ec58aa |
|
BLAKE2b-256 | 34cfa96e3e8374ac28c267352ed51512e85891e5d96af4adb2fd7361053bc618 |