size: printing size of style
[treecutter.git] / xinclude / latest.py
1 #!/usr/bin/python
2 # -*- coding: utf-8 -*-
3
4 from dateutil.tz import *
5 from datetime import datetime
6 from dateutil.parser import parse
7
8 import os
9 import fnmatch
10
11 from lxml import etree
12 from lxml.builder import ElementMaker
13 import sys
14 import re
15
16 from treecutter import constants as const
17
18 class Latest(object):
19     def __init__(self, count):
20         self.count = count
21         self.events = []
22         for dirname, dirnames, filenames in os.walk('.'):
23             for filename in filenames:
24                 if fnmatch.fnmatch(filename, '*index.??.xml'):
25                     file_ = os.path.join(dirname,filename)
26                     doc = etree.parse(file_)
27                     if doc.xpath(
28             u'/db:article/db:info/db:mediaobject/db:imageobject/db:imagedata',
29                                namespaces=const.XPATH):
30                         self.events.append(Doc(doc,dirname))
31
32     def db_xml(self):
33         db = ElementMaker(namespace=const.DB_NS, nsmap=const.NSMAP)
34         doclist = db.itemizedlist(db.title(u'Latest Projects'))
35         for ev in self.events:
36             doclist.append(ev.db_xml())
37         return doclist
38
39
40 class Doc(object):
41     def __init__(self,doc,link):
42         self.pubdate = doc.xpath(u'/db:article/db:info/db:pubdate',
43                                namespaces=const.XPATH)
44         self.fn = doc.xpath(u'/db:article/db:info/db:author/db:personname/db:firstname',
45                                namespaces=const.XPATH)
46         self.ln = doc.xpath(u'/db:article/db:info/db:author/db:personname/db:surname',
47                                namespaces=const.XPATH)
48         self.title = doc.xpath(u'/db:article/db:info/db:title',
49                                namespaces=const.XPATH)
50         self.photo = doc.xpath(
51             u'/db:article/db:info/db:mediaobject/db:imageobject/db:imagedata',
52                                namespaces=const.XPATH)
53         self.link = link
54
55     def db_xml(self):
56         db = ElementMaker(namespace=const.DB_NS, nsmap=const.NSMAP)
57         lst = db.listitem(
58             db.link(db.inlinemediaobject(
59                     db.imageobject(
60                         db.imagedata(fileref=self.link+'/'+self.photo[0].attrib['fileref'],
61                                      width="198", depth="111"))),
62                     **{const.XLINK+"href": self.link}),
63             db.para("Project: "+self.title[0].text,role="project"),
64             db.para("Author: "+self.fn[0].text+" "+self.ln[0].text,role="author"),
65             db.link("Read Details",**{const.XLINK+"href": self.link})
66             )
67         return lst
68
69 if __name__ == "__main__":
70     for arg in sys.argv[1:]:
71         al = arg.split("=")
72         if al[0] == "lang":
73             lang = al[1]
74         if al[0] == "xptr":
75             argument = al[1]
76
77     latest = Latest(argument)
78     exml = latest.db_xml()
79     sys.stdout.write(etree.tostring(exml,encoding='UTF-8',pretty_print=False))