From 6b7366924af5945c3c56f375944e1233cb98c842 Mon Sep 17 00:00:00 2001 From: Ace Date: Thu, 5 Dec 2019 23:06:45 +0100 Subject: [PATCH] Update inkycal_icalendar.py --- Inky-Calendar/modules/inkycal_icalendar.py | 62 ++++++++++++---------- 1 file changed, 33 insertions(+), 29 deletions(-) diff --git a/Inky-Calendar/modules/inkycal_icalendar.py b/Inky-Calendar/modules/inkycal_icalendar.py index 900b700..978e6a9 100644 --- a/Inky-Calendar/modules/inkycal_icalendar.py +++ b/Inky-Calendar/modules/inkycal_icalendar.py @@ -13,38 +13,42 @@ from ics import Calendar print_events = False style = 'DD MMM YY HH:mm' -"""Set timelines for filtering upcoming events""" -now = arrow.now(tz=get_tz()) -beginning_of_month = now.replace(days= - now.day +1) -near_future = now.replace(days= 30) -further_future = now.replace(days=40) -"""Parse the iCalendars from the urls, fixing some known errors with ics""" -calendars = [Calendar(fix_ical(url)) for url in ical_urls] +def fetch_events(): + """Set timelines for filtering upcoming events""" + now = arrow.now(tz=get_tz()) + beginning_of_month = now.replace(days= - now.day +1) + near_future = now.replace(days= 30) + further_future = now.replace(days=40) -"""Filter any upcoming events from all iCalendars and add them to a list""" -upcoming_events = [events for ical in calendars for events in ical.events - if beginning_of_month <= events.end <= further_future or - beginning_of_month <= events.begin <= near_future] + """Parse the iCalendars from the urls, fixing some known errors with ics""" + calendars = [Calendar(fix_ical(url)) for url in ical_urls] -"""Sort events according to their beginning date""" -def sort_dates(event): - return event.begin -upcoming_events.sort(key=sort_dates) + """Filter any upcoming events from all iCalendars and add them to a list""" + upcoming_events = [events for ical in calendars for events in ical.events + if beginning_of_month <= events.end <= further_future or + beginning_of_month <= events.begin <= near_future] -"""Multiday events are displayed incorrectly; fix that""" -for events in upcoming_events: - if events.all_day and events.duration.days > 1: - events.end = events.end.replace(days=-2) + """Sort events according to their beginning date""" + def sort_dates(event): + return event.begin + upcoming_events.sort(key=sort_dates) -""" The list upcoming_events should not be modified. If you need the data from -this one, copy the list or the contents to another one.""" -#print(upcoming_events) # Print all events. Might look a bit messy - -"""Print upcoming events in a more appealing way""" -if print_events == True and upcoming_events: - line_width = max(len(i.name) for i in upcoming_events) + """Multiday events are displayed incorrectly; fix that""" for events in upcoming_events: - print('{0} {1} | {2} | {3} | All day ='.format(events.name, - ' '* (line_width - len(events.name)), events.begin.format(style), - events.end.format(style)), events.all_day) + if events.all_day and events.duration.days > 1: + events.end = events.end.replace(days=-2) + + """ The list upcoming_events should not be modified. If you need the data from + this one, copy the list or the contents to another one.""" + #print(upcoming_events) # Print all events. Might look a bit messy + + """Print upcoming events in a more appealing way""" + if print_events == True and upcoming_events: + line_width = max(len(i.name) for i in upcoming_events) + for events in upcoming_events: + print('{0} {1} | {2} | {3} | All day ='.format(events.name, + ' '* (line_width - len(events.name)), events.begin.format(style), + events.end.format(style)), events.all_day) + + return upcoming_events