refactoring update
Created new ical_parser refactored inkycal_calendar refactored inkycal_agenda fixed minor bug in write_text function
This commit is contained in:
@@ -116,7 +116,8 @@ class icalendar:
|
||||
t_end <= arrow.get(events.get('dtend').dt) <= t_start
|
||||
] #TODO: timezone-awareness?
|
||||
|
||||
if events: parsed_events += events
|
||||
# if any recurring events were found, add them to parsed_events
|
||||
if events: self.parsed_events += events
|
||||
|
||||
# Recurring events time-span has to be in this format:
|
||||
# "%Y%m%dT%H%M%SZ" (python strftime)
|
||||
@@ -132,20 +133,27 @@ class icalendar:
|
||||
'end':arrow.get(events.get("DTEND").dt)
|
||||
} for ical in recurring_events for events in ical]
|
||||
|
||||
# if any recurring events were found, add them to parsed_events
|
||||
if re_events: self.parsed_events += re_events
|
||||
|
||||
def sort_dates(event): ##required?
|
||||
return event['begin']
|
||||
self.parsed_events.sort(key=sort_dates)
|
||||
# Sort events by their beginning date
|
||||
self.sort()
|
||||
|
||||
return self.parsed_events
|
||||
|
||||
def sort(self):
|
||||
"""Sort all parsed events"""
|
||||
if not self.parsed_events:
|
||||
logging.debug('no events found to be sorted')
|
||||
else:
|
||||
by_date = lambda event: event['begin']
|
||||
self.parsed_events.sort(key=by_date)
|
||||
|
||||
def sort_dates(event):
|
||||
return event['begin']
|
||||
def clear_events(self):
|
||||
"""clear previously parsed events"""
|
||||
|
||||
self.parsed_events = []
|
||||
|
||||
self.parsed_events = self.parsed_events.sort(key=sort_dates)
|
||||
|
||||
def show_events(self, fmt='DD MMM YY HH:mm'):
|
||||
"""print all parsed events in a more readable way
|
||||
@@ -153,18 +161,25 @@ class icalendar:
|
||||
see https://arrow.readthedocs.io/en/latest/#supported-tokens
|
||||
for more info tokens
|
||||
"""
|
||||
|
||||
if not self.parsed_events:
|
||||
logging.debug('no events found to be shown')
|
||||
else:
|
||||
## line_width = line_width = max(len(_['title']) for _ in self.parsed_events)
|
||||
## for events in self.parsed_events:
|
||||
## title = events['title'],
|
||||
## begin, end = events['begin'].format(fmt), events['end'].format(fmt)
|
||||
## print('{0} {1} | {2} | {3}'.format(
|
||||
## title, ' ' * (line_width - len(title)), begin, end))
|
||||
for events in self.parsed_events:
|
||||
title = events['title']
|
||||
begin, end = events['begin'].format(fmt), events['end'].format(fmt)
|
||||
print('start: {}, end : {}, title: {}'.format(begin,end,title))
|
||||
|
||||
|
||||
""" Sample usage...
|
||||
|
||||
"""
|
||||
a = icalendar()
|
||||
a.load_url(urls)
|
||||
a.get_events(arrow.now(), arrow.now().shift(weeks=4))
|
||||
a.show_events()
|
||||
"""
|
||||
|
Reference in New Issue
Block a user