允许 CREATE 和 PUBLISH 但在 Wagtail 中禁用 EDIT 和 DELETE
Allow CREATE and PUBLISH but disable EDIT and DELETE in Wagtail
我有一个小组要求提供一种内容类型,我应该允许用户在其中添加和发布页面,但禁止任何更改。基本上发布后发布的页面应该是'read only'。
有没有办法使用 wagtail 中的权限工具实现此目的?
我有一个 LabPage
并且我已经注册了要反映在组显示中的权限:
wagtail_hooks.py
@hooks.register('register_permissions')
def register_labpage_permissions():
return Permission.objects.filter(
content_type__app_label='my_app',
codename__in=['add_labpage', 'change_labpage', 'delete_labpage']
)
我只为 LabPage
设置了 "add" 权限。 "change" 和 "delete" 未设置:
但是我的LabPage
包含在站点中,权限被通用站点页面权限覆盖:
我的问题是如何允许该特定组的成员拥有站点的默认权限,但在 LabPage
的特定情况下能够添加和发布,但不能编辑还是删除?
一个更通用的问题是:如何为特定组设置每个内容类型的权限(例如:LabPage
),而不被父组设置覆盖? 如何用鹡鸰钩实现这一点?
我找到了解决我问题 90% 的解决方案。它主要归结为 在页面创建后将所有权更改为 None。
解决方案详情:
创建 2 个群组:
管理员组
会员组
基本上 "Member Group" 中的用户能够创建和发布自己的页面。
为了阻止这个,我在 wagtail_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.")
因此受限 "Member Group" 的成员在创建页面后失去所有权,但 "Admin Group" 的成员仍然可以编辑站点中的所有文档。
此解决方案的唯一缺点是,受限成员仍然有权取消发布站点中的所有其他页面。
另一种变体是删除受限成员的 "publish" 权限,但管理员将不得不审核提交的页面。
它很丑陋,但它确实有效。有更好的建议吗?
我有一个小组要求提供一种内容类型,我应该允许用户在其中添加和发布页面,但禁止任何更改。基本上发布后发布的页面应该是'read only'。 有没有办法使用 wagtail 中的权限工具实现此目的?
我有一个 LabPage
并且我已经注册了要反映在组显示中的权限:
wagtail_hooks.py
@hooks.register('register_permissions')
def register_labpage_permissions():
return Permission.objects.filter(
content_type__app_label='my_app',
codename__in=['add_labpage', 'change_labpage', 'delete_labpage']
)
我只为 LabPage
设置了 "add" 权限。 "change" 和 "delete" 未设置:
但是我的LabPage
包含在站点中,权限被通用站点页面权限覆盖:
我的问题是如何允许该特定组的成员拥有站点的默认权限,但在 LabPage
的特定情况下能够添加和发布,但不能编辑还是删除?
一个更通用的问题是:如何为特定组设置每个内容类型的权限(例如:LabPage
),而不被父组设置覆盖? 如何用鹡鸰钩实现这一点?
我找到了解决我问题 90% 的解决方案。它主要归结为 在页面创建后将所有权更改为 None。
解决方案详情:
创建 2 个群组:
管理员组
会员组
基本上 "Member Group" 中的用户能够创建和发布自己的页面。
为了阻止这个,我在 wagtail_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.")
因此受限 "Member Group" 的成员在创建页面后失去所有权,但 "Admin Group" 的成员仍然可以编辑站点中的所有文档。
此解决方案的唯一缺点是,受限成员仍然有权取消发布站点中的所有其他页面。
另一种变体是删除受限成员的 "publish" 权限,但管理员将不得不审核提交的页面。
它很丑陋,但它确实有效。有更好的建议吗?