Делегат только для чтения. Доступ к данным Dublin Core для дочернего объекта с использованием ловкости.
Предыстория: поведение рабочей копии на самом деле не поддерживается для типов контейнеров, так как это приводит к проблемам при копировании всех дочерних элементов этой папки. Мы работаем над этим, используя дочерние типы данных для наших типов контейнеров: Почти все данные о контейнере хранятся в объекте данных, который является дочерним объектом этого контейнера и его представлением по умолчанию. Мы исключаем данные объекты из списков и поиска.
Проблема: Это приводит к несоответствию, когда в настоящее время мы должны присвоить поведение ядра dublin типу контейнера, а не типу данных, поскольку весь основной код Plone ожидает описание, дату вступления в силу и т. Д. Это немного сбивает с толку наших редакторов Plone, поскольку у них есть два места для редактирования данных о контейнере. Эти данные также можно редактировать только в реальной версии, а не в извлеченной рабочей копии.
То, что я хотел бы иметь возможность сделать это:
- делегировать любые запросы для базовых данных dublin из контейнера в дочерний объект данных (не знаю, с чего начать)
- при сохранении контейнера он будет использовать основные данные дочерних данных dublin для своих метаданных в каталоге (это должно сработать, если первая часть работает)
- при сохранении дочерних данных он будет переиндексировать свой родительский объект, чтобы обновить свои метаданные (я планировал зарегистрировать событие для достижения этой цели)
Кто-нибудь может дать мне несколько советов о том, как выполнить эту первую часть?
1 ответ
Я думаю, что у вас есть два варианта здесь:
Создайте свое собственное поведение метаданных, которое ищет метаданные в объекте данных.
Просто обновите метаданные родителя в обработчике событий при изменении объекта данных.
Учитывая, что вам все равно понадобится обработчик событий для принудительного родительского переиндексации, я бы, вероятно, пошел с простым подходом копирования метаданных.