]>
git.ipfire.org Git - ipfire.org.git/blob - src/web/handlers.py
5 import tornado
.httputil
10 class LangCompatHandler(base
.BaseHandler
):
12 Redirect links in the old format to current site:
14 E.g. /en/index -> /index
16 def get(self
, lang
, page
):
17 self
.redirect("/%s" % page
)
20 class IndexHandler(base
.BaseHandler
):
22 This handler displays the welcome page.
25 # Get the latest release.
26 latest_release
= self
.releases
.get_latest()
28 # Get a list of the most recent news items and put them on the page.
29 posts
= self
.backend
.blog
.get_newest(limit
=4)
31 # Cache page for 5 minutes
34 return self
.render("index.html", posts
=posts
,
35 latest_release
=latest_release
)
38 class NewsHandler(base
.BaseHandler
):
40 self
.redirect("https://blog.ipfire.org/post/%s" % post
, permanent
=True)
43 class PlanetPostHandler(base
.BaseHandler
):
45 self
.redirect("https://blog.ipfire.org/post/%s" % post
, permanent
=True)
48 class PlanetUserHandler(base
.BaseHandler
):
50 self
.redirect("https://blog.ipfire.org/authors/%s" % user
, permanent
=True)
53 class DonateHandler(base
.BaseHandler
):
55 location
= self
.get_remote_location()
58 country
= location
.country
63 amount
= self
.get_argument_int("amount", None)
64 currency
= self
.get_argument("currency", None)
65 frequency
= self
.get_argument("frequency", None)
67 # Set default currency
68 if not currency
in ("EUR", "USD"):
71 # Default to USD for the US only
75 # Set default frequency
76 if not frequency
in ("one-time", "monthly"):
77 frequency
= "one-time"
79 self
.render("donate.html", countries
=iso3166
.countries
,
80 country
=country
, amount
=amount
, currency
=currency
, frequency
=frequency
)
82 @tornado.gen
.coroutine
84 amount
= self
.get_argument("amount")
85 currency
= self
.get_argument("currency", "EUR")
86 frequency
= self
.get_argument("frequency")
91 "currency" : currency
,
93 # Is this a recurring donation?
94 "recurring" : frequency
== "monthly",
97 "email" : self
.get_argument("email"),
98 "title" : self
.get_argument("title"),
99 "first_name" : self
.get_argument("first_name"),
100 "last_name" : self
.get_argument("last_name"),
101 "company_name" : self
.get_argument("company_name", None),
102 "street1" : self
.get_argument("street1"),
103 "street2" : self
.get_argument("street2", None),
104 "post_code" : self
.get_argument("post_code"),
105 "city" : self
.get_argument("city"),
106 "state" : self
.get_argument("state", None),
107 "country_code" : self
.get_argument("country_code"),
110 # Add URLs to redirect the user back
112 "success_url" : "https://%s/donate/thank-you" % self
.request
.host
,
113 "error_url" : "https://%s/donate/error" % self
.request
.host
,
114 "back_url" : "https://%s/donate?amount=%s¤cy=%s&frequency=%s" %
115 (self
.request
.host
, amount
, currency
, frequency
),
118 # Send request to Zeiterfassung
120 response
= yield self
.backend
.zeiterfassung
.send_request(
121 "/api/v1/donations/create/ipfire-project", **args
)
124 raise # XXX handle any problems when Zeiterfassung is unreachable
126 # Redirect the user to the payment page
127 redirect_url
= response
.get("redirect_url")
129 raise tornado
.web
.HTTPError(500, "Did not receive a redirect URL")
131 self
.redirect(redirect_url
)
134 class StaticHandler(base
.BaseHandler
):
135 def initialize(self
, template
):
136 self
._template
= template
139 # Cache page for 60 minutes
140 self
.set_expires(3600)
142 self
.render("static/%s" % self
._template
)