]>
Commit | Line | Data |
---|---|---|
879aa787 MT |
1 | #!/usr/bin/python |
2 | # -*- coding: utf-8 -*- | |
3 | ||
4 | import os | |
5 | from xml.dom.minidom import parseString | |
6 | ||
7 | import web | |
8 | ||
9 | class Xml: | |
10 | def __init__(self, file): | |
11 | file = "%s/pages/static/%s.xml" % (os.getcwd(), file,) | |
12 | f = open(file) | |
13 | data = f.read() | |
14 | f.close() | |
15 | ||
16 | self.xml = parseString(data).getElementsByTagName("Site")[0] | |
17 | ||
18 | def getAttribute(self, node, attr): | |
19 | return node.getAttribute(attr).strip() | |
20 | ||
21 | def getText(self, node): | |
22 | ret = "" | |
23 | for i in node.childNodes: | |
24 | ret += i.data | |
25 | return ret.encode("utf-8") | |
26 | ||
27 | ||
28 | class Content(Xml): | |
29 | def __init__(self, file,): | |
30 | Xml.__init__(self, file) | |
31 | ||
32 | def __call__(self, lang="en"): | |
33 | ret = "" | |
34 | for paragraphs in self.xml.getElementsByTagName("Paragraphs"): | |
35 | for paragraph in paragraphs.getElementsByTagName("Paragraph"): | |
36 | if self.getAttribute(paragraph, "news") == "1": | |
37 | news = web.News(int(self.getAttribute(paragraph, "count"))) | |
38 | ret += news(lang).encode("utf-8") | |
39 | continue | |
40 | ||
41 | # Heading | |
42 | for heading in paragraph.getElementsByTagName("Heading"): | |
43 | if self.getAttribute(heading, "lang") == lang or \ | |
44 | not self.getAttribute(heading, "lang"): | |
45 | heading = self.getText(heading) | |
46 | break | |
47 | ||
48 | b = web.Box(heading) | |
49 | ||
50 | # Content | |
51 | for content in paragraph.getElementsByTagName("Content"): | |
52 | if self.getAttribute(content, "lang") == lang or \ | |
53 | not self.getAttribute(content, "lang"): | |
54 | if self.getAttribute(content, "raw") == "1": | |
55 | s = self.getText(content) | |
56 | else: | |
57 | s = "<p>%s</p>" % self.getText(content) | |
58 | b.w(s) | |
59 | ||
60 | ret += b() | |
61 | return ret | |
62 | ||
63 | ||
64 | class Sidebar(Xml): | |
65 | def __init__(self, file): | |
66 | Xml.__init__(self, file) | |
67 | ||
68 | def __call__(self, lang="en"): | |
69 | ret = "" | |
70 | sidebar = self.xml.getElementsByTagName("Sidebar")[0] | |
71 | for paragraph in sidebar.getElementsByTagName("Paragraph"): | |
72 | if self.getAttribute(paragraph, "banner") == "1": | |
73 | b = web.Banners() | |
74 | ret += """<h4>%(title)s</h4><a href="%(link)s" target="_blank"> | |
a206fac6 | 75 | <img class="banner" src="%(uri)s" /></a>""" % b.random() |
879aa787 MT |
76 | continue |
77 | ||
78 | # Heading | |
79 | for heading in paragraph.getElementsByTagName("Heading"): | |
80 | if self.getAttribute(heading, "lang") == lang or \ | |
81 | not self.getAttribute(heading, "lang"): | |
82 | heading = self.getText(heading) | |
83 | break | |
84 | ||
85 | ret += "<h4>%s</h4>" % heading | |
86 | ||
87 | # Content | |
88 | for content in paragraph.getElementsByTagName("Content"): | |
89 | if self.getAttribute(content, "lang") == lang or \ | |
90 | not self.getAttribute(content, "lang"): | |
91 | if self.getAttribute(content, "raw") == "1": | |
92 | s = self.getText(content) | |
93 | else: | |
94 | s = "<p>%s</p>" % self.getText(content) | |
95 | ret += s | |
96 | ||
97 | return ret |