[Zope3-Users] Re: Using ZCML for defining global constants ?

Baiju M baiju.m.mail at gmail.com
Mon Sep 11 03:49:31 EDT 2006


On 9/11/06, Martin Aspeli <optilude at gmx.net> wrote:
> Andrew Groom wrote:
> > Hi there,
> >
> > I've got a few global constants that I'd like to be available to my
> > application and a .zcml file seems to be a sensible place. I'm thinking
> > of something like a .zcml file with, e.g.:
> >
> > <applicationSettings>
> >     <setting name="name1" value="value1"/>
> >     <setting name="name2" value="value2"/>
> >     ...
> > </applicationSettings>
> >
> > This would then be available in a component as a dictionary. Is anythign
> > like this already available ?
>
> You could just use <utility>, and thereby group your constants into
> logical chunks.
>
> interfaces.py:
>
> class IDatabaseLoginOptions(Interface):
>      username = Attribute()
>      password = Attribute()
>
> config.py:
>
> class DatabaseLoginOptions(object):
>      implements(IDatabaseLoginOptions)
>      username = 'foo'
>      password = 'bar'
>
> configure.zcml:
>
> <utility factory=".config.DatabaseLoginOptions" />
>
> used:
>
> opts = getUtility(IDatabaseLoginOptions)
>
> Obviously, this is a bit more work than just declaring some constants in
> ZCML, but global constants suffer the same problems whether they're
> defined in Python or XML. Parts of your application are making
> assumptions that they are there, with very specific names, which are not
> type checked.

Just added this to FAQ: http://kpug.zwiki.org/Zope3Faq

Regards,
Baiju M


More information about the Zope3-users mailing list