Permissions 允许在Wagtail中创建和发布,但禁用编辑和删除

Permissions 允许在Wagtail中创建和发布,但禁用编辑和删除,permissions,wagtail,Permissions,Wagtail,我有一个组,它要求一个内容类型,我应该允许用户添加和发布页面,但禁用任何更改。基本上,发布后的页面应为“只读”。 有没有办法通过wagtail中的权限工具实现这一点 我有一个LabPage,并且我已经注册了要反映在组显示中的权限: 摇尾钩 我只为LabPage设置了“添加”权限。“更改”和“删除”未设置: 但myLabPage包含在站点中,权限被常规站点页面权限覆盖: 我的问题是,我如何允许此特定组的成员拥有网站的默认权限,但在LabPage的特定情况下,我可以添加和发布,但不能编辑或删除

我有一个组,它要求一个内容类型,我应该允许用户添加和发布页面,但禁用任何更改。基本上,发布后的页面应为“只读”。 有没有办法通过wagtail中的权限工具实现这一点

我有一个
LabPage
,并且我已经注册了要反映在组显示中的权限:

摇尾钩

我只为
LabPage
设置了“添加”权限。“更改”和“删除”未设置:

但my
LabPage
包含在站点中,权限被常规站点页面权限覆盖:

我的问题是,我如何允许此特定组的成员拥有网站的默认权限,但在
LabPage
的特定情况下,我可以添加和发布,但不能编辑或删除


一个更一般的问题是:如何仅为特定组设置每种内容类型的权限(例如:
LabPage
),而不被父组设置覆盖如何使用摇尾钩实现这一点?

我找到了一个解决方案,解决了90%的问题。它主要归结为在页面创建后将所有权更改为无

解决方案详细信息:

创建两个组:

管理组

成员组

基本上,“成员组”中的用户可以创建和发布自己的页面

为了阻止这种情况,我在
wagtail\u hooks.py
中创建了一个钩子:

@hooks.register('after_create_page')
def set_read_only_lab_page(request, page):
if page.specific_class == MyPage:
    page.owner = None
    page.save()
    return messages.info(request, "Created read only My Page.")
因此,受限“成员组”的成员在页面创建后失去所有权,但“管理组”的成员仍然可以编辑站点中的所有文档

此解决方案的唯一缺点是,受限制的成员仍然有权取消发布站点中的所有其他页面

另一个变体是删除受限制成员的“发布”权限,但管理员将不得不调整提交的页面


虽然很难看,但它很管用。有更好的建议吗?

“文档”是指用于存储文件的文档还是指一页一个文档?您始终可以对文档(或页面)进行子类化,并定义自己的clean方法。但这并不会改变用户界面。很抱歉造成混乱。我的问题涉及一页。为了澄清,我修改了上面的文本。
@hooks.register('after_create_page')
def set_read_only_lab_page(request, page):
if page.specific_class == MyPage:
    page.owner = None
    page.save()
    return messages.info(request, "Created read only My Page.")