]> git.ipfire.org Git - people/shoehn/ipfire.org.git/blame - www/webapp/handlers_download.py
Update to bootstrap 2.1.
[people/shoehn/ipfire.org.git] / www / webapp / handlers_download.py
CommitLineData
940227cb
MT
1#!/usr/bin/python
2
54af860e 3import logging
940227cb 4import random
940227cb
MT
5import tornado.web
6
54af860e
MT
7import backend
8
940227cb
MT
9from handlers_base import *
10
11class DownloadsIndexHandler(BaseHandler):
12 def get(self):
13 self.render("downloads-index.html", release=self.releases.get_latest())
14
15
16class DownloadsReleaseHandler(BaseHandler):
17 def get(self, release):
18 release = self.releases.get_by_id(release)
19 if not release:
20 raise tornado.web.HTTPError(404)
21
22 self.render("downloads-item.html", item=release)
23
24
25class DownloadsLatestHandler(BaseHandler):
26 def get(self):
27 release = self.releases.get_latest()
28 if not release:
29 raise tornado.web.HTTPError(404)
30
31 self.render("downloads-item.html", item=release)
32
33
34class DownloadsOlderHandler(BaseHandler):
35 def get(self):
36 releases = self.releases.get_stable()
37
38 # Drop the latest release
39 if releases:
40 releases = releases[1:]
41
42 self.render("downloads-older.html", releases=releases)
43
44
45class DownloadsDevelopmentHandler(BaseHandler):
46 def get(self):
47 releases = self.releases.get_unstable()
48
49 self.render("downloads-development.html", releases=releases)
50
51
52class DownloadHandler(BaseHandler):
53 def get(self):
54 self.render("downloads.html", release=self.releases.get_latest())
55
56
57class DownloadAllHandler(BaseHandler):
58 def get(self):
59 self.render("downloads-all.html",
60 releases=self.releases.get_stable())
61
62
63class DownloadDevelopmentHandler(BaseHandler):
64 def get(self):
65 self.render("downloads-development.html",
66 releases=self.releases.get_unstable())
67
68
69class DownloadFileHandler(BaseHandler):
122c9026 70 def head(self, filename):
54af860e 71 self.set_header("Pragma", "no-cache")
54af860e 72
0673d1b0
MT
73 # Get all mirrors...
74 mirrors = self.mirrors.get_all()
75 mirrors = mirrors.get_with_file(filename)
76 mirrors = mirrors.get_with_state("UP")
54af860e
MT
77
78 if not mirrors:
79 raise tornado.web.HTTPError(404, "File not found: %s" % filename)
940227cb 80
0673d1b0
MT
81 # Find mirrors located near to the user.
82 # If we have not found any, we use all.
554f410f
MT
83 mirrors_nearby = mirrors.get_for_location(self.request.remote_ip)
84 if mirrors_nearby:
85 mirrors = mirrors_nearby
0673d1b0
MT
86
87 mirror = mirrors.get_random()
940227cb 88
54af860e
MT
89 self.redirect(mirror.url + filename[len(mirror.prefix):])
90
122c9026
MT
91 def get(self, filename):
92 return self.head(filename)
93
94 # Record the downlaod.
370923aa 95 country_code = self.geoip.get_country(self.request.remote_ip)
54af860e
MT
96 self.mirrors.db.execute("INSERT INTO log_download(filename, mirror, country_code) VALUES(%s, %s, %s)",
97 filename, mirror.id, country_code)
edd297c4
MT
98
99
100class DownloadCompatHandler(BaseHandler):
101 def get(self, path, url):
102 _filename = None
103
104 for filename in self.mirrors.get_all_files():
105 if filename.endswith("/%s" % url):
106 _filename = filename
107 break
108
109 if not _filename:
110 raise tornado.web.HTTPError(404)
111
112 self.redirect("/%s" % _filename)
113
60024cc8
MT
114class DownloadSplashHandler(BaseHandler):
115 def get(self):
116 self.render("download-splash.html")