# HG changeset patch # User Sverre Rabbelier # Date 1252711212 -7200 # Node ID 395cff83dc833fc5ca74f5f372eb79551d8e3282 # Parent bf17c6a843dda8389a4fd03e10b724a4f27c2d58 Enable the new middleware and empty the view decorator The view decorator should be removed entirely in a later commit. diff -r bf17c6a843dd -r 395cff83dc83 app/settings.py --- a/app/settings.py Sat Sep 12 01:19:23 2009 +0200 +++ b/app/settings.py Sat Sep 12 01:20:12 2009 +0200 @@ -85,8 +85,21 @@ # 'django.template.loaders.eggs.load_template_source', ) +# The order of the middleware is as follows because: +# - The ValueStore middleware should be before any other middleware +# so that the value store is available to it. +# - The ExceptionHandler should be the outermost handler (after the +# ValueStore) so as to catch as many errors as possible. +# - The Profile middleware should be as outmost as possible, so that +# as many function calls as possible, but it cannot be before the +# ExceptionHandler (so as to catch exceptions thrown by it). +# - The MaintenanceMiddleware should be after the Profiler, since we +# do want it's actions profiled. MIDDLEWARE_CLASSES = ( + 'soc.middleware.value_store.ValueStoreMiddleware', + 'soc.middleware.exception_handler.ExceptionHandlerMiddleware', 'app_profiler.app_profiler.ProfileMiddleware', + 'soc.middleware.maintenance.MaintenanceMiddleware', # 'django.middleware.common.CommonMiddleware', # 'django.contrib.sessions.middleware.SessionMiddleware', # 'django.contrib.auth.middleware.AuthenticationMiddleware', diff -r bf17c6a843dd -r 395cff83dc83 app/soc/views/helper/decorators.py --- a/app/soc/views/helper/decorators.py Sat Sep 12 01:19:23 2009 +0200 +++ b/app/soc/views/helper/decorators.py Sat Sep 12 01:20:12 2009 +0200 @@ -27,23 +27,13 @@ from functools import wraps -from google.appengine.runtime import DeadlineExceededError -from google.appengine.runtime.apiproxy_errors import CapabilityDisabledError - from django import http from django.utils.translation import ugettext from soc.logic import dicts -from soc.modules import callback from soc.views.helper import responses -DEF_DOWN_FOR_MAINTENANCE_MSG = ugettext("Down for maintenance") -DEF_IN_UNEXPECTED_MAINTENANCE_MSG = ugettext( - "Down for unexpected maintenance.") - - - class Error(Exception): """Base class for all exceptions raised by this module. """ @@ -51,75 +41,16 @@ pass -def maintenance(request): - """Returns a 'down for maintenance' view. - """ - - context = responses.getUniversalContext(request) - context['page_name'] = ugettext('Maintenance') - - notice = context.pop('site_notice') - - if not notice: - context['body_content'] = DEF_IN_UNEXPECTED_MAINTENANCE_MSG - else: - context['body_content'] = notice - - context['header_title'] = DEF_DOWN_FOR_MAINTENANCE_MSG - context['sidebar_menu_items'] = [ - {'heading': DEF_DOWN_FOR_MAINTENANCE_MSG, - 'group': ''}, - ] - - template = 'soc/base.html' - - return responses.respond(request, template, context=context) - - def view(func): """Decorator that insists that exceptions are handled by view. """ - from soc.views import out_of_band - @wraps(func) def view_wrapper(request, *args, **kwds): """View decorator wrapper method. """ - core = callback.getCore() - core.startNewRequest(request) - - def view_wrapper_helper(): - """View wrapper helper that does all the work. - """ - - context = responses.getUniversalContext(request) - - try: - if not context['is_admin'] and context['in_maintenance']: - return maintenance(request) - - return func(request, *args, **kwds) - except CapabilityDisabledError, exception: - logging.exception(exception) - # assume the site is in maintenance if we get CDE - return maintenance(request) - except DeadlineExceededError, exception: - template = 'soc/deadline_exceeded.html' - except MemoryError, exception: - template = 'soc/memory_error.html' - except AssertionError, exception: - template = 'soc/assertion_error.html' - except out_of_band.Error, error: - return responses.errorResponse(error, request) - - logging.exception(exception) - return responses.respond(request, template, context=context) - - result = view_wrapper_helper() - core.endRequest(request) - return result + return func(request, *args, **kwds) return view_wrapper