a956ba0e8c9e32fd49f1d9bc887dff021eed344e
[treecutter.git] / xinclude / events.py
1 #!/usr/bin/python
2 # -*- coding: utf-8 -*-
3
4 import getpass
5 from dateutil.tz import *; from datetime import *
6 import vobject
7 import httplib
8 import urlparse
9 from lxml import etree
10 import sys
11 import re
12
13 pw = getpass.getpass()
14 urlstr = "CALDAV ULR"
15 url = urlparse.urlparse(urlstr)
16 headers = {"User-Agent": "Mozilla/5.0",
17                         "Content-Type": "text/xml",
18                         "Accept": "text/xml"}
19
20 headers['authorization'] = "Basic %s" % (("%s:%s" % (username, pw)).encode('base64')[:-1])
21 handle = httplib.HTTPSConnection('tree.se','8443')
22 res = handle.request('GET', 'CALENDAR PATH', "", headers)
23 r = handle.getresponse()
24 if r.status != 200:
25   print "Failed to connect! Wrong Password ?"
26   sys.exit(5)
27 s = r.read()
28 events = []
29 headers = ['dtstart','summary','location','description']
30 for cal in vobject.readComponents(s):
31   for ev in cal.vevent_list:
32     details = {}
33     for k in headers:
34       details[k] = ""
35     for p in ev.getChildren():
36       details[p.name.lower()] = p.value
37     events.append(details)
38 handle.close()
39
40 sortedevents = sorted(events, key=lambda k: k['dtstart'], reverse=True)
41 output = u'''
42 <variablelist role="calendar" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
43 <title>%s</title>''' % (u'Stammtisch träffar')
44 for ev in sortedevents:
45     loc = ev['location'].split('[')[0]
46     if ev['location'].find('['):
47         lat = ev['location'].split('[')[1].split(',')[0]
48         lon = ev['location'].split('[')[1].split(',')[1].replace(']','')
49         loc = ' <link xlink:href="http://openstreetmap.org/?mlat=%s&amp;mlon=%s&amp;zoom=17">%s</link>' % (lat,lon,loc)
50     output +=  u'''<varlistentry>
51 <term>
52 <date role="calendar">%s %s %s</date>
53 </term>
54 <listitem>
55 <para>%s</para>
56 <variablelist>
57 <varlistentry>
58   <term>Tid</term>
59   <listitem><para>%s</para></listitem>
60 </varlistentry>
61 <varlistentry>
62   <term>Plats</term>
63   <listitem><para>%s</para></listitem>
64 </varlistentry>
65 <varlistentry>
66   <term>Beskrivning</term>
67   <listitem><para role="desc">%s</para></listitem>
68 </varlistentry>
69 </variablelist>
70 </listitem>
71 </varlistentry>''' % (ev['dtstart'].strftime('%Y'),
72                       ev['dtstart'].strftime('%b'),
73                       ev['dtstart'].strftime('%d'),
74                       ev['summary'],
75                       ev['dtstart'].strftime('%H:%M'),
76                       loc,
77                       '</para><para>'.join(re.split('\n\n',unicode(ev['description']))))
78 output += u'</variablelist>'
79 print output.encode("utf-8")