跳转到主要内容

一个介绍具有恢复功能的废纸篓功能的Plone插件。

项目描述

ftw.trash是一个Plone插件,它修改了Plone在内容被删除时的行为。当用户删除内容时,它实际上不会被删除,而是被标记为已删除。当需要时,可以恢复已删除的内容。

安装和使用

  • 请注意,ftw.trash需要并安装了collective.deletepermission

  • ftw.trash添加到您的buildout配置中的eggs

    [instance]
    eggs +=
        ...
        ftw.trash
  • 在Plone中安装ftw.trash插件(插件控制面板或portal_setup或quickinstaller)。

  • 删除内容看起来与标准Plone完全一样,但实际上不会删除内容,而只是隐藏它。

  • 管理员可以通过用户菜单访问全局废纸篓视图来恢复内容。

  • 目前尚未实现个人废纸篓。

https://github.com/4teamwork/ftw.trash/raw/master/docs/trash.png

查询

已修补目录,包括默认查询{'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:对象已被恢复。

内部

  • 当内容被删除时,它被标记为 ITrashedIRestorable,子对象只被标记为 ITrashed

  • 只能恢复删除结构的根节点,从而提供 IRestorable。在没有其已删除的父对象的情况下恢复子对象是不可能的,因为它们的父对象(们)将缺失。

  • 回收站中的内容不会移动。

  • 目录的 searchResults 方法被修补,以便默认情况下过滤回收站对象。

  • contentItems 方法被修补以排除回收站内容。它用于 listFolderContentsgetFolderContents

  • 除非用户具有 Manager 角色,否则防止回收站内容被发布/通过浏览器访问。

  • 为了恢复内容,需要 Restore trashed contentAdd portal content 权限。默认情况下,Restore trashed content 被授予网站根目录上的 ManagerSite Administrator 角色。

开发

  1. 复制此存储库

  2. 克隆您的分支

  3. Shell: ln -s development.cfg buildout.cfg

  4. Shell: python bootstrap.py

  5. Shell: bin/buildout

运行 bin/test 以测试您的更改。

或者通过运行 bin/instance fg 启动一个实例。

变更日志

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)

  • contentItemslistFolderContentsgetFolderContents不再返回已删除的内容。[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 (219.1 kB 查看哈希值)

上传时间 源代码

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面