]>
git.ipfire.org Git - ipfire.org.git/blob - src/web/handlers.py
13 #import tornado.database
14 #import tornado.locale
19 from handlers_accounts
import *
20 from handlers_admin
import *
21 from handlers_base
import *
22 from handlers_boot
import *
23 from handlers_fireinfo
import *
24 from handlers_iuse
import *
25 from handlers_mirrors
import *
26 from handlers_nopaste
import *
27 from handlers_talk
import *
29 class LangCompatHandler(BaseHandler
):
31 Redirect links in the old format to current site:
33 E.g. /en/index -> /index
35 def get(self
, lang
, page
):
36 self
.redirect("/%s" % page
)
39 class IndexHandler(BaseHandler
):
41 This handler displays the welcome page.
44 # Get the latest release.
45 latest_release
= self
.releases
.get_latest()
47 # Get a list of the most recent news items and put them on the page.
48 posts
= self
.backend
.blog
.get_newest(limit
=5)
50 return self
.render("index.html", posts
=posts
,
51 latest_release
=latest_release
,
52 fireinfo_country
=self
.fireinfo
.get_random_country_penetration())
55 class DonateHandler(BaseHandler
):
57 location
= self
.get_remote_location()
60 country
= location
.country
65 amount
= self
.get_argument_int("amount", None)
66 currency
= self
.get_argument("currency", None)
67 frequency
= self
.get_argument("frequency", None)
69 # Set default currency
70 if not currency
in ("EUR", "USD"):
73 # Default to USD for the US only
77 # Set default frequency
78 if not frequency
in ("one-time", "monthly"):
79 frequency
= "one-time"
81 self
.render("donate.html", countries
=iso3166
.countries
,
82 country
=country
, amount
=amount
, currency
=currency
, frequency
=frequency
)
84 @tornado.gen
.coroutine
86 amount
= self
.get_argument("amount")
87 currency
= self
.get_argument("currency", "EUR")
88 frequency
= self
.get_argument("frequency")
93 "currency" : currency
,
95 # Is this a recurring donation?
96 "recurring" : frequency
== "monthly",
99 "email" : self
.get_argument("email"),
100 "title" : self
.get_argument("title"),
101 "first_name" : self
.get_argument("first_name"),
102 "last_name" : self
.get_argument("last_name"),
103 "company_name" : self
.get_argument("company_name", None),
104 "street1" : self
.get_argument("street1"),
105 "street2" : self
.get_argument("street2", None),
106 "post_code" : self
.get_argument("post_code"),
107 "city" : self
.get_argument("city"),
108 "state" : self
.get_argument("state", None),
109 "country_code" : self
.get_argument("country_code"),
112 # Add URLs to redirect the user back
114 "success_url" : "https://%s/donate/thank-you" % self
.request
.host
,
115 "error_url" : "https://%s/donate/error" % self
.request
.host
,
116 "back_url" : "https://%s/donate?amount=%s¤cy=%s&frequency=%s" %
117 (self
.request
.host
, amount
, currency
, frequency
),
120 # Send request to Zeiterfassung
122 response
= yield self
.backend
.zeiterfassung
.send_request(
123 "/api/v1/donations/create/ipfire-project", **args
)
126 raise # XXX handle any problems when Zeiterfassung is unreachable
128 # Redirect the user to the payment page
129 redirect_url
= response
.get("redirect_url")
131 raise tornado
.web
.HTTPError(500, "Did not receive a redirect URL")
133 self
.redirect(redirect_url
)
136 class DownloadHandler(BaseHandler
):
138 release
= self
.releases
.get_latest()
140 self
.render("download.html", release
=release
)
143 class StaticHandler(BaseHandler
):
144 def initialize(self
, template
):
145 self
._template
= template
148 self
.render("static/%s" % self
._template
)