Wigtail每页用户权限

时间:2017-05-19 21:34:39

标签: django wagtail

我的任务是让用户编辑自己的页面。

我看到如何将特定页面的权限授予组,但我该如何为用户执行此操作?

我试过使用django守护者:

UserObjectPermission.objects.assign_perm('change_custompage', user, obj=custompage)

但这并没有给我结果

我还找到了wagtailcore_grouppagepermission表,并意识到权限原则与django auth_permission

中使用的权限原则不同

我想授予编辑权限,并访问wagtail admin,我不需要任何其他内容

在这个特殊的任务中,我需要因为struct_blocks而需要,我认为这是一个了不起的概念。

现在我看到两个选项:覆盖模板和使用wagtail之外的struct_block的所有功能的能力,或者用权限解决的东西。

2 个答案:

答案 0 :(得分:2)

两种可能性:

  • 为每个用户创建一个组 - 可能看起来不是一个非常复杂的方法,但可以通过一些脚本轻松实现...
  • 将您的用户置于包含所有用户的父网页上具有添加权限但不具有编辑权限的群组中。页面。在Wagtail的权限模型http://docs.wagtail.io/en/v1.10.1/topics/permissions.html中,'添加'权限还包括编辑您自己创建的页面的功能。 (如果您希望事先创建页面,而不是让用户创建它们,则需要将页面记录的owner字段设置为相关用户。)

答案 1 :(得分:0)

感谢@gasman的帮助和建议,我这样做了如下:

  1. 创建了两个模型:
  2. 第一

    class PersonsIndexPage(RoutablePageMixin, Page):
        ...
        @route(r'^$')
        def index_view(self, request):
            pages = PersonPage.objects.live().all()
            return render(request, 'myapp/person_index_page.html', {
                'page': self,
                'pages': pages,
            })
        ...
        subpage_types = ['PersonPage']
    

    第二:

    class PersonPage(Page):
        ...
        parent_page_types = ['PersonsIndexPage']
        subpage_types = [] 
    
    1. 为小组添加对wagtail admin的访问权限,并授予创建PersonsIndexPage的权限

    2. 由于我是从Django admin创建个人页面,因此我创建了一个简单的操作,为所选用户创建一个页面:

    3. 我不知道bulk_create是否可行

      def create_person_page(modeladmin, request, queryset):
          root_page = PersonIndexPage.objects.first()
          for user in queryset:
              page = PersonPage(title=username), owner=user)
              root_page.add_child(instance=page)
      
      create_person_page.short_description = 'Create person page'