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