Переименование новых объектов Archetypes (Plone 4) перестало работать
У меня есть сайт Plone 4, который перестал переименовывать новые объекты Archetypes; после создания (как-то так /temp/portaltype.2015-04-23.1234567890
) и сохраняя первые изменения, включая присвоение ему названия, его следует переименовать во что-то более приятное (/temp/an-object-with-a-meaningful-name
), но этого больше не происходит.
Возможно, проблема возникла, когда я применил некоторые изменения для обновления Plone с 4.3.3 до 4.3.4 (чтобы сделать один шаг за раз); но я унаследовал долго versions.cfg
который отсортирован исключительно по именам пакетов и не содержит подсказок, почему были выбраны определенные версии...
Я могу вернуться на два месяца назад и иметь версию, которая выполняет переименование, но без дополнительных знаний о том, что искать, это будет очень трудоемкий процесс повторного применения каждого отдельного изменения, перестроения, запуска и тестирования.; но в моих определениях схемы не было никаких изменений. у меня есть temp
браузер, который участвует в доставке основной формы редактирования. но это не похоже на случай спасительного действия.
К сожалению, я не до конца понимаю механизмы base_edit
действие, которое, насколько я понимаю, должно вызвать Archetypes.BaseObject.processForm
и неявно ._renameAfterCreation
, поэтому я был бы благодарен за некоторые советы, как отладить это. Спасибо!
Обновление: у меня есть несколько триггеров в моем продукте configure.zcml
Например:
<subscriber
for=".content.portaltype.PortalType
Products.Archetypes.interfaces.IObjectInitializedEvent"
handler=".events.onInitPortalType"/>
… в events.py
:
def onInitPortalType(self, event):
"""
Called after first edit of new objects?
"""
print '/// onInitPortalType(%(self)r, %(event)r)' % locals()
setInitialOwner(self, event)
setStateToPrivate(self, event)
Тем не менее, событие, похоже, не вызвано, так как я не мог найти вывод в instance fg
сессия.
Обновление 2: я заметил, что zope.event
был прикреплен к довольно старой версии (3.5.2
), поэтому я пытаюсь обновиться до 4.3.4 более серьезно сейчас ( после этого с практическими рекомендациями). Это меня достало zope.event
v4.0.3, но у меня сейчас конфликт версий:
There is a version conflict.
We already have: zc.recipe.egg 1.3.2.
While:
Installing.
Getting section test.
Initializing section test.
Installing recipe zc.recipe.testrunner.
Кажется, есть требование zc.recipe.egg < 2dev
где-то, но я не могу найти это.
1 ответ
Ничего существенного не изменилось между Plone 4.3.3 и 4.3.4 на архетипах. Products.Archetypes изменен с 1.9.7 на 1.9.8, а Products.ATContentTypes остается в той же версии.
Указатели могут быть:
- Есть
_at_rename_after_creation
флаг, которыйTrue
по умолчанию. Это может быть изменено на тип контентаclass
, - Ваш тип все еще активирован в
portal_factory
инструмент? (Afaik это не должно влиять на переименование после создания - но кто знает:-)) - любой
Products.Archetypes.interfaces.IObjectInitializedEvent
абонент? - Однажды у меня была проблема с идентификатором tmp
portaltype.2015-04-23.1234567890
имел неправильный формат, и AT не распознал его как идентификатор tmp, и поэтому он не переименовал его после создания. Метод AT использует для проверки того, является ли идентификатор автоматически сгенерированным -> https://github.com/plone/Products.CMFPlone/blob/4.3.4/Products/CMFPlone/utils.py AFAIK проблема заключалась в том, что meta_type и portal_type больше не совпадают.