Mercurial > hg > gcmultimerge
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"]) |