Переименование новых объектов 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 больше не совпадают.
Другие вопросы по тегам