权限

Wagtail采用并扩展了Django权限系统,以满足网站内容创建的需求,诸如审批流程以及多个团队在某个站点(或在同一Wagtail安装下的多个站点)的不同区域上工作等等。经由Wagtail管理界面的“设置”下的“用户组(Group)”区域,可对权限进行配置。

页面的权限

在页面树的任何位置,都可将权限附加上去,并沿树向下传导。比如在某个站点有着这样的页面树时:

  1. MegaCorp/
  2. About us
  3. Offices/
  4. UK
  5. France
  6. Germany

随后某个有着在“Offices”页面有着“编辑”权限的组,将自动收到编辑“UK”、“France”与“Germany”页面的能力。通过将权限指派给“根”页面,便可全局地设置权限 — 因为所有页面都必须存在于根节点之下,同时根是无法删除的,那么此项权限就会覆盖当前与未来存在的所有页面。

在某名用户经由Wagtail管理界面创建一个页面的时候,那名用户就被制定为其所创建页面的所有者了。有着“添加页面”权限的所有用户,都具有编辑其拥有页面的权限,以及添加新页面的权限。这是出于页面的创建,典型的就是一个涉及到创建一些草稿版本的迭代过程 — 赋予用于创建草稿的能力,而不让他们进行接下来的编辑工作,是毫无用处的(this is in recognition of the fact that creating pages is typically an iterative process involving creating a number of draft versions — giving a user the ability to create a draft but not letting them subsquently edit it would not be very useful)。能对某个页面进行编辑,也就意味着能删除该页面;与Django的标准权限模型不同,Wagtail中没有明显的“删除”权限。

完整的可用权限集如下:

  • Add — 赋予创建此页面之下新的子页面的能力(提供了页面模型允许这一点 — 请参阅父页面/子页面类型规则),以及编辑与删除当前用户所有的页面的能力。除非用户还具有“发布”权限,那么已发布的页面是无法删除的。

  • Edit — 授予对该页面,以及其下所有页面的编辑与删除能力,而无关页面的归属。仅有“编辑”权限的用户,是不能创建新页面的,只能对既有页面进行编辑。对于已发布的页面,除非该用户还有着“发布”权限,否则不能被删除。

  • Publish — 授予对该页面和/或其子页面进行发布或撤回的能力。不具有发布权限的用户,无法直接对站点作出访问者可见的修改;而是必须将修改提交审核(这将发出一条通知给有着发布权限的用户)。发布权限与编辑权限是分开的;仅有发布权限的用户,将不能够进行任何编辑工作。

  • Bulk delete — 允许用户以单次操作,删除一些有着后代页面的页面。如没有此种权限,那么就必须在删除父页面之前,先逐个地删除后代页面。这实际上是一种避免误删除的安全措施。Bulk delete必须与“添加”/“编辑”权限结合使用,因为他并未提供了到其本身的任何删除权力;他仅提供了一直该用户已具有的权限的“捷径”。比如,某名仅有着“添加”与“批量删除”权限的用户,将只能在受影响的页面属于那名用户,且这些页面处于尚未发布状态时,进行批量删除。

  • Lock — 授予对该页面(及其下的所有页面)进行编辑锁定或解锁的能力,以阻止用户再对其进行任何的编辑。

对于草稿,只有在用户有着编辑或发布权限时,才能查看到。

图片/文档的权限

图片与文档的权限规则,在与页面类似的基础上运作。图片与文档被看着是由上传他们的用户“所有”;有着“添加”权限的用户,也具有对他们所拥有的图片/文档内容进行编辑的能力;删除则被看着是与编辑等同的,而非一种特别的权限类型。

对特定的一些图片与文档的访问,可通过设置 “ 集合(collections) ”进行控制。默认所有图片与文档,都属于“根”集合,但可经由管理界面的 Settings -> Collections 区域,创建处新的集合。在“根”上设置的权限,适用于所有集合,因此某名具有在根上的图片的 “编辑” 权限的用户,就可对所有图片进行编辑;在其他集合上设置的权限,则只适用与那个集合了。