make sure we reset config on reload.

This commit is contained in:
benoitc 2010-06-17 16:23:49 +02:00
parent a4fdb93757
commit 5b363c4ab2

View File

@ -28,17 +28,25 @@ class Application(object):
def __init__(self, usage=None): def __init__(self, usage=None):
self.log = logging.getLogger(__name__) self.log = logging.getLogger(__name__)
self.cfg = Config(usage) self.usage = usage
self.cfg = None
self.callable = None self.callable = None
self.logger = None self.logger = None
self.cfgparser = self.cfg.parser()
self.opts, self.args = self.cfgparser.parse_args()
self.load_config() self.load_config()
def load_config(self): def load_config(self):
cfg = self.init(self.cfgparser, self.opts, self.args) # init configuration
self.cfg = Config(self.usage)
# parse console args
parser = self.cfg.parser()
opts, args = parser.parse_args()
# optional settings from apps
cfg = self.init(parser, opts, args)
# Load up the any app specific configuration # Load up the any app specific configuration
if cfg: if cfg:
@ -46,18 +54,18 @@ class Application(object):
self.cfg.set(k.lower(), v) self.cfg.set(k.lower(), v)
# Load up the config file if its found. # Load up the config file if its found.
if self.opts.config and os.path.exists(self.opts.config): if opts.config and os.path.exists(opts.config):
cfg = { cfg = {
"__builtins__": __builtins__, "__builtins__": __builtins__,
"__name__": "__config__", "__name__": "__config__",
"__file__": self.opts.config, "__file__": opts.config,
"__doc__": None, "__doc__": None,
"__package__": None "__package__": None
} }
try: try:
execfile(self.opts.config, cfg, cfg) execfile(opts.config, cfg, cfg)
except Exception, e: except Exception, e:
print "Failed to read config file: %s" % self.opts.config print "Failed to read config file: %s" % opts.config
traceback.print_exc() traceback.print_exc()
sys.exit(1) sys.exit(1)
@ -73,7 +81,7 @@ class Application(object):
# Lastly, update the configuration with any command line # Lastly, update the configuration with any command line
# settings. # settings.
for k, v in list(self.opts.__dict__.items()): for k, v in list(opts.__dict__.items()):
if v is None: if v is None:
continue continue
self.cfg.set(k.lower(), v) self.cfg.set(k.lower(), v)