将Wagtail管理员中编辑者只能看到的图像限制为上传的图像吗?

时间:2019-04-27 10:29:43

标签: wagtail

我已经设置了Wagtail管理员,因此编辑者只能添加和编辑他们创建的Blog页面。问题在于,使用图像选择器选择图像时,他们能够看到上传到站点的每个图像。我需要他们仅查看他们上传的图像。

我的网站已设置好,以便我的目标受众可以使用django-allauth注册一个帐户。注册后,它们将自动分配给自定义的“作者”组。作者可以添加“个人资料”页面,然后添加所需的任意“故事”或文章。故事是个人资料的子项,因此URL看起来像这样:website.com/some_user/some_user_story。

这很好用,因为“作者”也只能创建,编辑和查看我想要的页面。但是,当通过图像选择器将图像添加到其故事页面时,会在“作者”集合中为它们显示每个图像。这将行不通,因为他们只能看到他们上传的图像。

据我了解,我所需要的并没有得到正式支持。但是,我检查了数据库表,并且 wagtailimages_image 表确实跟踪了 uploaded_by_user_id

是否存在可以重写以侦听和查询数据库以创建所需行为的类,方法,钩子或信号?

1 个答案:

答案 0 :(得分:0)

确实已经为此设置了一个挂钩。我最终实现了Construct_image_chooser_queryset挂钩。文档在这里:http://docs.wagtail.io/en/v2.5/reference/hooks.html#construct-image-chooser-queryset

在项目中,我有一个名为“ dashboard”的应用程序,其中包含用于自定义Wagtail管理员的所有代码。在该应用中,我创建了一个wagtail_hooks.py文件并添加了以下代码:

# Filter images in the image_chooser based on user
@hooks.register('construct_image_chooser_queryset')
def filter_images_by_user(images, request):
    images = images.filter(uploaded_by_user=request.user)

    return images

最后,我为“作者”组创建了一个新的图像集合。然后在“作者”组设置中添加了该图像集,并为其分配了“添加”权限。

现在,当用户添加照片或使用图像选择器时,他们只能看到自己上传的图像。

相关问题