Package: haufe.hrs.configuration
Introductionhaufe.hrs.configuration provides a central configuration service for
Zope-based application with a pseudo-hierarchical configuration mechanism.Featuresconfigurations based on INI filesconfigurations are pseudo-hierarchical (section names can be
dotted-names  (likecms.somepath,foo.bat.something.else)all valid configuration options are defined through a model
(an INI-style file defining sections, their options, their types and default
values). The model is used for performing type-checking and providing defaultsmodels and configuration files can be loaded all-in-one or incremental
into the configuration serviceoptional supervision of changes to the configuration file (a change
of a configuration file can trigger an immediate reload of the configuration)very simple APIZCML directives for defining the location of models and configuration filesintegrates easily with Zope 2 and Zope 3can be used outside Zope (pure Python applications) - the package has only
a minor number of dependencies to other zope.* packagesgood test coverageDefining a modelA model definition may look like this:[cms]
HRSCheckoutPath=string,default=42
HRSCheckoutURL=string
HRSImportPath=string
HRSImportClientPath=string
HRSPreviewPath=string
HRSPreviewClientPath=string
CvtSGMLtoRtfPath=string
CvtSGMLtoRtfMaxWait=int
ADB2StartURLbase=string
ADB2Version=int
ToolboxStartURLbase=string
NormenDBStartURLbase=string
VADBStartURLbase=string
LauflistenStartURL=string
HRS2UIStartURLbase=string
MedienStartURLbase=string

[cms.db]
datenbank1=
datenbank2=
datenbank3=You see that the syntax is pretty simple. The syntax is always:<optionname> = <type>, [default=<default-value>]<optionname> is mandatory. <type> defaults to ‘string’ and can be omitted
(other types are ‘int’, ‘list’, ‘float’, ‘complex’ or ‘bool’).  The ‘=’ is mandatory
(otherwise Python’s configuration parser will spit out an error.  An optional
default can be defined (otherwise None will be used). Hint: a string as default value
must use quotes.A related configuration file may look like this:[cms]
HRSCheckout = /foo/bar
adb2version = 44
hrscheckoutpath = 12
port = 22


[toolbox]
partition_id = Toolbox
nginx_baseurl = http://weiss.nix.de/For values of the configuration are accessible through dotted-names like:cms.ADB2Version
cms.HRSCheckoutURL
cms.db.datenbankUsageFrom Python:from haufe.hrs.configuration import ConfigurationService

service = ConfigurationService(watch=True)
service.registerModel('example/model')
service.loadConfiguration('example/sample_config/all-in-one.ini')
print service.getConfiguration()
print service.get('cms.ADB2Version')
print service.get('datenbank', domain='cms.db')ZCML integrationhaufe.hrs.configurationprovides two ZCML directiveshaufe:registerModelandhaufe:registerConfiguration:<configure xmlns="http://namespaces.zope.org/zope"
           xmlns:haufe="http://namespaces.haufe.de/haufe">

  <haufe:registerModel
      model="haufe/hrs/configuration/tests/model"
  />

  <haufe:registerConfiguration
      configuration="haufe/hrs/configuration/tests/example-config.ini"
  />

</configure>The path names formodelandconfigurationcan be absolute paths, paths
relative to the location of the current ZCML file or a path string containing
environment variables (will be substituted automatically).CreditsThe implementation is based on thecfgparsemodule by Dann GassAuthorhaufe.hrs.configurationwas written by Andreas Jung for Haufe Mediengruppe, Freiburg, Germany
and ZOPYX Ltd. & Co. KG, Tuebingen, Germany.Licensehaufe.hrs.configurationis licensed under the Zope Public License 2.1.
See the included ZPL.txt file.ContactZOPYX Ltd. & Co. KGAndreas JungCharlottenstr. 37/1D-72070 Tuebingen, GermanyE-mail: info at zopyx dot comWeb:http://www.zopyx.comChangelog0.5.18 (2012-05-16)added configure zcml for registering haufe.hrs.configuration.services.CentralConfigurationService utility to centralize loading it via buildout zcml directive0.5.17 (2011-05-23)fixed improper fix made in 0.5.16fixed reST structure0.5.16 (2011-05-23)made path to test model and test config absolute for testrunner as long as haufe.hrs.configuration
is not able to distinguish if it runs in test mode from egg or production mode from instance dir0.5.15 (2011-03-03)added another missing path to test config0.5.14 (2011-03-03)corrected path to test configurations0.5.13 (2011-03-02)made util failsafe if opts are emptycorrected tests to run in eggified environtmenttypo correction0.5.12 (2009-10-15)fixed typos in documentationremoved stupid restriction that model files must end with .ini0.5.11 (2009-07-07)preserving case of keys and do not map them blindly to lower-case0.5.10 (2009-05-14)removed hard-coded dependency on pyinotify0.5.9 (2009-03-17)using lists insteads of sets for keeping the
list of configuration and model filenames0.5.8 (2009-03-03)made logging less verbosesome more tests0.5.7 (2009-02-23)using OptionNotSetMarker0.5.6 (2009-01-13)extended cfgparse module with ‘bool’ type support0.5.5 (2009-01-13)registerModel() now triggers a reload() in order
to provide configuration support for configuration options
with a default0.5.4 (2008-11-21)refactored services0.5.3 (2008-11-21)removed service_hrs.py since it moved into the HaufeCMS core0.5.2 (2008-11-17)refactored notification thread handling0.5.1 (2008-11-12)pre-set some instance vars within the service constructor0.5.0 (2008-11-12)configurations without a default value will raise a KeyError
in case no configuration value is availableservice.get() raises now a KeyError instead of a ValueError in
case of a lookup failurerenamed ‘prefix’ to ‘domain’cleaned-up ZCML configuration (names and namespace). Check with
README.txt0.4.5 (2008-11-11)configuration paths in ZCML configurations can now be relative
to the location of the related ZCML fileminor cleanup0.4.4 (2008-11-07)don’t modify the logger level when running in a Zope environmentthe notifications should now work more reliably. The reload()
method is triggered after a delay of five seconds in order to handle
slow editors0.4.3 (2008-11-06)added explicit shutdown() function (required for proper Z2 integration)0.4.2 (internal release)added service.getConfigurationFor()0.4.1 (2008-11-03)removed haufe.decorator dependency0.4.0 (2008-11-03)first public releaseupdated documentation and testssome internal cleanup in order to fix race-conditions0.3.0 (2008-11-02)added pyinotify dependencywatching configuration file changessending ConfigurationChangedEvent upon reload()0.2.0 (2008-11-01)added service implementationadded zcml implementationmore tests0.1.0 (2008-10-31)Initial release