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')
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
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