[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

-