]> git.openstreetmap.org Git - osqa.git/blob - forum/middleware/request_utils.py
Closing OSQA 201, Add a "site maintenance" switch and page.
[osqa.git] / forum / middleware / request_utils.py
1 from forum.settings import MAINTAINANCE_MODE, APP_LOGO, APP_TITLE\r
2 from django.http import HttpResponseGone\r
3 from django.template.loader import render_to_string\r
4 \r
5 \r
6 class RequestUtils(object):\r
7     def __init__(self):\r
8         self.request = None\r
9 \r
10     def set_sort_method(self, sort):\r
11         self.request.session['questions_sort_method'] = sort\r
12 \r
13     def sort_method(self, default):\r
14         sort = self.request.REQUEST.get('sort', None)\r
15         if sort is None:\r
16             return self.request.session.get('questions_sort_method', default)\r
17         else:\r
18             self.set_sort_method(sort)\r
19             return sort\r
20 \r
21     def page_size(self, default):\r
22         pagesize = self.request.REQUEST.get('pagesize', None)\r
23         if pagesize is None:\r
24             return int(self.request.session.get('questions_pagesize', default))\r
25         else:\r
26             self.request.session['questions_pagesize'] = pagesize\r
27             return int(pagesize)\r
28 \r
29     def process_request(self, request):\r
30         if MAINTAINANCE_MODE.value is not None and isinstance(MAINTAINANCE_MODE.value.get('allow_ips', None), list):\r
31             ip = request.META['REMOTE_ADDR']\r
32 \r
33             if not ip in MAINTAINANCE_MODE.value['allow_ips']:\r
34                 return HttpResponseGone(render_to_string('410.html', {\r
35                     'message': MAINTAINANCE_MODE.value.get('message', ''),\r
36                     'app_logo': APP_LOGO,\r
37                     'app_title': APP_TITLE\r
38                 }))\r
39 \r
40         self.request = request\r
41         request.utils = self\r
42         return None