Charlie Clark wrote:
> _ACTIONS_XML = """\
> <?xml version="1.0"?>
> <object name="portal_actions" meta_type="CMF Actions Tool"
>      xmlns:i18n="http://xml.zope.org/namespaces/i18n";>
>      <object name="user" meta_type="CMF Action Category">
>       <property name="title"></property>

No need to reset the title of the 'user' category. That's not the 
purpose of your upgrade step.

The tests just make sure an unmodified site is upgraded correctly. But 
usually sites are customized. And if someone uses category titles he 
would not expect that your step deletes them.

> def upgrade_actions_tool(tool):
>       """2.2.x to 2.3.0 upgrade step handler
>       """
>       logger = logging.getLogger('GenericSetup.upgrade')
>       atool = getToolByName(tool, 'portal_actions')
>       environ = SetupEnviron()
>       environ._should_purge = False
>       getMultiAdapter((atool, environ), IBody).body = _ACTIONS_XML
>       logger.info("'change_password' action added.")
> But if change the actions.xml I still get the error when I run the tests.

And that error shows you a nice diff that tells you that the 
change_password action is added, but in the wrong position. Right? Or 
did you forget to register the upgrade step?

> Do I need to tell the upgrade to do the insert before preferences?

Yes. "environ._should_purge = False" gives you the extension profile 
behavior. By default new objects are added to the end of the container. 
If you want them in a different place, you have to specify that using an 
update directive ('insert-before' or 'insert-after').


Zope-CMF maillist  -  Zope-CMF@zope.org

See https://bugs.launchpad.net/zope-cmf/ for bug reports and feature requests

Reply via email to