]>
Commit | Line | Data |
---|---|---|
81675874 | 1 | #!/usr/bin/python |
2 | ||
d0d074e0 | 3 | import markdown |
feb02477 | 4 | import tornado.web |
81675874 | 5 | |
feb02477 | 6 | from tornado.database import Row |
2c055a8e | 7 | |
81675874 | 8 | class 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 | |
20 | class 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 | ||
34 | class 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 | ||
42 | class 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 | ||
58 | class SidebarItemModule(UIModule): | |
59 | def render(self): | |
60 | return self.render_string("modules/sidebar-item.html") | |
61 | ||
62 | ||
63 | class 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 | ||
69 | class ReleaseItemModule(UIModule): | |
70 | def render(self, item): | |
71 | return self.render_string("modules/release-item.html", item=item) | |
72 | ||
73 | ||
74 | class SidebarBannerModule(UIModule): | |
75 | def render(self, item): | |
76 | return self.render_string("modules/sidebar-banner.html", item=item) | |
77 | ||
78 | ||
79 | class BuildModule(UIModule): | |
80 | def render(self, build): | |
81 | return self.render_string("modules/builds.html", build=build) | |
d0d074e0 MT |
82 | |
83 | ||
84 | class 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) |