X-Git-Url: https://source.tree.se/git?p=treecutter.git;a=blobdiff_plain;f=xinclude%2Fevents.py;h=a0fd96a478826b4595401075e15c59508926a8eb;hp=35c79e0ca2894bb51b3c62901755a694399e2c7a;hb=008eaaae8c6836b2e84b7ec29640d9ded6d57332;hpb=77dc092f91ad0437b29c810f856f742a9a4e4684 diff --git a/xinclude/events.py b/xinclude/events.py index 35c79e0..a0fd96a 100755 --- a/xinclude/events.py +++ b/xinclude/events.py @@ -12,6 +12,9 @@ from lxml import etree from lxml.builder import ElementMaker import sys import re + +from address import Address +from contact import Organization from treecutter import constants as const @@ -61,8 +64,14 @@ class Events(object): fev.append(ev) self.events = fev - def sort(self,order): - sortedevents = sorted(events, key=lambda k: k['dtstart'], reverse=True) + def geocode(self): + for ev in self.events: + ev.geocode() + + def sorted(self,order): + if order == 'start': + self.events.sort(key=lambda x: x.start, reverse=True) + def db_xml(self): db = ElementMaker(namespace=const.DB_NS, nsmap=const.NSMAP) @@ -79,8 +88,21 @@ class Event(object): self.end = ev['dtend'] self.summary = ev['summary'] self.location = ev['location'] + self.org = None self.description = ev['description'] + def geocode(self): + addrlist = self.location.split(',') + addrfmt = "org,street,postcode,city" + adict = addrfmt.split(',') + argdict = dict(zip(adict,addrlist)) + self.org = Organization(argdict['org']) + del argdict['org'] + addr = Address(**argdict) + self.org.add_address(addr) + addr.geocode() + + def db_xml(self): db = ElementMaker(namespace=const.DB_NS, nsmap=const.NSMAP) # Build paragraphs from the description @@ -97,7 +119,7 @@ class Event(object): ), db.varlistentry( db.term("Plats"), - db.listitem(db.para(self.location)) + db.listitem(db.para(self.org.db_xml())) ), db.varlistentry( db.term("Beskrivning"), @@ -122,9 +144,11 @@ if __name__ == "__main__": uri = urlparse(uristr) events = Events(uri) events.filter(query) + events.geocode() + events.sorted('start') exml = events.db_xml() #clean_db(exml) #print(etree.tostring(cxml, pretty_print=True)) #sys.stdout.write(out.encode('utf-8')) - sys.stdout.write(etree.tostring(exml,encoding='UTF-8',pretty_print=True)) + sys.stdout.write(etree.tostring(exml,encoding='UTF-8',pretty_print=False))