混合网址发送和遍历

时间:2011-11-02 03:37:58

标签: python pyramid

我一直在开发一个使用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?

感谢。

1 个答案:

答案 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