]> git.ipfire.org Git - ipfire.org.git/blob - src/web/handlers.py
location: Add new location subdomain
[ipfire.org.git] / src / web / handlers.py
1 #!/usr/bin/python
2
3 #import httplib
4 import iso3166
5 #import logging
6 #import markdown2
7 import operator
8 import os
9 #import random
10 #import re
11 #import socket
12 #import time
13 #import tornado.database
14 #import tornado.locale
15 import tornado.gen
16 import tornado.web
17 #import unicodedata
18
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_nopaste import *
28 from handlers_talk import *
29
30 class LangCompatHandler(BaseHandler):
31 """
32 Redirect links in the old format to current site:
33
34 E.g. /en/index -> /index
35 """
36 def get(self, lang, page):
37 self.redirect("/%s" % page)
38
39
40 class IndexHandler(BaseHandler):
41 rss_url = "/news.rss"
42
43 """
44 This handler displays the welcome page.
45 """
46 def get(self):
47 # Get the latest release.
48 latest_release = self.releases.get_latest()
49
50 # Get a list of the most recent news items and put them on the page.
51 posts = self.backend.blog.get_newest(limit=5)
52
53 return self.render("index.html", posts=posts,
54 latest_release=latest_release,
55 fireinfo_country=self.fireinfo.get_random_country_penetration())
56
57
58 class DonateHandler(BaseHandler):
59 def get(self):
60 location = self.get_remote_location()
61
62 if location:
63 country = location.country
64 else:
65 country = None
66
67 self.render("donate.html", countries=iso3166.countries, country=country)
68
69 @tornado.gen.coroutine
70 def post(self):
71 # Get form inputs
72 args = {
73 "amount" : self.get_argument("amount"),
74 "currency" : self.get_argument("currency", "EUR"),
75 "method" : self.get_argument("method", None),
76
77 # Is this a recurring donation?
78 "recurring" : self.get_argument("frequency") == "monthly",
79
80 # Address
81 "email" : self.get_argument("email"),
82 "title" : self.get_argument("title"),
83 "first_name" : self.get_argument("first_name"),
84 "last_name" : self.get_argument("last_name"),
85 "company_name" : self.get_argument("company_name", None),
86 "street1" : self.get_argument("street1"),
87 "street2" : self.get_argument("street2", None),
88 "post_code" : self.get_argument("post_code"),
89 "city" : self.get_argument("city"),
90 "state" : self.get_argument("state", None),
91 "country_code" : self.get_argument("country_code"),
92 }
93
94 # Send request to Zeiterfassung
95 try:
96 response = yield self.backend.zeiterfassung.send_request(
97 "/api/v1/donations/create/ipfire-project", **args)
98
99 except Exception:
100 raise # XXX handle any problems when Zeiterfassung is unreachable
101
102 # Redirect the user to the payment page
103 redirect_url = response.get("redirect_url")
104 if not redirect_url:
105 raise tornado.web.HTTPError(500, "Did not receive a redirect URL")
106
107 self.redirect(redirect_url)
108
109
110 class DownloadHandler(BaseHandler):
111 def get(self):
112 release = self.releases.get_latest()
113
114 self.render("download.html", release=release)
115
116
117 class StaticHandler(BaseHandler):
118 def initialize(self, template):
119 self._template = template
120
121 def get(self):
122 self.render("static/%s" % self._template)