首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ViewFlow和django-守护者

ViewFlow和django-守护者
EN

Stack Overflow用户
提问于 2017-02-21 19:31:46
回答 1查看 472关注 0票数 1

我想使用django-guardian的对象权限,并将特定用户的特定权限授予一个或多个Django用户。

我尝试向我的Process类添加一些权限,如下所示:

代码语言:javascript
复制
class TestProcess(Process):
    title = models.CharField(max_length=64)

    something = models.ForeignKey(ForInheritage, null=True, on_delete=models.CASCADE)
    no_approval = models.BooleanField(default=False)
    approved = models.BooleanField(default=False)

    def something_is_approved(self):
        try:
            return self.something.approved
        except:
            return None

    class Meta:
        permissions = (
            ('view_process', 'View Process'),
        )

不幸的是,这会导致viewflow在启动runserver后立即抛出错误:

代码语言:javascript
复制
File "/home/me/.virtualenvs/viewflow3/lib/python3.4/site-packages/viewflow/mixins.py", line 253, in ready
    self.flow_class.process_class._meta.permissions.append(
AttributeError: 'tuple' object has no attribute 'append'

我最初的计划是创建StartView流类的子类,以更改从PermissionMixin继承的Permission函数的工作方式。但这似乎也比这更多的工作。

django-guardian已经在cookbook的一节here中提到,但目前通向404页面。

在进程和任务上使用监护人权限的推荐/最干净的方式是什么?

EN

回答 1

Stack Overflow用户

发布于 2017-02-25 13:56:24

b/c如果您像指定元组一样指定权限,请尝试列表

代码语言:javascript
复制
class Meta:
    permissions = [
        ('view_process', 'View Process'),
    ]

Viewflow已经添加了“查看”和“管理”权限,因此您可以重用它们。

但是,使用django-guardian在对象级别上进一步限制每个进程的视图权限是不太实际的。在开始视图中,每次创建新流程时,您都必须向所有流程参与者授予查看权限。这会导致权限表变大并减慢权限查找的速度。

例如,对象级权限的合理用例可能类似于根据用户部门限制用户对任务的访问。

代码语言:javascript
复制
deliver = flow.View(
    views.deliver
).Permission(
    'parcel.land_on_planet',
    obj=lambda process: process.department
).Next(this.report)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42366130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档