]> git.ipfire.org Git - ipfire.org.git/blame - src/web/handlers.py
blog: Add RSS feed URL to header
[ipfire.org.git] / src / web / handlers.py
CommitLineData
81675874 1#!/usr/bin/python
2
940227cb 3#import httplib
47113f9e 4import iso3166
940227cb
MT
5#import logging
6#import markdown2
60b0917c 7import operator
81675874 8import os
940227cb
MT
9#import random
10#import re
11#import socket
12#import time
13#import tornado.database
14#import tornado.locale
2c361abc 15import tornado.gen
81675874 16import tornado.web
940227cb 17#import unicodedata
81675874 18
2cd9af74 19from handlers_accounts import *
940227cb
MT
20from handlers_admin import *
21from handlers_base import *
8e2e1261 22from handlers_boot import *
940227cb 23from handlers_download import *
66862195 24from handlers_fireinfo import *
c37ec602 25from handlers_iuse import *
940227cb 26from handlers_mirrors import *
60024cc8 27from handlers_nopaste import *
66862195 28from handlers_talk import *
d0d074e0 29
940227cb
MT
30class 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
40class 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
56class 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
108class DownloadHandler(BaseHandler):
109 def get(self):
110 release = self.releases.get_latest()
111
112 self.render("download.html", release=release)
45592df5
MT
113
114
115class StaticHandler(BaseHandler):
116 def initialize(self, template):
117 self._template = template
118
119 def get(self):
120 self.render("static/%s" % self._template)