我一直在开发一个使用url dispatch的应用程序。我根据这里找到的一些很好的信息设置我的根工厂:https://github.com/mmerickel/pyramid_auth_demo(感谢迈克尔!)
现在我也在尝试使用pyramid_formalchemy。似乎pyramid_formalchemy使用遍历来确定授权。没关系,但我坚持一点......
对于遍历对象,需要知道位置,这意味着它们需要具有名称和父级。所以我有一个User对象。
class User(Base):
__name__ = 'user'
__parent__ = ...
我在RootFactory中定义了我想要的ACL。这一切都在RootFactory的构造函数被调用时得到设置。我想将所有类的父级设置为RootFactory,但是创建一个RootFactory实例,您需要将请求传递给构造函数(特别是因为我的RootFactory子类pyramid_formalchemy.resources.Models)
但是在设置我的课程时,我没有请求。
如何在我的班级上将父正确设置为RootFactory?
感谢。
答案 0 :(得分:0)
我在这里回答了一些关于在pyramid_formalchemy中处理ACL的类似问题:
Pyramid and FormAlchemy admin interface
基本上,pyramid_formalchemy为所有管理URL定义了它自己的根工厂。您可以覆盖它并在那里定义__acl__
(请参阅ModelsWithACL
),这可能会解决您的大部分问题。从该根开始,pyramid_formalchemy将自动设置__parent__
引用。因此,如果您在对象上定义了一些特殊的__acl__
,那么首先会对其进行测试,然后ACLAuthorizationPolicy
会查看__parent__
或Models
对象。
另见:
http://docs.formalchemy.org/pyramid_formalchemy/#setting-permissions