From: Fredrik Unger <fred@tree.se> Date: Tue, 6 Nov 2012 14:46:36 +0000 (+0100) Subject: Renaming calendar to events due to naming collision in vobject. X-Git-Url: https://source.tree.se/git?a=commitdiff_plain;h=1e847c4334487dd3f5c26202e17b00f1cf1c9d16;p=treecutter.git Renaming calendar to events due to naming collision in vobject. --- diff --git a/xinclude/calendar.py b/xinclude/calendar.py deleted file mode 100755 index a956ba0..0000000 --- a/xinclude/calendar.py +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- - -import getpass -from dateutil.tz import *; from datetime import * -import vobject -import httplib -import urlparse -from lxml import etree -import sys -import re - -pw = getpass.getpass() -urlstr = "CALDAV ULR" -url = urlparse.urlparse(urlstr) -headers = {"User-Agent": "Mozilla/5.0", - "Content-Type": "text/xml", - "Accept": "text/xml"} - -headers['authorization'] = "Basic %s" % (("%s:%s" % (username, pw)).encode('base64')[:-1]) -handle = httplib.HTTPSConnection('tree.se','8443') -res = handle.request('GET', 'CALENDAR PATH', "", headers) -r = handle.getresponse() -if r.status != 200: - print "Failed to connect! Wrong Password ?" - sys.exit(5) -s = r.read() -events = [] -headers = ['dtstart','summary','location','description'] -for cal in vobject.readComponents(s): - for ev in cal.vevent_list: - details = {} - for k in headers: - details[k] = "" - for p in ev.getChildren(): - details[p.name.lower()] = p.value - events.append(details) -handle.close() - -sortedevents = sorted(events, key=lambda k: k['dtstart'], reverse=True) -output = u''' -<variablelist role="calendar" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"> -<title>%s</title>''' % (u'Stammtisch träffar') -for ev in sortedevents: - loc = ev['location'].split('[')[0] - if ev['location'].find('['): - lat = ev['location'].split('[')[1].split(',')[0] - lon = ev['location'].split('[')[1].split(',')[1].replace(']','') - loc = ' <link xlink:href="http://openstreetmap.org/?mlat=%s&mlon=%s&zoom=17">%s</link>' % (lat,lon,loc) - output += u'''<varlistentry> -<term> -<date role="calendar">%s %s %s</date> -</term> -<listitem> -<para>%s</para> -<variablelist> -<varlistentry> - <term>Tid</term> - <listitem><para>%s</para></listitem> -</varlistentry> -<varlistentry> - <term>Plats</term> - <listitem><para>%s</para></listitem> -</varlistentry> -<varlistentry> - <term>Beskrivning</term> - <listitem><para role="desc">%s</para></listitem> -</varlistentry> -</variablelist> -</listitem> -</varlistentry>''' % (ev['dtstart'].strftime('%Y'), - ev['dtstart'].strftime('%b'), - ev['dtstart'].strftime('%d'), - ev['summary'], - ev['dtstart'].strftime('%H:%M'), - loc, - '</para><para>'.join(re.split('\n\n',unicode(ev['description'])))) -output += u'</variablelist>' -print output.encode("utf-8") diff --git a/xinclude/events.py b/xinclude/events.py new file mode 100755 index 0000000..a956ba0 --- /dev/null +++ b/xinclude/events.py @@ -0,0 +1,79 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +import getpass +from dateutil.tz import *; from datetime import * +import vobject +import httplib +import urlparse +from lxml import etree +import sys +import re + +pw = getpass.getpass() +urlstr = "CALDAV ULR" +url = urlparse.urlparse(urlstr) +headers = {"User-Agent": "Mozilla/5.0", + "Content-Type": "text/xml", + "Accept": "text/xml"} + +headers['authorization'] = "Basic %s" % (("%s:%s" % (username, pw)).encode('base64')[:-1]) +handle = httplib.HTTPSConnection('tree.se','8443') +res = handle.request('GET', 'CALENDAR PATH', "", headers) +r = handle.getresponse() +if r.status != 200: + print "Failed to connect! Wrong Password ?" + sys.exit(5) +s = r.read() +events = [] +headers = ['dtstart','summary','location','description'] +for cal in vobject.readComponents(s): + for ev in cal.vevent_list: + details = {} + for k in headers: + details[k] = "" + for p in ev.getChildren(): + details[p.name.lower()] = p.value + events.append(details) +handle.close() + +sortedevents = sorted(events, key=lambda k: k['dtstart'], reverse=True) +output = u''' +<variablelist role="calendar" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"> +<title>%s</title>''' % (u'Stammtisch träffar') +for ev in sortedevents: + loc = ev['location'].split('[')[0] + if ev['location'].find('['): + lat = ev['location'].split('[')[1].split(',')[0] + lon = ev['location'].split('[')[1].split(',')[1].replace(']','') + loc = ' <link xlink:href="http://openstreetmap.org/?mlat=%s&mlon=%s&zoom=17">%s</link>' % (lat,lon,loc) + output += u'''<varlistentry> +<term> +<date role="calendar">%s %s %s</date> +</term> +<listitem> +<para>%s</para> +<variablelist> +<varlistentry> + <term>Tid</term> + <listitem><para>%s</para></listitem> +</varlistentry> +<varlistentry> + <term>Plats</term> + <listitem><para>%s</para></listitem> +</varlistentry> +<varlistentry> + <term>Beskrivning</term> + <listitem><para role="desc">%s</para></listitem> +</varlistentry> +</variablelist> +</listitem> +</varlistentry>''' % (ev['dtstart'].strftime('%Y'), + ev['dtstart'].strftime('%b'), + ev['dtstart'].strftime('%d'), + ev['summary'], + ev['dtstart'].strftime('%H:%M'), + loc, + '</para><para>'.join(re.split('\n\n',unicode(ev['description'])))) +output += u'</variablelist>' +print output.encode("utf-8")