Enabled addition of Organization with Address from the Location field.
This information is geocoded and if found displayed.
Sorting was added to sort event objects, change from the earlier
list of event dictionaries.
Pretty printing turne off not to preformat docbook addresses.
from lxml.builder import ElementMaker
import sys
import re
from lxml.builder import ElementMaker
import sys
import re
+
+from address import Address
+from contact import Organization
from treecutter import constants as const
from treecutter import constants as const
fev.append(ev)
self.events = fev
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)
def db_xml(self):
db = ElementMaker(namespace=const.DB_NS, nsmap=const.NSMAP)
self.end = ev['dtend']
self.summary = ev['summary']
self.location = ev['location']
self.end = ev['dtend']
self.summary = ev['summary']
self.location = ev['location']
self.description = ev['description']
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
def db_xml(self):
db = ElementMaker(namespace=const.DB_NS, nsmap=const.NSMAP)
# Build paragraphs from the description
),
db.varlistentry(
db.term("Plats"),
),
db.varlistentry(
db.term("Plats"),
- db.listitem(db.para(self.location))
+ db.listitem(db.para(self.org.db_xml()))
),
db.varlistentry(
db.term("Beskrivning"),
),
db.varlistentry(
db.term("Beskrivning"),
uri = urlparse(uristr)
events = Events(uri)
events.filter(query)
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'))
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))