]>
git.ipfire.org Git - people/shoehn/ipfire.org.git/blob - www/webapp/handlers_download.py
9 from handlers_base
import *
11 class DownloadsIndexHandler(BaseHandler
):
13 self
.render("downloads-index.html", release
=self
.releases
.get_latest())
16 class DownloadsReleaseHandler(BaseHandler
):
17 def get(self
, release
):
18 release
= self
.releases
.get_by_id(release
)
20 raise tornado
.web
.HTTPError(404)
22 self
.render("downloads-item.html", item
=release
)
25 class DownloadsLatestHandler(BaseHandler
):
27 release
= self
.releases
.get_latest()
29 raise tornado
.web
.HTTPError(404)
31 self
.render("downloads-item.html", item
=release
)
34 class DownloadsOlderHandler(BaseHandler
):
36 releases
= self
.releases
.get_stable()
38 # Drop the latest release
40 releases
= releases
[1:]
42 self
.render("downloads-older.html", releases
=releases
)
45 class DownloadsDevelopmentHandler(BaseHandler
):
47 releases
= self
.releases
.get_unstable()
49 self
.render("downloads-development.html", releases
=releases
)
52 class DownloadHandler(BaseHandler
):
54 self
.render("downloads.html", release
=self
.releases
.get_latest())
57 class DownloadAllHandler(BaseHandler
):
59 self
.render("downloads-all.html",
60 releases
=self
.releases
.get_stable())
63 class DownloadDevelopmentHandler(BaseHandler
):
65 self
.render("downloads-development.html",
66 releases
=self
.releases
.get_unstable())
69 class DownloadFileHandler(BaseHandler
):
70 def get(self
, filename
):
71 self
.set_header("Pragma", "no-cache")
74 mirrors
= self
.mirrors
.get_all()
75 mirrors
= mirrors
.get_with_file(filename
)
76 mirrors
= mirrors
.get_with_state("UP")
79 raise tornado
.web
.HTTPError(404, "File not found: %s" % filename
)
81 # Find mirrors located near to the user.
82 # If we have not found any, we use all.
83 mirrors_nearby
= mirrors
.get_for_location(self
.request
.remote_ip
)
85 mirrors
= mirrors_nearby
87 mirror
= mirrors
.get_random()
89 self
.redirect(mirror
.url
+ filename
[len(mirror
.prefix
):])
91 country_code
= self
.geoip
.get_country(self
.request
.remote_ip
)
92 self
.mirrors
.db
.execute("INSERT INTO log_download(filename, mirror, country_code) VALUES(%s, %s, %s)",
93 filename
, mirror
.id, country_code
)
96 class DownloadCompatHandler(BaseHandler
):
97 def get(self
, path
, url
):
100 for filename
in self
.mirrors
.get_all_files():
101 if filename
.endswith("/%s" % url
):
106 raise tornado
.web
.HTTPError(404)
108 self
.redirect("/%s" % _filename
)
110 class DownloadSplashHandler(BaseHandler
):
112 self
.render("download-splash.html")