]>
git.ipfire.org Git - ipfire.org.git/blob - src/web/handlers.py
9 from .handlers_fireinfo
import *
11 class LangCompatHandler(base
.BaseHandler
):
13 Redirect links in the old format to current site:
15 E.g. /en/index -> /index
17 def get(self
, lang
, page
):
18 self
.redirect("/%s" % page
)
21 class IndexHandler(base
.BaseHandler
):
23 This handler displays the welcome page.
26 # Get the latest release.
27 latest_release
= self
.releases
.get_latest()
29 # Get a list of the most recent news items and put them on the page.
30 posts
= self
.backend
.blog
.get_newest(limit
=4)
32 # Cache page for 5 minutes
35 return self
.render("index.html", posts
=posts
,
36 latest_release
=latest_release
)
39 class DonateHandler(base
.BaseHandler
):
41 location
= self
.get_remote_location()
44 country
= location
.country
49 amount
= self
.get_argument_int("amount", None)
50 currency
= self
.get_argument("currency", None)
51 frequency
= self
.get_argument("frequency", None)
53 # Set default currency
54 if not currency
in ("EUR", "USD"):
57 # Default to USD for the US only
61 # Set default frequency
62 if not frequency
in ("one-time", "monthly"):
63 frequency
= "one-time"
65 self
.render("donate.html", countries
=iso3166
.countries
,
66 country
=country
, amount
=amount
, currency
=currency
, frequency
=frequency
)
68 @tornado.gen
.coroutine
70 amount
= self
.get_argument("amount")
71 currency
= self
.get_argument("currency", "EUR")
72 frequency
= self
.get_argument("frequency")
77 "currency" : currency
,
79 # Is this a recurring donation?
80 "recurring" : frequency
== "monthly",
83 "email" : self
.get_argument("email"),
84 "title" : self
.get_argument("title"),
85 "first_name" : self
.get_argument("first_name"),
86 "last_name" : self
.get_argument("last_name"),
87 "company_name" : self
.get_argument("company_name", None),
88 "street1" : self
.get_argument("street1"),
89 "street2" : self
.get_argument("street2", None),
90 "post_code" : self
.get_argument("post_code"),
91 "city" : self
.get_argument("city"),
92 "state" : self
.get_argument("state", None),
93 "country_code" : self
.get_argument("country_code"),
96 # Add URLs to redirect the user back
98 "success_url" : "https://%s/donate/thank-you" % self
.request
.host
,
99 "error_url" : "https://%s/donate/error" % self
.request
.host
,
100 "back_url" : "https://%s/donate?amount=%s¤cy=%s&frequency=%s" %
101 (self
.request
.host
, amount
, currency
, frequency
),
104 # Send request to Zeiterfassung
106 response
= yield self
.backend
.zeiterfassung
.send_request(
107 "/api/v1/donations/create/ipfire-project", **args
)
110 raise # XXX handle any problems when Zeiterfassung is unreachable
112 # Redirect the user to the payment page
113 redirect_url
= response
.get("redirect_url")
115 raise tornado
.web
.HTTPError(500, "Did not receive a redirect URL")
117 self
.redirect(redirect_url
)
120 class StaticHandler(base
.BaseHandler
):
121 def initialize(self
, template
):
122 self
._template
= template
125 # Cache page for 60 minutes
126 self
.set_expires(3600)
128 self
.render("static/%s" % self
._template
)