使用 Django-guardian 和 Flatpages 只为一个对象设置权限

setting permission for only one object using Django-guardian and Flatpages

提问人:Rod O'Connor 提问时间:11/4/2017 最后编辑:Rod O'Connor 更新时间:11/7/2017 访问量:454

问:

我正在尝试使用 Django-guardian 将权限应用于特定的简单页面。我们的网站上有许多简单页面,在大多数情况下,django-auth 可以满足我们的需求。但是,我们希望为某些简单页面和特定用户添加对象级权限。

例如,我有一个用户,我想授予该用户编辑网站上总简单页面的子集的权限。YOUNGTEMP

我已经安装了 Django-guardian,并使用 shell 为该用户提供了相应站点的权限。该用户根本没有其他权限,因为我不希望他们从管理员那里看到除此站点之外的任何内容。change_flatpage

我可以通过查看数据库来验证权限是否存在,以及当我以 SU 身份登录时它们是否出现在管理员中。为什么当我以这个用户身份登录时,管理网站告诉我我无权编辑任何内容?YOUNGTEMP

我按照此处 readthedocs.io 页面的摘录在 shell 中分配权限,以确保我的覆盖管理员没有问题,如下所示:

imports*...

class FlatPageForm(FlatPageFormOld):
    content = forms.CharField(widget=CKEditorUploadingWidget())
    class Meta:
        model = FlatPage
        fields = '__all__'

class FlatPageCustomAdmin(GuardedModelAdmin):
    form = FlatPageForm
    list_display = ('url', 'title')
    search_fields = ('url', 'title')

我卡住了,因为一切似乎都在工作,但仍然无法实现我的目的......

re:@solarissmoke 的要求:

$ python manage.py shell
Python 2.7.12 (default, Nov 19 2016, 06:48:10)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from django.contrib.flatpages.models import FlatPage
>>> from django.contrib.auth.models import User
>>> from guardian.shortcuts import assign_perm, get_users_with_perms
>>> user = User.objects.all().filter(id=758)
>>> print(user[0])
epss_student_worker  
>>> page_i_want_to_give_perms_for = FlatPage.objects.all().filter(id=27)
>>> print(page_i_want_to_give_perms_for[0])
/people/alumniawardwinners/ -- Student Alumni Award Winners
>>> assign_perm('change_flatpage', user[0], page_i_want_to_give_perms_for[0])
<UserObjectPermission: /people/alumniawardwinners/ -- Student Alumni Award Winners | epss_student_worker | change_flatpage>

结果get_users_with_perms >>> get_users_with_perms(page_i_want_to_give_perms_for[0],attach_perms=True) {<User: epss_student_worker>: [u'change_flatpage']}

python django django-flatpages django-guardian

评论

0赞 solarissmoke 11/4/2017
请向我们展示您如何在 shell 中分配权限,以及您正在测试权限的特定页面对象的结果。get_users_with_perms
0赞 Rod O'Connor 11/7/2017
@solarissmoke好的,感谢您的阅读,我已经添加了请求的行和输出。似乎一切都已正确分配,但是,当我登录管理员时,用户会收到一条消息:“您无权编辑任何内容” 此用户没有来自常规管理员的组或其他权限。我的错误可能是假设只需要此权限?

答: 暂无答案