Hmmm, probably I should have used the term "factory" instead of "constructor" in that last mail...
Florent Florent Guillaume <[EMAIL PROTECTED]> wrote: > [sent to zope-dev] > > This problem is due to a deep bug in the current implementation of the > Types Tool: a created object has no way to know its portal_type during > construction (the constructor doesn't have this information, thus nor > __init__ nor the hooks like manage_afterAdd can have it). > > I thought that this bug was already in the Tracker but I don't find it. > Anyone knows ? > > Anyway I'd propose the following: we need, in constructInstance, to > somehow pass the portal_type to the object constructor. Unfortunately > this has to be backwards-compatible with all the constructors out there > that don't know about it. I see two possible ugly solutions to do it: > > - do "constructor.__portal_type = portal_type" before calling > constructor(...), and the constructor does something like: > def manage_addFoo(...): > try: > portal_type = manage_addFoo.__portal_type > manage_addFoo.__portal_type = None > except: > portal_type = None > ... > > - in constructInstance, use introspection (getargspec) to look > if the constructor accepts a portal_type=xxx named parameter, > and pass it if it does. > > Anyone sees something cleaner ? :-) -- Florent Guillaume, Nuxeo (Paris, France) +33 1 40 33 79 10 http://nuxeo.com mailto:[EMAIL PROTECTED] _______________________________________________ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )