generic.ics
This commit is contained in:
+35
-12
@@ -64,24 +64,47 @@ def json(value,default=custom_json):
|
||||
def csv(value):
|
||||
return ''
|
||||
|
||||
def ics(events, title=None, link=None, timeshift=0):
|
||||
import datetime
|
||||
title = title or '(unkown)'
|
||||
if link and not callable(link):
|
||||
link = lambda item: link +'/%s' % link['id']
|
||||
s = 'BEGIN:VCALENDAR'
|
||||
s += '\nVERSION:2.0'
|
||||
s += '\nX-WR-CALNAME:%s' % title
|
||||
s += '\nSUMMARY:%s' % title
|
||||
s += '\nPRODID:Generated by web2py'
|
||||
s += '\nCALSCALE:GREGORIAN'
|
||||
s += '\nMETHOD:PUBLISH'
|
||||
for item in events:
|
||||
s += '\nBEGIN:VEVENT'
|
||||
s += '\nUID:%s' % item['id']
|
||||
if link:
|
||||
s += '\nURL:%s' % link(item)
|
||||
shift = datetime.timedelta(seconds=3600*timeshift)
|
||||
start = item['start_datetime']+shift
|
||||
stop = item['stop_datetime']+shift
|
||||
s += '\nDTSTART:%s' % start.strftime('%Y%m%dT%H%M%S')
|
||||
s += '\nDTEND:%s' % stop.strftime('%Y%m%dT%H%M%S')
|
||||
s += '\nSUMMARY:%s' % item['title']
|
||||
s += '\nEND:VEVENT'
|
||||
s += '\nEND:VCALENDAR'
|
||||
return s
|
||||
|
||||
def rss(feed):
|
||||
if not 'entries' in feed and 'items' in feed:
|
||||
feed['entries'] = feed['items']
|
||||
now=datetime.datetime.now()
|
||||
rss = rss2.RSS2(title = feed['title'],
|
||||
link = str(feed['link']),
|
||||
description = feed['description'],
|
||||
rss = rss2.RSS2(title = feed.get('title','(notitle)'),
|
||||
link = feed.get('link',None),
|
||||
description = feed.get('description',''),
|
||||
lastBuildDate = feed.get('created_on', now),
|
||||
items = [rss2.RSSItem(\
|
||||
title=entry['title'],
|
||||
link=str(entry['link']),
|
||||
description=entry['description'],
|
||||
pubDate=entry.get('created_on', now)
|
||||
)\
|
||||
for entry in feed['entries']
|
||||
]
|
||||
)
|
||||
items = [rss2.RSSItem(
|
||||
title=entry.get('title','(notitle)'),
|
||||
link=entry('link',None),
|
||||
description=entry.get('description',''),
|
||||
pubDate=entry.get('created_on', now)
|
||||
) for entry in feed.get('entries',[])])
|
||||
return rss2.dumps(rss)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user