나를 걱정하는 것과 같은 문제가 있습니다. 거의 순회 만하는 앱이 있습니다.Zodb가 자동으로 필드를 저장하지 못하도록합니다.
내 관리 경로를 얻으려면 루트에 연결된 노드가 있어야합니다. __getitem__
에 내 실제 루트 인 parent.__getitem__
을 반환합니다. 내 의견에 containment
. 이 관리 노드가 포함되어 있는지 확인할 수 있습니다.
재 라우트 할 때 문제가 발생합니다. 나는
class AdminRoot(object):
__acl__ = [
(Allow, 'g:admin', ALL_PERMISSIONS),
(Deny, 'system.Everyone', ALL_PERMISSIONS),
]
def __init__(self, parent, name):
self.__parent__ = parent
self.__name__ = name
def __getitem__(self, name):
item = Mapping.__getitem__(self.__parent__, name)
item.__parent__ = self
return item
self
이 item.__parent__
에 영향을하면 그렇게합니다. 때때로 부모 노드로 저장됩니다. 따라서 request.resource_url
일을 할 때. 관리자 루트 또는 실제 루트에서 출력됩니다.
이 영향이 전혀 저장되지 않았 으면 좋겠습니다.
심지어 관리 노드의 필요성은'acls'을 지정하는 것이 었습니다. 지금은 일부 경로에서 임의 액세스가 거부 될 수 있습니다. –
''__parent__'을 어딘가에 부모를 저장하는 속성으로 만들고 찾지 못한다면 진짜 부모를 반환 할 것입니다. –
불행히도, 그렇게 할 수있는 좋은 방법이 없다고 생각합니다. 휘발성 속성은 객체가 언로드 될 때만 각 요청에서 삭제되지 않습니다. 깔끔하게 할 수있는 유일한 방법은 가로 질러서 urldispatch를 사용하는 것입니다. –