Shared folders can be skipped from config file and readonly folders are handled
[imap-fix-internaldate] / src / fix_imap_internaldate.py
index 56516c9..a0d698b 100644 (file)
@@ -67,8 +67,22 @@ def load_configuration():
     """Loads the script configuration from a file or creates such."""
     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.get('basic_settings', 'skip_shared_folders')
+            config.get('basic_settings', 'fallback_to_date_header')
+    except configparser.NoOptionError:
+        success = []
+    except ValueError:
+        success = []
+
+    # if corrupted settings save file and load default
     if(len(success)==0):
-        config.add_section('basic_settings')
+        if(not config.has_section('basic_settings')):
+            config.add_section('basic_settings')
         config.set('basic_settings', 'file_log_level', logging.INFO)
         config.set('basic_settings', 'console_log_level', logging.INFO)
         config.set('basic_settings', 'imap_server', 'imap.company.com')
@@ -78,6 +92,7 @@ def load_configuration():
         with open(CONFIG_FILENAME, 'w') as configfile:
             config.write(configfile)
             configfile.write("# 0 NOTSET, 10 DEBUG, 20 INFO, 30 WARNING, 40 ERROR, 50 CRITICAL")
+            
     return config
 
 def prepare_logger(config):
@@ -113,7 +128,8 @@ def synchronize_csv(config, test_mode):
     user_reader = csv.DictReader(open(CSV_FILENAME, "r"), delimiter=',')
     for user in user_reader:
         try:
-            session = MailIterator(server, user['username'], user['password'])
+            session = MailIterator(server, user['username'], user['password'],
+                                   config.get('basic_settings', 'skip_shared_folders')=="ON")
         except UserWarning as ex:
             logging.error(ex)
             continue