]>
git.ipfire.org Git - people/shoehn/ipfire.org.git/blob - webapp/handlers.py
12 #import tornado.database
13 #import tornado.locale
19 from handlers_accounts
import *
20 from handlers_admin
import *
21 from handlers_base
import *
22 from handlers_boot
import *
23 from handlers_download
import *
24 from handlers_fireinfo
import *
25 from handlers_iuse
import *
26 from handlers_mirrors
import *
27 from handlers_news
import *
28 from handlers_nopaste
import *
29 from handlers_planet
import *
30 from handlers_rss
import *
31 from handlers_talk
import *
32 from handlers_tracker
import *
33 from handlers_wishlist
import *
35 class RootHandler(BaseHandler
):
37 This handler redirects any request directly to /.
39 It can be used to be compatible with some ancient index urls.
45 class LangCompatHandler(BaseHandler
):
47 Redirect links in the old format to current site:
49 E.g. /en/index -> /index
51 def get(self
, lang
, page
):
52 self
.redirect("/%s" % page
)
55 class IndexHandler(BaseHandler
):
59 This handler displays the welcome page.
62 # Get the latest release.
63 latest_release
= self
.releases
.get_latest()
65 # Get a list of the most recent news items and put them on the page.
66 latest_news
= self
.get_latest_news()
68 # Interesting items from the wishlist.
69 hottest_wish
= self
.wishlist
.get_hottest_wish()
71 return self
.render("index.html", latest_news
=latest_news
,
72 latest_release
=latest_release
, hottest_wish
=hottest_wish
)
74 def get_latest_news(self
, count
=5):
77 for news
in self
.news
.get_latest(limit
=count
):
78 latest_news
.append(("news", news
))
80 for post
in self
.planet
.get_entries(limit
=count
):
81 latest_news
.append(("planet", post
))
83 latest_news
.sort(key
=operator
.itemgetter(1), reverse
=True)
85 return latest_news
[:count
]
88 class StaticHandler(BaseHandler
):
90 This handler shows the files that are in plain html format.
93 def static_path(self
):
94 return os
.path
.join(self
.application
.settings
["template_path"], "static")
97 def static_files(self
):
98 for dir, subdirs
, files
in os
.walk(self
.static_path
):
99 dir = dir[len(self
.static_path
) + 1:]
101 if not file.endswith(".html"):
103 yield os
.path
.join(dir, file)
105 def get(self
, name
=None):
106 name
= "%s.html" % name
108 if not name
in self
.static_files
:
109 raise tornado
.web
.HTTPError(404)
111 self
.render("static/%s" % name
, lang
=self
.locale
.code
[:2])
114 class GeoIPHandler(BaseHandler
):
115 def get_address(self
):
116 addr
= self
.get_argument("addr", None)
119 addr
= self
.get_remote_ip()
124 addr
= self
.get_address()
126 peer
= self
.geoip
.get_all(addr
)
128 peer
["country_name"] = self
.geoip
.get_country_name(peer
.country
)
130 mirrors
= self
.mirrors
.get_for_location(peer
)
132 self
.render("geoip/index.html", addr
=addr
, peer
=peer
, mirrors
=mirrors
)
135 class DonateHandler(BaseHandler
):
137 reason_for_transfer
= self
.get_argument("reason_for_transfer", None)
139 # Interesting items from the wishlist.
140 wishlist_items
= self
.wishlist
.get_hot_wishes()
142 self
.render("donate.html", wishlist_items
=wishlist_items
,
143 reason_for_transfer
=reason_for_transfer
)
146 class DownloadHandler(BaseHandler
):
148 release
= self
.releases
.get_latest()
150 self
.render("download.html", release
=release
)