Существует ли что-то вроде "символической связи" (в терминах *nixes), но для объектов в ZODB in Plone?


Предположим, что у меня есть объект в /school1/document-rules.

Предположим, что в другом контексте, /school2, мне нужно иметь то же самое document-rules, что доступно в /school1/document-rules.

В ZODB, имея /school1/document-rules и /school2/document-rules, я имею два разных объекта.

Я хотел бы знать, можно ли сделать /school2/document-rules Ссылка /school1/document-rules. Таким образом, /school2/document-rules будет чем-то вроде "ReferenceDocument", "ReferenceLink" или что-то вроде символической ссылки, которая будет просто указывать на /school1/document-rules.

Почему? Документ это одно и то же, но иногда имеет больше смысла (в семантическом плане) иметь один и тот же документ в разных контекстах. У меня есть портлеты, которые отображаются в зависимости от их контекста, и я не хочу дублировать document-rules.

Существует ли что-то вроде того, что я ищу? Bultin или через модуль?
3 4

3 ответа:

SimpleAlias делает то, что вы хотите. Я использовал его, и он хорошо работает. Вы также можете посмотреть на коллектив .псевдоним

ZODB обрабатывает ссылки прозрачно, как и следовало ожидать в обычном Python. У вас есть хорошее объяснение здесь.

Вы должны следить за несколькими ссылками на один и тот же объект, когда вы хотите удалить объект. Для этого вы можете использовать слабые ссылки для ваших "символических ссылок", используя модуль weakref из ZODB, который эквивалентен weakref стандартной библиотеки Python.

Для этого я использовал продукт под названием RedirectionTool.