django 不同用户通行证的Wagtail权限

zsohkypk  于 2022-12-30  发布在  Go
关注(0)|答案(1)|浏览(146)

在我的wagtail应用程序中,我有一个模型,我想只允许特定类型的用户查看该模型。在django中,我只会继承UserPassesTestMixin。在wagtail中,我会根据会话数据允许它。如果request.session.dados_usuarios.bu == 'Corporate KO',他将能够查看页面。我是wagtail的新手,可以这样做吗?
在 Django 我会这样做

class SomeView(UserPassesTestMixin, TemplateView):
     ...

     def test_func(self):
         return request.session.dados_usuario.bu == 'Corporate KO'

我在Wagtail应用中的模型

class IframePage(Page):
    iframe_url = models.URLField()

    fabricantes_com_acesso = ParentalManyToManyField(
            Fabricante,
            blank=True,
            verbose_name="Fabricas com Acesso"
        )

    content_panels = Page.content_panels + [
        MultiFieldPanel([
                FieldPanel('iframe_url'),
                FieldPanel('fabricantes_com_acesso'),
            ], 
            
        heading="Informações Principais"),
    ]
2hh7jdfx

2hh7jdfx1#

Wagtail有page privacy settings,但是它们是在页面树的部分而不是页面类型上设置的。最简单的选择是如果你所有的IframePage都在页面树的同一部分。然后你可以在父页面上设置页面隐私设置,所有的子页面都将继承它。
如果您确实需要在页面树中的任何地方对每个页面类型都进行此操作,则可以添加一个钩子,以便在创建所有IframePage时设置它们的页面隐私设置。

相关问题