comparison multimerge.py @ 140:65d4da73e558 default tip

Use is / is not for comparing to None.
author Matti Hamalainen <ccr@tnsp.org>
date Fri, 24 Jun 2022 18:55:34 +0300
parents 23fc7cd1cd53
children
comparison
equal deleted inserted replaced
139:23fc7cd1cd53 140:65d4da73e558
143 143
144 144
145 ## Dump/print a given list of events for debugging purposes 145 ## Dump/print a given list of events for debugging purposes
146 def gcm_dump_events(events, show): 146 def gcm_dump_events(events, show):
147 for event in events: 147 for event in events:
148 if show == None or show(event): 148 if show is None or show(event):
149 ev_start = event["start"].get("dateTime", event["start"].get("date")) if "start" in event else "?" 149 ev_start = event["start"].get("dateTime", event["start"].get("date")) if "start" in event else "?"
150 ev_end = event["end"].get("dateTime", event["end"].get("date")) if "end" in event else "?" 150 ev_end = event["end"].get("dateTime", event["end"].get("date")) if "end" in event else "?"
151 summary = event["summary"] if "summary" in event else "?" 151 summary = event["summary"] if "summary" in event else "?"
152 status = "*" if event["status"] != "cancelled" else "!" 152 status = "*" if event["status"] != "cancelled" else "!"
153 gcm_print("[{0}] {1:25} - {2:25} : {3} [{4}] [{5}]".format(status, ev_start, ev_end, summary, event["iCalUID"], event["id"])) 153 gcm_print("[{0}] {1:25} - {2:25} : {3} [{4}] [{5}]".format(status, ev_start, ev_end, summary, event["iCalUID"], event["id"]))
207 ### 207 ###
208 ### Class for parsing and manipulating RGB colors 208 ### Class for parsing and manipulating RGB colors
209 ### 209 ###
210 class GCMColor(): 210 class GCMColor():
211 def __init__(self, src = None): 211 def __init__(self, src = None):
212 if src == None: 212 if src is None:
213 self.r = self.g = self.b = 0 213 self.r = self.g = self.b = 0
214 elif isinstance(src, str): 214 elif isinstance(src, str):
215 if len(src) == 6: 215 if len(src) == 6:
216 self.r = int(src[0:2], 16) 216 self.r = int(src[0:2], 16)
217 self.g = int(src[2:4], 16) 217 self.g = int(src[2:4], 16)
324 324
325 def is_str(self, mvalue): 325 def is_str(self, mvalue):
326 return isinstance(mvalue, str) 326 return isinstance(mvalue, str)
327 327
328 def is_string(self, mvalue): 328 def is_string(self, mvalue):
329 return mvalue == None or self.is_str(mvalue) 329 return mvalue is None or self.is_str(mvalue)
330 330
331 def is_log_level(self, mvalue): 331 def is_log_level(self, mvalue):
332 if not self.is_str(mvalue): 332 if not self.is_str(mvalue):
333 return False 333 return False
334 else: 334 else:
387 return False 387 return False
388 else: 388 else:
389 return re.match("^.*?\s+<[a-z0-9]+[a-z0-9\.\+\-]*\@[a-z0-9]+[a-z0-9\.\-]+>\s*$|[a-z0-9]+[a-z0-9\.\+\-]*\@[a-z0-9]+[a-z0-9\.\-]+", mvalue, flags=re.IGNORECASE) 389 return re.match("^.*?\s+<[a-z0-9]+[a-z0-9\.\+\-]*\@[a-z0-9]+[a-z0-9\.\-]+>\s*$|[a-z0-9]+[a-z0-9\.\+\-]*\@[a-z0-9]+[a-z0-9\.\-]+", mvalue, flags=re.IGNORECASE)
390 390
391 def trans_email_list(self, mvalue): 391 def trans_email_list(self, mvalue):
392 if mvalue == None: 392 if mvalue is None:
393 return mvalue 393 return mvalue
394 else: 394 else:
395 return self.trans_list(mvalue.strip()) 395 return self.trans_list(mvalue.strip())
396 396
397 def is_email_list(self, mvalue): 397 def is_email_list(self, mvalue):
398 mvalue = self.trans_email_list(mvalue) 398 mvalue = self.trans_email_list(mvalue)
399 if mvalue != None: 399 if mvalue is not None:
400 for email in mvalue: 400 for email in mvalue:
401 if not self.is_email(email): 401 if not self.is_email(email):
402 gcm_fatal("Invalid e-mail address '{0}' in list {1}.".format(email, ", ".join(mvalue))) 402 gcm_fatal("Invalid e-mail address '{0}' in list {1}.".format(email, ", ".join(mvalue)))
403 return True 403 return True
404 404
478 cfg.mread(cfg_parser, cfg_section) 478 cfg.mread(cfg_parser, cfg_section)
479 479
480 480
481 ## Validate settings 481 ## Validate settings
482 if cfg.email != "off": 482 if cfg.email != "off":
483 if cfg.email_subject == None or len(cfg.email_subject) == 0: 483 if cfg.email_subject is None or len(cfg.email_subject) == 0:
484 gcm_fatal("E-mail enabled but email_subject not set.") 484 gcm_fatal("E-mail enabled but email_subject not set.")
485 elif cfg.email_sender == None: 485 elif cfg.email_sender is None:
486 gcm_fatal("E-mail enabled but email_sender not set.") 486 gcm_fatal("E-mail enabled but email_sender not set.")
487 elif cfg.email_to == None: 487 elif cfg.email_to is None:
488 gcm_fatal("E-mail enabled but email_to not set.") 488 gcm_fatal("E-mail enabled but email_to not set.")
489 else: 489 else:
490 cfg.mset("email_ok", True) 490 cfg.mset("email_ok", True)
491 491
492 492
598 events = gcm_generate_ids(gcm_fetch_events(calendar["id"], False), calendar["id"], "___", "id") 598 events = gcm_generate_ids(gcm_fetch_events(calendar["id"], False), calendar["id"], "___", "id")
599 if events: 599 if events:
600 for event in events: 600 for event in events:
601 # Set summary and color for existing events 601 # Set summary and color for existing events
602 if event["status"] != "cancelled": 602 if event["status"] != "cancelled":
603 if c_found != None: 603 if c_found is not None:
604 event["colorId"] = c_found 604 event["colorId"] = c_found
605 if "summary" in event: 605 if "summary" in event:
606 event["summary"] = "[{1}] {0}".format(event["summary"], calendar["gcm_id"]) 606 event["summary"] = "[{1}] {0}".format(event["summary"], calendar["gcm_id"])
607 else: 607 else:
608 event["summary"] = "[?] {0}".format(calendar["gcm_id"]) 608 event["summary"] = "[?] {0}".format(calendar["gcm_id"])