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