[Product-Developers] creating content inside a setup handler.

Gilles Lenfant gilles.lenfant at ingeniweb.com
Tue Sep 16 15:29:23 UTC 2008


Le 16 sept. 08 à 17:16, Hans-Peter Locher a écrit :

> Hi,
> I'm working on a policy product which creates some content during  
> installation.
> I have a custom folderish content type "Queue" which I want to add  
> some instances of.
>
> The code check if there is already an object with the id, and only  
> creates if that isn't the case.
> I was happy having my unit  tests pass, unti I've started my Plone  
> site and manually installed/ uninstalled the policy product.
>
> It happens that on installation content gets created as desired.
> But on uninstall, the objects get deleted (wtf)
>
>
> The code looks as follows:
>
> <snip>
> def create_content(portal):
>     """ Creates queues and sets them to state active """
>
>     logger.info("********** create content")
>     wf = getToolByName(portal, 'portal_workflow')
>     for item in CONTENT:
>         if item['id'] in portal.objectIds():
>             logger.info("Object %s already created , pass" %  
> item['id'])
>         else:
>             portal.invokeFactory('Queue',
>                     item['id'],
>                     title=item['title'],
>                     description=item['description'])
>             queue = getattr(portal, item['id'])
>             wf.doActionFor(queue, 'activate')
>             logger.info("%s created" % item['id'])
> <snip>
>
>
> Is this some new functionality that setuphandlers get a magic  
> reverse or am I missing something?
>
> Thanks for any hints.

IIRC, the magic is in portal_quickinstaller that records lots of  
changed and created stuffs during an install. And can revert all this  
on uninstall.

-- 
Gilles Lenfant
INGENIWEB (TM) - SAS 50000 Euros - RC B 438 725 632
Bureaux de la Colline
1 rue Royal
92210 Saint Cloud - France
Phone : 01 78 15 24 00 / Fax : 01 46 02 44 04
web : www.ingeniweb.com - une société du groupe Alter Way










More information about the Product-Developers mailing list