[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