[Zope-CMF] dev question on CMFDefault.__init__.py
Mark McEahern
marklists@mceahern.com
Mon, 21 Oct 2002 08:02:48 -0500
[Florent Guillaume]
> As one datapoint, the main body of __init__ is called at module
> initialization, which is very early. initialize() is called by Product
> initialization, which is done later by Zope.
>
> But I don't know the precise details of ZClasses initialization (and
> frankly the less I hear about ZClasses, the happier I am).
Here are a couple of concrete questions I have:
1. On line 110, a module level variable is created to store globals, but
then it's not used:
cmfdefault_globals=globals()
Why is that assignment even there?
2. On line 107-108, z_bases and z_tool_bases are setup, but then they're
used inside initialize(). Why not assign them in closer proximity to where
they're used (inside initialize())?
z_bases = utils.initializeBasesPhase1( bases, this_module )
z_tool_bases = utils.initializeBasesPhase1( tools, this_module )
3. The contentClasses, contentConstructors, bases, and tools variables are
currently module-level variables--why? Are these things used at
module-initialization AND product initialization?
[hazmat]
> many things are non obvious when your using talking about zclasses,
> imo. i'd imagine the placement of the initialziation stuff is either
> chance, or because of ordering requirements.
This seems very fragile, then, insofar as CMFDefault is intended to be a
demonstration of CMF. I would love to help improve it, but I'm trying to
understand it first. <wink>
[hazmat]
> if your interested in initialization as a matter of writing your own
> products, i would take a look at some of the other cmf products.
I'm more interested currently in customizing a CMF portal. I can't use
CMFDefault out of the box because I want to use DCWorkflow. When I add the
portal to the Root Zope site, I don't want to have to manually delete the
default workflow and step-by-step recreate the one I want in the ZMI.
Instead, I'd like to have that packaged. You suggested using an External
Method, which I appreciate. I like the CustomizationPolicy idea that Plone
has and I'm trying to understand how to add that to CMFDefault. Which is
why I'm trying to understand __init__.py. Perhaps it was only intended as a
black box, though?
Thanks,
// mark
-