From 5a398a2ceed86991d804f5f5d006e1d3a26ca4b7 Mon Sep 17 00:00:00 2001 From: Christophe Simonis Date: Wed, 11 Mar 2009 15:26:50 +0100 Subject: [PATCH] [FIX] allow log_level and assert_exit_level options to be saved into rc file lp bug: https://launchpad.net/bugs/332104 fixed bzr revid: christophe@tinyerp.com-20090311142650-z8haydv3rc30vl0k --- bin/tools/config.py | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/bin/tools/config.py b/bin/tools/config.py index e8e3e19060c..a40d0ee3f36 100644 --- a/bin/tools/config.py +++ b/bin/tools/config.py @@ -82,7 +82,7 @@ class configmanager(object): hasSSL = check_ssl() - loglevels = dict([(getattr(netsvc, 'LOG_%s' % x), getattr(logging, x)) + self._LOGLEVELS = dict([(getattr(netsvc, 'LOG_%s' % x), getattr(logging, x)) for x in ('CRITICAL', 'ERROR', 'WARNING', 'INFO', 'DEBUG', 'DEBUG_RPC', 'NOTSET')]) version = "%s %s" % (release.description, release.version) @@ -111,8 +111,8 @@ class configmanager(object): parser.add_option("--stop-after-init", action="store_true", dest="stop_after_init", default=False, help="stop the server after it initializes") parser.add_option('--debug', dest='debug_mode', action='store_true', default=False, help='enable debug mode') - parser.add_option("--assert-exit-level", dest='assert_exit_level', type="choice", choices=loglevels.keys(), - help="specify the level at which a failed assertion will stop the server. Accepted values: %s" % (loglevels.keys(),)) + parser.add_option("--assert-exit-level", dest='assert_exit_level', type="choice", choices=self._LOGLEVELS.keys(), + help="specify the level at which a failed assertion will stop the server. Accepted values: %s" % (self._LOGLEVELS.keys(),)) if hasSSL: group = optparse.OptionGroup(parser, "SSL Configuration") group.add_option("-S", "--secure", dest="secure", action="store_true", @@ -130,8 +130,8 @@ class configmanager(object): group.add_option("--logfile", dest="logfile", help="file where the server log will be stored") group.add_option("--syslog", action="store_true", dest="syslog", default=False, help="Send the log to the syslog server") - group.add_option('--log-level', dest='log_level', type='choice', choices=loglevels.keys(), - help='specify the level of the logging. Accepted values: ' + str(loglevels.keys())) + group.add_option('--log-level', dest='log_level', type='choice', choices=self._LOGLEVELS.keys(), + help='specify the level of the logging. Accepted values: ' + str(self._LOGLEVELS.keys())) parser.add_option_group(group) # SMTP Group @@ -236,10 +236,14 @@ class configmanager(object): self.options[arg] = getattr(opt, arg) if opt.assert_exit_level: - self.options['assert_exit_level'] = loglevels[opt.assert_exit_level] + self.options['assert_exit_level'] = self._LOGLEVELS[opt.assert_exit_level] + else: + self.options['assert_exit_level'] = self._LOGLEVELS.get(self.options['assert_exit_level']) or int(self.options['assert_exit_level']) if opt.log_level: - self.options['log_level'] = loglevels[opt.log_level] + self.options['log_level'] = self._LOGLEVELS[opt.log_level] + else: + self.options['log_level'] = self._LOGLEVELS.get(self.options['log_level']) or int(self.options['log_level']) if not self.options['root_path'] or self.options['root_path']=='None': self.options['root_path'] = os.path.abspath(os.path.dirname(sys.argv[0])) @@ -336,9 +340,15 @@ class configmanager(object): def save(self): p = ConfigParser.ConfigParser() + loglevelnames = dict(zip(self._LOGLEVELS.values(), self._LOGLEVELS.keys())) p.add_section('options') - for o in [opt for opt in self.options.keys() if opt not in ('version','language','translate_out','translate_in','init','update')]: - p.set('options', o, self.options[o]) + for opt in self.options.keys(): + if opt in ('version', 'language', 'translate_out', 'translate_in', 'init', 'update'): + continue + if opt in ('log_level', 'assert_exit_level'): + p.set('options', opt, loglevelnames.get(self.options[opt], self.options[opt])) + else: + p.set('options', opt, self.options[opt]) # try to create the directories and write the file try: