]>
Commit | Line | Data |
---|---|---|
81675874 | 1 | #!/usr/bin/python |
2 | ||
3 | import tornado.web | |
4 | ||
d0d074e0 | 5 | import markdown |
81675874 | 6 | import menu |
7 | import releases | |
8 | ||
2c055a8e MT |
9 | from helpers import Item |
10 | ||
81675874 | 11 | class 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 | |
23 | class 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 | ||
37 | class 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 | ||
47 | class 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 | ||
63 | class SidebarItemModule(UIModule): | |
64 | def render(self): | |
65 | return self.render_string("modules/sidebar-item.html") | |
66 | ||
67 | ||
68 | class 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 | ||
76 | class ReleaseItemModule(UIModule): | |
77 | def render(self, item): | |
78 | return self.render_string("modules/release-item.html", item=item) | |
79 | ||
80 | ||
81 | class SidebarBannerModule(UIModule): | |
82 | def render(self, item): | |
83 | return self.render_string("modules/sidebar-banner.html", item=item) | |
84 | ||
85 | ||
86 | class BuildModule(UIModule): | |
87 | def render(self, build): | |
88 | return self.render_string("modules/builds.html", build=build) | |
d0d074e0 MT |
89 | |
90 | ||
91 | class 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) |