]> git.ipfire.org Git - ipfire.org.git/blob - webapp/handlers_mirrors.py
Move everything to the root of the repository.
[ipfire.org.git] / webapp / handlers_mirrors.py
1 #!/usr/bin/python
2
3 import socket
4 import tornado.web
5
6 from handlers_base import *
7
8 class MirrorIndexHandler(BaseHandler):
9 def get(self):
10 ip_addr = self.get_argument("addr", self.request.remote_ip)
11
12 # Get a list of all mirrors.
13 all_mirrors = self.mirrors.get_all()
14
15 # Choose the preferred ones by their location.
16 preferred_mirrors = all_mirrors.get_for_location(ip_addr)
17
18 # Remove the preferred ones from the list of the rest.
19 other_mirrors = all_mirrors - preferred_mirrors
20
21 self.render("mirrors.html",
22 preferred_mirrors=preferred_mirrors, other_mirrors=other_mirrors)
23
24
25 class MirrorItemHandler(BaseHandler):
26 def get(self, id):
27 mirror = self.mirrors.get(id)
28 if not mirror:
29 raise tornado.web.HTTPError(404)
30
31 ip_addr = self.get_argument("addr", self.request.remote_ip)
32 client_location = self.geoip.get_all(ip_addr)
33
34 client_distance = mirror.distance_to(client_location, ignore_preference=True)
35 client_distance *= 111.32 # to km
36
37 self.render("mirrors-item.html", item=mirror,
38 client_distance=client_distance)
39
40
41 class MirrorHandler(BaseHandler):
42 def get(self):
43 self.redirect("mirrors/all")
44
45
46 class MirrorAllHandler(BaseHandler):
47 def get(self):
48 self.render("downloads-mirrors.html", mirrors=self.mirrors.list())
49
50
51 class MirrorDetailHandler(BaseHandler):
52 def get(self, id):
53 self.render("download-mirror-detail.html", mirror=self.mirrors.get(id))