def events(day=0): today, tomorrow = today_times(day) events = today_events(day=day) alldays = [] endings = [] todays = [] for event in events: event = event_times(event) if event['start'] <= today and event['end'] >= tomorrow: # all day! alldays.append(event) elif event['start'] <= today and event['end'] <= tomorrow: # multi-day event (like an all-day) that we’re not in the middle of endings.append(event) else: todays.append(event) out = [] for event in alldays: out.append(format_event(prefs['dates']['all_day'], event)) out.append(misc.thinhrule() + '\n') # TODO: this output is so massively unclear. nobody who hasnt written this # program will ever know what it means for event in endings: out.append(format_event(prefs['dates']['ending'], event)) out.append(misc.thinhrule() + '\n') for event in todays: out.append(format_event(misc.hoursminutes(event['start']), event)) return ''.join(out).rstrip()
def today_classes(day=0): class_cals = calendar_match(prefs['calendar']['class_pat']) classes = [] for cal in class_cals: classes.extend(today_events(cal['id'], day=day)) out = [] for event in classes: event = event_times(event) if '_daily_report_processed' not in event: event['summary'] += extformat(' ' + prefs['dates']['ending'], event, time=misc.hoursminutes(event['end'])) event['_daily_report_processed'] = True out.append(format_event(misc.hoursminutes(event['start']), event)) return ''.join(out).rstrip()
def suntimes(location=prefs['weather']['location']): risetime, settime = sunrise(location), sunset(location) daylight = settime - risetime risefmt = extformat(prefs['weather']['sun']['rise_format'], sunrise=misc.hoursminutes(risetime, fillchar='')) setfmt = extformat(prefs['weather']['sun']['set_format'], sunset=misc.hoursminutes(settime, fillchar='')) dayfmt = extformat(prefs['weather']['sun']['daylight_format'], daylight=misc.formatdelta(daylight)) return extformat( prefs['weather']['sun']['format'], sunrise=risefmt, sunset=setfmt, daylight=dayfmt, )
def today_work(day=0): work_cals = calendar_match(prefs['calendar']['work_pat']) shifts = [] for cal in work_cals: shifts.extend(today_events(cal['id'], day=day)) out = [] for shift in shifts: shift = event_times(shift) out.append(format_event(misc.hoursminutes(shift['start']), shift)) return ''.join(out).rstrip()
def format_event(time, event): today, tomorrow = today_times() leader = ' ' + prefs['vert'] + ' ' if time == prefs['dates']['all_day'] and event['duration'].days > 1: time = extformat(prefs['dates']['all_day'], event) event['summary'] += (' (day ' + str((today - event['start']).days + 1) + ' of ' + str((event['end'] - event['start']).days) + ')') elif time == prefs['dates']['ending']: time = extformat(prefs['dates']['ending'], event, time=misc.hoursminutes(event['end'])) return misc.format_left(event['summary'], leader=leader, firstline=time + leader)
def now_hm(fillchar=''): return misc.hoursminutes(datetime.datetime.now(), fillchar=fillchar)