comparison multimerge.py @ 14:8262efacf3fb

Initial implementation of sending e-mail in fatal error cases.
author Matti Hamalainen <ccr@tnsp.org>
date Mon, 04 Jul 2016 12:59:30 +0300
parents dd240a7ad913
children 4168dde804ae
comparison
equal deleted inserted replaced
13:dd240a7ad913 14:8262efacf3fb
11 import sys 11 import sys
12 import signal 12 import signal
13 import re 13 import re
14 import time 14 import time
15 import datetime 15 import datetime
16
17 import smtplib
18 from email.mime.text import MIMEText
19
16 import httplib2 20 import httplib2
17 import ConfigParser 21 import ConfigParser
18 import oauth2client 22 import oauth2client
19 from oauth2client import client 23 from oauth2client import client
20 from oauth2client import tools 24 from oauth2client import tools
38 42
39 43
40 ## Fatal errors 44 ## Fatal errors
41 def gcm_fatal(smsg): 45 def gcm_fatal(smsg):
42 gcm_print(u"ERROR: "+ smsg) 46 gcm_print(u"ERROR: "+ smsg)
47 if cfg.email_ok and cfg.email:
48 ## If e-mail is set, send e-mail
49 msg = MIMEText(("\n".join(gcm_msgbuf)).encode("UTF-8"), "plain")
50 msg.set_charset("UTF-8")
51 msg["Subject"] = cfg.email_subject
52 msg["From"] = cfg.email_sender
53 msg["To"] = ",".join(cfg.email_to)
54 try:
55 smtpH = smtplib.SMTP('localhost')
56 smtpH.sendmail(cfg.email_sender, cfg.email_to, msg.as_string())
57 smtpH.quit()
58 except:
59 gcm_print("FATAL: Oh crap, e-mail sending failed.")
43 sys.exit(1) 60 sys.exit(1)
44 61
45 62
46 ## Debug messages 63 ## Debug messages
47 def gcm_debug(smsg): 64 def gcm_debug(smsg):
219 ## Settings 236 ## Settings
220 cfg = GCMSettings() 237 cfg = GCMSettings()
221 238
222 cfg.mdef("debug", True, gcm_is_bool, gcm_trans_bool, False) 239 cfg.mdef("debug", True, gcm_is_bool, gcm_trans_bool, False)
223 240
241 cfg.mdef("email_ok", False, None, None, False)
242 cfg.mdef("email", True, gcm_is_bool, gcm_trans_bool, False)
243 cfg.mdef("email_to", True, gcm_is_email_list, gcm_trans_email_list, None)
244 cfg.mdef("email_sender", True, gcm_is_email, None, None)
245 cfg.mdef("email_subject", True, gcm_is_string, None, "Google Calendar MultiMerge status")
246
224 cfg.mdef("source_regex", True, gcm_is_string, None, "^R:\s*(.*?)\s*\(\s*(.+?)\s*\)\s*$") 247 cfg.mdef("source_regex", True, gcm_is_string, None, "^R:\s*(.*?)\s*\(\s*(.+?)\s*\)\s*$")
225 cfg.mdef("source_regmap", False, gcm_is_list, gcm_trans_list, [1, 2]) 248 cfg.mdef("source_regmap", False, gcm_is_list, gcm_trans_list, [1, 2])
226 cfg.mdef("source_regmap_len", False, None, None, len(cfg.source_regmap)) 249 cfg.mdef("source_regmap_len", False, None, None, len(cfg.source_regmap))
227 250
228 cfg.mdef("dest_name", True, gcm_is_string, None, u"Raahen kansainvälisyystoiminta") 251 cfg.mdef("dest_name", True, gcm_is_string, None, u"Raahen kansainvälisyystoiminta")
263 # Parse the settings and validate 286 # Parse the settings and validate
264 cfg.mread(cfgparser, section) 287 cfg.mread(cfgparser, section)
265 288
266 289
267 ## Validate settings 290 ## Validate settings
291 if cfg.email:
292 if cfg.email_subject == None or len(cfg.email_subject) == 0:
293 gcm_fatal("E-mail enabled but email_subject not set.")
294 elif cfg.email_sender == None:
295 gcm_fatal("E-mail enabled but email_sender not set.")
296 elif cfg.email_to == None:
297 gcm_fatal("E-mail enabled but email_to not set.")
298 else:
299 cfg.mset("email_ok", True)
300
301
268 if len(cfg.source_regmap) != cfg.source_regmap_len: 302 if len(cfg.source_regmap) != cfg.source_regmap_len:
269 gcm_fatal("Setting source_regmap list must be {0} items.".format(cfg.source_regmap_len)) 303 gcm_fatal("Setting source_regmap list must be {0} items.".format(cfg.source_regmap_len))
270 else: 304 else:
271 # Force to integers 305 # Force to integers
272 try: 306 try: