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 )

Reply via email to