From c4974933025ec364c336943b3ecb518791033074 Mon Sep 17 00:00:00 2001 From: Thomas Jarosch Date: Thu, 5 Jul 2012 11:46:24 +0200 Subject: [PATCH] Improve config parser - Don't reset config file on broken values, warn user instead - Print initial config file creation on the console --- src/fix_imap_internaldate.py | 40 ++++++++++++++++++++-------------------- 1 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/fix_imap_internaldate.py b/src/fix_imap_internaldate.py index 4e0cccf..9c8ad80 100644 --- a/src/fix_imap_internaldate.py +++ b/src/fix_imap_internaldate.py @@ -65,23 +65,10 @@ def main(): def load_configuration(): """Loads the script configuration from a file or creates such.""" - config = configparser.RawConfigParser() + config = configparser.RawConfigParser() success = config.read(CONFIG_FILENAME) - try: - config.get('basic_settings', 'file_log_level') - config.get('basic_settings', 'console_log_level') - config.get('basic_settings', 'imap_server') - config.getint('basic_settings', 'tolerance_mins') - config.getboolean('basic_settings', 'skip_shared_folders') - config.getboolean('basic_settings', 'fallback_to_date_header') - except configparser.NoSectionError: - success = [] - except configparser.NoOptionError: - success = [] - except ValueError: - success = [] - - # if corrupted settings save file and load default + + # if no file is found create a default one if(len(success)==0): if(not config.has_section('basic_settings')): config.add_section('basic_settings') @@ -89,11 +76,24 @@ def load_configuration(): config.set('basic_settings', 'console_log_level', logging.INFO) config.set('basic_settings', 'imap_server', 'imap.company.com') config.set('basic_settings', 'tolerance_mins', 30) - config.set('basic_settings', 'skip_shared_folders', True) - config.set('basic_settings', 'fallback_to_date_header', False) + config.set('basic_settings', 'skip_shared_folders', "True") + config.set('basic_settings', 'fallback_to_date_header', "False") with open(CONFIG_FILENAME, 'w') as configfile: config.write(configfile) configfile.write("# 0 NOTSET, 10 DEBUG, 20 INFO, 30 WARNING, 40 ERROR, 50 CRITICAL\n") + print("Created initial config %s" % CONFIG_FILENAME) + + try: + config.get('basic_settings', 'file_log_level') + config.get('basic_settings', 'console_log_level') + config.get('basic_settings', 'imap_server') + config.getint('basic_settings', 'tolerance_mins') + config.getboolean('basic_settings', 'skip_shared_folders') + config.getboolean('basic_settings', 'fallback_to_date_header') + except (configparser.NoSectionError, configparser.NoOptionError, ValueError) as ex: + print("Could not read config file '%s': %s." % (CONFIG_FILENAME, ex)) + print("Please change or remove the config file.") + sys.exit() return config @@ -125,13 +125,13 @@ def synchronize_csv(config, test_mode): date_parser = MailDateParser() server = config.get('basic_settings', 'imap_server') tolerance = config.getint('basic_settings', 'tolerance_mins') * 60 + skip_shared_folders = config.getboolean('basic_settings', 'skip_shared_folders') # iterate through the users in the csv data user_reader = csv.DictReader(open(CSV_FILENAME, "r"), delimiter=',') for user in user_reader: try: - session = MailIterator(server, user['username'], user['password'], - config.getboolean('basic_settings', 'skip_shared_folders')) + session = MailIterator(server, user['username'], user['password'], skip_shared_folders) except UserWarning as ex: logging.error(ex) continue -- 1.7.1