]> git.ipfire.org Git - ipfire.org.git/blame - www/pages/static/__init__.py
Added pxe site.
[ipfire.org.git] / www / pages / static / __init__.py
CommitLineData
879aa787
MT
1#!/usr/bin/python
2# -*- coding: utf-8 -*-
3
4import os
5from xml.dom.minidom import parseString
6
7import web
8
9class 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
28class 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
64class 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