# -*- coding: utf-8 -*- import inspect as _i import os.path as _p import os as _os from cgi import escape from types import DictType import ConfigParser libPath = None ############################################################################################################ # # CONFIGURATION SECTION CLASS # #=========================================================================================================== class ConfigurationSection( object ): #------------------------------------------------------------------------------------------------------- pass class Cfg( object ): global libPath _configurationSectionClass = ConfigurationSection if libPath is None: libLocator = _p.join( _p.dirname( _i.getfile( lambda:None ) ), _os.pardir ) else: libLocator = libPath homeLocator = _p.normpath(_p.join( libLocator, _os.pardir ) ) homeLocator = "/home/patricia/workspace/annotation_svn" #------------------------------------------------------------------------------------------------------- def __init__( self, configFilename=None ): # always read the lib configs #self.__addCfgFile__(_p.join( self.configurationLocator, 'config.ini' )) pass #------------------------------------------------------------------------------------------------------- def __addCfgFile__( self, configFilename ): '''Read a configParser file and add its entries to this object''' # read configparser file cfg = ConfigParser.ConfigParser() cfg.optionxform = str cfg.read(configFilename) for sectname in cfg.sections(): section = self.__class__._configurationSectionClass() for opt,val in cfg.items(sectname): setattr( section, opt, val ) setattr( self, opt, val ) setattr( self, sectname, section ) #------------------------------------------------------------------------------------------------------- def _getSections(self): sections = [] for name in dir( self ): attr = getattr( self, name ) if isinstance(attr, ConfigurationSection): sections.append( attr ) return sections #------------------------------------------------------------------------------------------------------- def __save__( self ): for sect in self._getSections(): sect.__save__() cfgObj = Cfg() def getConfigObj(): return cfgObj ############################################################################################################ # #=========================================================================================================== if __name__ == '__main__': import sys sys.setrecursionlimit( 20 ) print cfgObj cfgObj.__save__()