]>
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 | |
dba657a8 MT |
8 | from web.banners import Banners |
9 | from web.elements import Box, Releases | |
10 | from web.news import News | |
879aa787 | 11 | |
dba657a8 | 12 | class Xml(object): |
879aa787 MT |
13 | def __init__(self, file): |
14 | file = "%s/pages/static/%s.xml" % (os.getcwd(), file,) | |
15 | f = open(file) | |
16 | data = f.read() | |
17 | f.close() | |
18 | ||
19 | self.xml = parseString(data).getElementsByTagName("Site")[0] | |
dba657a8 | 20 | |
879aa787 MT |
21 | def getAttribute(self, node, attr): |
22 | return node.getAttribute(attr).strip() | |
dba657a8 | 23 | |
879aa787 MT |
24 | def getText(self, node): |
25 | ret = "" | |
26 | for i in node.childNodes: | |
27 | ret += i.data | |
28 | return ret.encode("utf-8") | |
29 | ||
30 | ||
31 | class Content(Xml): | |
32 | def __init__(self, file,): | |
33 | Xml.__init__(self, file) | |
34 | ||
35 | def __call__(self, lang="en"): | |
36 | ret = "" | |
37 | for paragraphs in self.xml.getElementsByTagName("Paragraphs"): | |
38 | for paragraph in paragraphs.getElementsByTagName("Paragraph"): | |
39 | if self.getAttribute(paragraph, "news") == "1": | |
dba657a8 | 40 | news = News(int(self.getAttribute(paragraph, "count"))) |
879aa787 MT |
41 | ret += news(lang).encode("utf-8") |
42 | continue | |
43 | ||
44 | # Heading | |
45 | for heading in paragraph.getElementsByTagName("Heading"): | |
46 | if self.getAttribute(heading, "lang") == lang or \ | |
47 | not self.getAttribute(heading, "lang"): | |
48 | heading = self.getText(heading) | |
49 | break | |
50 | ||
dba657a8 | 51 | b = Box(heading) |
879aa787 MT |
52 | |
53 | # Content | |
54 | for content in paragraph.getElementsByTagName("Content"): | |
55 | if self.getAttribute(content, "lang") == lang or \ | |
56 | not self.getAttribute(content, "lang"): | |
57 | if self.getAttribute(content, "raw") == "1": | |
58 | s = self.getText(content) | |
59 | else: | |
60 | s = "<p>%s</p>" % self.getText(content) | |
61 | b.w(s) | |
62 | ||
63 | ret += b() | |
64 | return ret | |
65 | ||
66 | ||
67 | class Sidebar(Xml): | |
68 | def __init__(self, file): | |
69 | Xml.__init__(self, file) | |
70 | ||
71 | def __call__(self, lang="en"): | |
72 | ret = "" | |
73 | sidebar = self.xml.getElementsByTagName("Sidebar")[0] | |
74 | for paragraph in sidebar.getElementsByTagName("Paragraph"): | |
75 | if self.getAttribute(paragraph, "banner") == "1": | |
dba657a8 | 76 | b = Banners() |
879aa787 | 77 | ret += """<h4>%(title)s</h4><a href="%(link)s" target="_blank"> |
a206fac6 | 78 | <img class="banner" src="%(uri)s" /></a>""" % b.random() |
879aa787 | 79 | continue |
dba657a8 MT |
80 | elif self.getAttribute(paragraph, "releases") == "1": |
81 | r = Releases() | |
82 | ret += r(lang) | |
83 | continue | |
879aa787 MT |
84 | |
85 | # Heading | |
86 | for heading in paragraph.getElementsByTagName("Heading"): | |
87 | if self.getAttribute(heading, "lang") == lang or \ | |
88 | not self.getAttribute(heading, "lang"): | |
89 | heading = self.getText(heading) | |
90 | break | |
91 | ||
92 | ret += "<h4>%s</h4>" % heading | |
93 | ||
94 | # Content | |
95 | for content in paragraph.getElementsByTagName("Content"): | |
96 | if self.getAttribute(content, "lang") == lang or \ | |
97 | not self.getAttribute(content, "lang"): | |
98 | if self.getAttribute(content, "raw") == "1": | |
99 | s = self.getText(content) | |
100 | else: | |
101 | s = "<p>%s</p>" % self.getText(content) | |
102 | ret += s | |
103 | ||
104 | return ret | |
dba657a8 | 105 | |
70687568 JPT |
106 | class Javascript(Xml): |
107 | def __init__(self, file): | |
108 | Xml.__init__(self, file) | |
109 | ||
110 | def __call__(self, lang="en"): | |
111 | ret = "" | |
112 | scripts = self.xml.getElementsByTagName("Script") | |
113 | for script in scripts: | |
114 | ret += self.getText(script) | |
115 | ||
116 | return ret | |
117 | ||
118 | ||
119 | ||
dba657a8 MT |
120 | page = web.Page() |
121 | page.content = Content(page.site) | |
122 | page.sidebar = Sidebar(page.site) | |
70687568 | 123 | page.javascript = Javascript(page.site) |