[Zope-dev] Old to new registerClass

Brian Lloyd brian@digicool.com
Wed, 24 Jan 2001 11:15:47 -0500


> Im hacking around IEMethod and it uses an old style of class 
> initialisation
> in the __init__.py along the lines of:
> 
>   misc_ = { 'imagef':'foo','imageg':'goo', }
>   lang_= { 'en':'lang_en','sv':'lang_sv', }
> 
> I want to put this into a modern style product initialisation
> (context.registerClass). Looking at this functions API it didn't become
> readily apparent how I can pass in these values. This would be 
> nice to do so
> I don't have any hacking of dtml to do. Has anyone done this / got any
> advice?

Hi Andy - the modern product init doesn't currently provide 
any special handling of misc_ (though it probably should in 
the future to make registration an explicit operation). If
a misc_ mapping is found in your __init__.py by the product
initialization code, its items will be installed in the 
misc_ object of the top-level application object. So you'll 
want to do something like:


from Globals import ImageFile

misc_={'imagef': ImageFile('foo.gif', globals()),
       'imageg': ImageFile('goo.gif', globals()),
      }

When your product is initialized, the items in your misc_ 
will be installed in the application objects' misc_, and 
you can refer to them thereafter in your dtml as:

  <dtml-var BASEPATH1>/misc_/imagef
  <dtml-var BASEPATH1>/misc_/imageg

etc. I don't know what 'lang_' does, so I'm not sure what 
to advise you there...

Brian Lloyd        brian@digicool.com
Software Engineer  540.371.6909              
Digital Creations  http://www.digicool.com