【问题标题】:Wagtail per page user permission鹡鸰每页用户权限
【发布时间】:2017-05-19 21:34:38
【问题描述】:

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

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

我尝试过使用 django Guardian:

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

但这并没有给我结果

我也找到了wagtailcore_grouppagepermission表,发现权限原理和django中使用的不一样auth_permission

我想授予编辑权限,并访问 wagtail 管理员,我不需要其他任何东西

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

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

【问题讨论】:

    标签: django wagtail


    【解决方案1】:

    两种可能:

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

    【讨论】:

      【解决方案2】:

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

      1. 创建了两个模型:

      第一:

      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 管理员的访问权限,并授予创建 PersonsIndexPage 的权限

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

      我不知道 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'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-05-28
        • 2017-03-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-30
        相关资源
        最近更新 更多