def update_data(self):
# TODO: handle whole day events, display multiple events
now = timezone.now()
tonight = now.replace(hour=23, minute=59)
self.dtstart = None
self.summary = None
calendar = Calendar()
r = requests.get(self.ics_url)
calendar = calendar.from_ical(r.text)
for event in calendar.walk():
if event.get('dtstart') and event.get('dtend'):
dtstart = event.get('dtstart').dt
dtend = event.get('dtend').dt
if not isinstance(dtstart, datetime) or not isinstance(dtend, datetime):
dtstart = datetime.fromordinal(dtstart.toordinal())
dtend = datetime.fromordinal(dtend.toordinal())
try:
dtstart = timezone.localtime(dtstart, timezone.utc)
dtend = timezone.localtime(dtend, timezone.utc)
except ValueError:
dtstart = dtstart.replace(tzinfo=timezone.utc)
dtend = dtend.replace(tzinfo=timezone.utc)
if now <= dtend <= tonight:
dtstart = timezone.localtime(dtstart, pytz.timezone('Europe/Paris'))
self.dtstart = formats.time_format(dtstart, 'TIME_FORMAT')
self.summary = str(unidecode.unidecode(event.get('summary')))
self.save()
评论列表
文章目录