class NotiBday: def __init__(self): self.calendar = GCal(config.CONTACTS_CAL_ID) self.agenda = GContacts() self.agenda.retrieve_contacts() @staticmethod def parse_bday_event(event): date, summary = event if not summary.startswith('Aniversario'): name = re.split(r'\s*-\s*', summary)[0] date = datetime.datetime.strptime(date, '%Y-%m-%d') else: name, date = None, None return name, date def notify_today_birthdays(self): events = self.calendar.get_events() if events: buf = ['Hoy es el cumpleaños de:'] for event in sorted(events, key=lambda t: t[1]): name, _ = NotiBday.parse_bday_event(event) if name: age = self.agenda.get_contact_age(name) buf.append(f'🎂 *{name}* ({age})') msg = os.linesep.join(buf) send_message(msg) def _get_birthdays_at_delta(self, delta, caption, use_vip=True): try: with open(config.VIP_FILE) as f: vips = [line.strip() for line in f.readlines()] except FileNotFoundError: use_vip = False events = self.calendar.get_events(delta=delta) if events: buf = [] for event in sorted(events, key=lambda t: t[1]): name, date = NotiBday.parse_bday_event(event) if name and ((not use_vip) or (use_vip and name in vips)): date = date.strftime("%-d/%-m") age = self.agenda.get_contact_age(name) buf.append(f'🎈 *{name}* ({date}) {age}') if buf: buf.insert(0, caption) msg = os.linesep.join(buf) else: msg = '' return msg def notify_next_birthdays(self): buf = [] for next_birthday in NEXT_BIRTHDAYS: birthdays = self._get_birthdays_at_delta(*next_birthday) if birthdays: buf.append(birthdays) buf.append(2 * os.linesep) if buf: send_message(''.join(buf))
def viewCal(): gcal = GCal() id1 = gcal.get_tempID() oldEvents = gcal.get_events(calendar='temp', daysPast=2, daysFuture=7) gcal.delete_multiple('main', oldEvents) if request.method == 'GET': sciPyLAS.run() tempList = gcal.get_events(calendar='temp', daysPast=0, daysFuture=7) if request.method == 'POST': gcal.migrate_events() for i in tempList: ID = i.name try: temp = request.form[ID] gcal.delete_event('temp', ID) except: pass return render_template('viewCal.html', id1=id1, tempList=tempList)