[Zope] Set _allowed_meta_types on folder instances without creating a new product?

Dieter Maurer dieter@handshake.de
Fri, 3 May 2002 19:05:34 +0200


Jeff Kowalczyk writes:
 > > it would be very useful to apply this 
 > > to existing folders which are specialized in purpose, but
 > > require no special class of their own.
 > 
 > [Dieter] To apply it to existing folder, you need to redefine their
 > "all_meta_types" method - in a similar spirit the "mxmObjectManager"
 > did...
 > 
 > How do I redefine a method (as opposed to setting a property) on an
 > existing object?
 > 
 > I don't want to subclass Folder into a full metatype for each
 > combination of metatypes allowed, but I could see making a series of def
 > methods: scripts or a product module that I could 'attach' as overrides
 > to instances of regular, already created Folders as needed. Is that
 > possible?
I did not meant, that you modify "all_meta_types" for each folder type
you want to restrict but that you combine the "_allowed_meta_types"
with a single modified "all_meta_types" that respects this
attribute when it is available.

Your options for such a modification:

  *  directly modify the source
     
     you want to retain a patch in order to be able to apply it
     to new Zope releases or you work with CVS (and its "import"
     command).

  *  make a monkey patch (this modifies the class at initialization time)

     There are documentation about this at Zope.org.

     "TransparentFolder" is an example how to make a monkey patch
     for "ObjectManager".


Dieter