From 42d5c6ba2cd2ff56fd8e729ecae6d8e8d646c296 Mon Sep 17 00:00:00 2001 From: Claude Paroz Date: Thu, 13 Dec 2012 14:40:39 +0100 Subject: [PATCH] Add maintenance mode in wsgi file --- common/wsgi.py | 46 ++++++++++++++++++++++++++-------------------- 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/common/wsgi.py b/common/wsgi.py index bbe7830..77819d7 100644 --- a/common/wsgi.py +++ b/common/wsgi.py @@ -1,28 +1,34 @@ """ WSGI config for epcstages project. -This module contains the WSGI application used by Django's development server -and any production WSGI deployments. It should expose a module-level variable -named ``application``. Django's ``runserver`` and ``runfcgi`` commands discover -this application via the ``WSGI_APPLICATION`` setting. - -Usually you will have the standard Django WSGI application here, but it also -might make sense to replace the whole Django WSGI application with a custom one -that later delegates to the Django one. For example, you could introduce WSGI -middleware here, or combine a Django application with an application of another -framework. - """ import os -os.environ.setdefault("DJANGO_SETTINGS_MODULE", "common.settings") +UPGRADING = False -# This application object is used by any WSGI server configured to use this -# file. This includes Django's development server, if the WSGI_APPLICATION -# setting points here. -from django.core.wsgi import get_wsgi_application -application = get_wsgi_application() -# Apply WSGI middleware here. -# from helloworld.wsgi import HelloWorldApplication -# application = HelloWorldApplication(application) +def upgrade_in_progress(environ, start_response): + response_headers = [('Content-type','text/html')] + response = """ + +

This site is in maintenance mode, please come back in some minutes.

+

Ce site est actuellement en maintenance, merci de revenir dans quelques minutes.

+ + """ + if environ['REQUEST_METHOD'] == 'GET': + status = '200 OK' + else: + status = '403 Forbidden' + start_response(status, response_headers) + return [response] + +if UPGRADING: + application = upgrade_in_progress +else: + os.environ.setdefault("DJANGO_SETTINGS_MODULE", "common.settings") + + # This application object is used by any WSGI server configured to use this + # file. This includes Django's development server, if the WSGI_APPLICATION + # setting points here. + from django.core.wsgi import get_wsgi_application + application = get_wsgi_application()