|
@ -7,6 +7,7 @@ from ics import Calendar |
|
|
import requests |
|
|
import requests |
|
|
import jinja2 |
|
|
import jinja2 |
|
|
import os |
|
|
import os |
|
|
|
|
|
import shutil |
|
|
from slugify import slugify |
|
|
from slugify import slugify |
|
|
from natural import date |
|
|
from natural import date |
|
|
from event_feed_config import calendar_url, output_dir |
|
|
from event_feed_config import calendar_url, output_dir |
|
@ -40,6 +41,7 @@ tzs = [ |
|
|
('Wellington', 'Pacific/Auckland') |
|
|
('Wellington', 'Pacific/Auckland') |
|
|
] |
|
|
] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for event in list(cal.events): |
|
|
for event in list(cal.events): |
|
|
|
|
|
|
|
|
localized_begins =[] |
|
|
localized_begins =[] |
|
@ -47,7 +49,7 @@ for event in list(cal.events): |
|
|
localized_begins.append( #javascript formatting because of string creation from hell |
|
|
localized_begins.append( #javascript formatting because of string creation from hell |
|
|
'__{}__ {}'.format( |
|
|
'__{}__ {}'.format( |
|
|
str(i[0]), |
|
|
str(i[0]), |
|
|
str(event.begin.to(i[1]).format("YYYY-MM-DD HH:mm")) |
|
|
str(event.begin.to(i[1]).format("YYYY-MM-DD __HH:mm__")) |
|
|
) |
|
|
) |
|
|
) |
|
|
) |
|
|
|
|
|
|
|
@ -56,19 +58,32 @@ for event in list(cal.events): |
|
|
'name':event.name, |
|
|
'name':event.name, |
|
|
'created':event.created.format(), |
|
|
'created':event.created.format(), |
|
|
'description': event.description, |
|
|
'description': event.description, |
|
|
'begin': ' '.join(localized_begins), #non-breaking space characters to defeat markdown |
|
|
'begin': ' '.join(localized_begins), #non-breaking space characters to defeat markdown |
|
|
'end': event.end.format(), |
|
|
'end': event.end.format(), |
|
|
'duration': date.compress(event.duration), |
|
|
'duration': date.compress(event.duration), |
|
|
'location': event.location |
|
|
'location': event.location |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
#FIXME: There is no deletion logic |
|
|
|
|
|
#FIXME: figure out how to use legible yet unique post names |
|
|
|
|
|
#FIXME: An update logic? |
|
|
|
|
|
post_dir = os.path.join(output_dir, slugify(event.name)) + '-' + slugify(event.begin.format("YYYY-MM-DD")) |
|
|
|
|
|
if not os.path.exists(post_dir): |
|
|
|
|
|
os.mkdir(post_dir) |
|
|
|
|
|
|
|
|
|
|
|
with open(os.path.join(post_dir,'index.md'),'w') as f: |
|
|
if event.uid not in existing_posts: #if there is an event we dont already have, make it |
|
|
post = template.render(event = event_metadata) |
|
|
post_dir = os.path.join(output_dir, event.uid ) |
|
|
f.write(post) |
|
|
|
|
|
|
|
|
if not os.path.exists(post_dir): |
|
|
|
|
|
os.mkdir(post_dir) |
|
|
|
|
|
|
|
|
|
|
|
with open(os.path.join(post_dir,'index.md'),'w') as f: |
|
|
|
|
|
post = template.render(event = event_metadata) |
|
|
|
|
|
f.write(post) |
|
|
|
|
|
print('created post for', event.name, '({})'.format(event.uid)) |
|
|
|
|
|
|
|
|
|
|
|
elif event.uid in existing_posts: #if we already have it, update |
|
|
|
|
|
|
|
|
|
|
|
existing_posts.remove(event.uid) # create list of posts which have not been returned by the calendar |
|
|
|
|
|
#FIXME: An update logic? e.g. exists but creation date is altered. |
|
|
|
|
|
print(event.uid, 'already exists') |
|
|
|
|
|
|
|
|
|
|
|
for post in existing_posts: #remove events that have been deleted |
|
|
|
|
|
print('deleted', post) #rm posts not returned |
|
|
|
|
|
shutil.rmtree(os.path.join(output_dir,post)) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|