如何在Plone中为特定角色下载文件?

时间:2013-08-26 05:36:18

标签: python plone

我希望Plone中的文件夹内容仅适用于某些角色。这可以轻松完成吗?目前,任何点击文件夹内容中文件名超链接的人都可以轻松下载文件。我知道使用ZMI覆盖at_download代码的站点范围选项。

2 个答案:

答案 0 :(得分:2)

这可能不是那么简单,你需要在一个小的Plone产品中添加一些代码(没有TTW)。下面的代码片段未经过测试。

  1. Plone文件是使用Archetypes框架开发的(这可能会在Plone 5上发生变化)。您需要更改的是read_permission字段的file(请参阅Archetypes field reference)。

    来自Products.Archetypes.content.file的

    导入ATFile

    ATFile.schema ['file']。read_permission ='you new permission'

  2. 您只需将新权限分配给角色即可。

    1. 这可能还不够(现在可能步骤1没用)。您需要对[plone.app.blob extension][2]执行相同的操作:

      来自plone.app.blob.subtypes的

      导入SchemaExtender

      SchemaExtender.fields [0] .. read_permission ='你的新许可'

    2. 上一篇:您可能需要自定义file_view template或未经许可的用户访问文件视图时会出现“未授权”错误。

答案 1 :(得分:2)

无代码的方法是使用Plone的工作流程系统。

开箱即用,Plone的文件和图像内容类型没有自己的工作流程。这意味着文件和图像将简单地继承其父文件夹的发布状态。这很容易理解,但它不符合您的描述。

要更改此情况,您可以使用“类型”配置面板打开文件和图像的独立工作流程。然后,它们的发布状态可以与其包含的文件夹分开设置。通常,您选择与文档相同的工作流程。然后,您可以发布文件夹并列出其内容,同时将文件设置为私有 - 因此需要登录才能查看。

如果您需要在不同的地方以不同的方式工作,您可以打开“放置”工作流程(通过在附加组件面板中添加它来打开它;它已预先安装但未激活)。这允许站点的不同部分中的不同工作流程。它增加了复杂性,但通常是解决这种难题的理想方法。