middleware.py 795 字节
Newer Older
1 2
# ~*~ coding: utf-8 ~*~

baltery's avatar
baltery 已提交
3
import os
baltery's avatar
baltery 已提交
4
import re
5 6 7
import pytz
from django.utils import timezone
from django.utils.deprecation import MiddlewareMixin
baltery's avatar
baltery 已提交
8 9 10 11
from django.shortcuts import HttpResponse


DEMO_MODE = os.environ.get("DEMO_MODE", "")
baltery's avatar
baltery 已提交
12
SAFE_URL = r'^/users/login|^/api/applications/v1/.*'
13 14 15 16 17 18 19 20 21


class TimezoneMiddleware(MiddlewareMixin):
    def process_request(self, request):
        tzname = request.META.get('TZ')
        if tzname:
            timezone.activate(pytz.timezone(tzname))
        else:
            timezone.deactivate()
baltery's avatar
baltery 已提交
22 23 24 25


class DemoMiddleware(MiddlewareMixin):
    def process_request(self, request):
baltery's avatar
baltery 已提交
26
        if DEMO_MODE and request.method not in ["GET", "HEAD"] and not re.match(SAFE_URL, request.path):
baltery's avatar
baltery 已提交
27
                return HttpResponse("Demo mode, only get request accept", 403)