]> git.ipfire.org Git - people/shoehn/ipfire.org.git/blame - www/webapp/ui_modules.py
Merge branch 'planet' into next
[people/shoehn/ipfire.org.git] / www / webapp / ui_modules.py
CommitLineData
81675874 1#!/usr/bin/python
2
3import tornado.web
4
d0d074e0 5import markdown
81675874 6import menu
7import releases
8
2c055a8e
MT
9from helpers import Item
10
81675874 11class UIModule(tornado.web.UIModule):
12 def render_string(self, *args, **kwargs):
13 kwargs.update({
14 "link" : self.handler.link,
15 })
16 return tornado.web.UIModule.render_string(self, *args, **kwargs)
17
d0d074e0
MT
18 @property
19 def user_db(self):
20 return self.handler.application.user_db
21
81675874 22
23class MenuItemModule(UIModule):
24 def render(self, item):
5a1018ab 25 if self.request.uri.endswith(item.uri):
81675874 26 item.active = True
5a1018ab
MT
27
28 if not item.uri.startswith("http://"):
29 item.uri = "/%s%s" % (self.locale.code[:2], item.uri,)
30
81675874 31 if type(item.name) == type({}):
32 item.name = item.name[self.locale.code[:2]]
5a1018ab 33
81675874 34 return self.render_string("modules/menu-item.html", item=item)
35
36
37class MenuModule(UIModule):
81675874 38 def render(self, menuclass=None):
81675874 39 if not menuclass:
40 menuclass = menu.Menu("menu.json")
d0d074e0
MT
41
42 host = self.request.host.lower().split(':')[0]
43
44 return self.render_string("modules/menu.html", menuitems=menuclass.get(host))
81675874 45
46
47class NewsItemModule(UIModule):
48 def render(self, item):
2c055a8e 49 item = Item(**item.args.copy())
81675874 50 for attr in ("subject", "content"):
51 if type(item[attr]) != type({}):
52 continue
53 item[attr] = item[attr][self.locale.code[:2]]
54
55 return self.render_string("modules/news-item.html", item=item)
56
57
58#class SidebarModule(UIModule):
59# def render(self, sidebar):
60# return self.render_string("modules/sidebar.html", items=sidebar.items)
61
62
63class SidebarItemModule(UIModule):
64 def render(self):
65 return self.render_string("modules/sidebar-item.html")
66
67
68class SidebarReleaseModule(UIModule):
69 releases = releases.Releases()
70
71 def render(self):
72 return self.render_string("modules/sidebar-release.html",
73 releases=self.releases)
74
75
76class ReleaseItemModule(UIModule):
77 def render(self, item):
78 return self.render_string("modules/release-item.html", item=item)
79
80
81class SidebarBannerModule(UIModule):
82 def render(self, item):
83 return self.render_string("modules/sidebar-banner.html", item=item)
84
85
86class BuildModule(UIModule):
87 def render(self, build):
88 return self.render_string("modules/builds.html", build=build)
d0d074e0
MT
89
90
91class PlanetEntryModule(UIModule):
92 def render(self, entry):
93 if not getattr(entry, "author", None):
94 entry.author = self.user_db.get_user_by_id(entry.author_id)
95
96 entry.markup = markdown.markdown(entry.text)
97 entry.published = entry.published.strftime("%Y-%m-%d")
98 entry.updated = entry.updated.strftime("%Y-%m-%d %H:%M")
99
100 return self.render_string("modules/planet-entry.html", entry=entry)