[Zope-dev] How to create a product with all_meta_types and the
Garito
garito at sistes.net
Fri Mar 12 04:41:56 EST 2004
Hi Max
I understand what you explain but what about if I install a new product?
Rewrite the factory?
I think is not a good solution don't you think?
Thanks!!
----- Original Message -----
From: "Max M" <maxm at mxm.dk>
To: "Garito" <garito at sistes.net>
Cc: "Lista Oficial de Zope" <zope-dev at zope.org>
Sent: Friday, March 12, 2004 10:34 AM
Subject: Re: [Zope-dev] How to create a product with all_meta_types and the
> Garito wrote:
>
> > Hi Chris!
> >
> > Want I want exactly is to create a product's object by his name
> > programmatically not by the construction form
> > Is this posible?
>
>
> You cannot know the name of the constructor function, unless you read
> the source.
>
> The constructors added to Zope during the product initialisation can be
> both forms and actual function methods. There is no way of knowing
> which. And there can be more than two.
>
> So you would need to write a factory function based on the info you can
> get from the source. Ie. in an external method. Something like::
>
>
> def portal_factory(self, parent, portal_type, id='', title='',):
>
> "Adds the content. A factory function."
>
> # generate a general id
> if id == '':
> id = self.ZopeTime().strftime(portal_type + '_%Y%m%d_%H%M%S')
>
> zope_factory = parent.manage_addProduct
>
> # add the content
> if 'Document' == portal_type:
> zope_factory['Document'].manage_addDocumentAction(id)
>
> elif 'Some Type' == portal_type:
> zope_factory['Some Type'].manage_addSomeTypeAction(id)
>
> else:
> raise 'Error adding portal_type'
>
> # get the newly added content
> obj = getattr(parent, id)
> # Add the title
> obj.title = title
>
> return obj
>
>
> --
>
> hilsen/regards Max M, Denmark
>
> http://www.mxm.dk/
> IT's Mad Science
>
More information about the Zope-Dev
mailing list