Mercurial > hg > gcmultimerge
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: |