]> git.ipfire.org Git - ipfire.org.git/blame - src/web/handlers.py
Drop news
[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 40class IndexHandler(BaseHandler):
de683d7c
MT
41 rss_url = "/news.rss"
42
940227cb
MT
43 """
44 This handler displays the welcome page.
45 """
feb02477 46 def get(self):
7771acea
MT
47 # Get the latest release.
48 latest_release = self.releases.get_latest()
60b0917c 49
7d88783f
MT
50 # Get a list of the most recent news items and put them on the page.
51 posts = self.backend.blog.get_newest(limit=5)
feb02477 52
7d88783f 53 return self.render("index.html", posts=posts,
e400e37d
MT
54 latest_release=latest_release,
55 fireinfo_country=self.fireinfo.get_random_country_penetration())
60b0917c 56
9068dba1
MT
57class GeoIPHandler(BaseHandler):
58 def get_address(self):
59 addr = self.get_argument("addr", None)
60
61 if not addr:
62 addr = self.get_remote_ip()
63
64 return addr
65
66 def get(self):
67 addr = self.get_address()
68
69 peer = self.geoip.get_all(addr)
70 if peer:
71 peer["country_name"] = self.geoip.get_country_name(peer.country)
72
5488a9f4
MT
73 mirrors = self.mirrors.get_for_location(peer)
74
75 self.render("geoip/index.html", addr=addr, peer=peer, mirrors=mirrors)
e64ce07e
MT
76
77
78class DonateHandler(BaseHandler):
79 def get(self):
47113f9e
MT
80 location = self.get_remote_location()
81
82 if location:
83 country = location.country
84 else:
85 country = None
86
87 self.render("donate.html", countries=iso3166.countries, country=country)
60b0917c 88
2c361abc
MT
89 @tornado.gen.coroutine
90 def post(self):
91 # Get form inputs
92 args = {
93 "amount" : self.get_argument("amount"),
94 "currency" : self.get_argument("currency", "EUR"),
95 "method" : self.get_argument("method", None),
96
97 # Is this a recurring donation?
98 "recurring" : self.get_argument("frequency") == "monthly",
99
450af3dc
MT
100 # Address
101 "email" : self.get_argument("email"),
102 "title" : self.get_argument("title"),
103 "first_name" : self.get_argument("first_name"),
104 "last_name" : self.get_argument("last_name"),
105 "company_name" : self.get_argument("company_name", None),
106 "street1" : self.get_argument("street1"),
107 "street2" : self.get_argument("street2", None),
108 "post_code" : self.get_argument("post_code"),
109 "city" : self.get_argument("city"),
110 "state" : self.get_argument("state", None),
111 "country_code" : self.get_argument("country_code"),
2c361abc
MT
112 }
113
114 # Send request to Zeiterfassung
115 try:
116 response = yield self.backend.zeiterfassung.send_request(
117 "/api/v1/donations/create/ipfire-project", **args)
118
119 except Exception:
120 raise # XXX handle any problems when Zeiterfassung is unreachable
121
122 # Redirect the user to the payment page
123 redirect_url = response.get("redirect_url")
124 if not redirect_url:
125 raise tornado.web.HTTPError(500, "Did not receive a redirect URL")
126
127 self.redirect(redirect_url)
128
60b0917c
MT
129
130class DownloadHandler(BaseHandler):
131 def get(self):
132 release = self.releases.get_latest()
133
134 self.render("download.html", release=release)
45592df5
MT
135
136
137class StaticHandler(BaseHandler):
138 def initialize(self, template):
139 self._template = template
140
141 def get(self):
142 self.render("static/%s" % self._template)