11# -*- coding: utf-8 -*-
22
33import re
4- import django
54
65from django .conf import urls
7- from django .core import urlresolvers
6+ from django .http import Http404
7+ from django .utils .deprecation import MiddlewareMixin
88
9- from . conf import settings
9+ from maintenancemode . http import HttpResponseTemporaryUnavailable
1010from . import utils as maintenance
11+ from .conf import settings
1112
1213urls .handler503 = 'maintenancemode.views.temporary_unavailable'
1314urls .__all__ .append ('handler503' )
1415
1516IGNORE_URLS = tuple ([re .compile (u ) for u in settings .MAINTENANCE_IGNORE_URLS ])
1617
1718
18- class MaintenanceModeMiddleware (object ):
19+ class MaintenanceModeMiddleware (MiddlewareMixin ):
1920
2021 def process_request (self , request ):
2122 # Allow access if middleware is not activated
@@ -35,8 +36,8 @@ def process_request(self, request):
3536 return None
3637
3738 # Allow access if the user doing the request is logged in and a
38- # staff member.
39- if hasattr (request , 'user' ) and request .user .is_staff :
39+ # superuser member.
40+ if hasattr (request , 'user' ) and request .user .is_superuser :
4041 return None
4142
4243 # Check if a path is explicitly excluded from maintenance mode
@@ -45,11 +46,4 @@ def process_request(self, request):
4546 return None
4647
4748 # Otherwise show the user the 503 page
48- resolver = urlresolvers .get_resolver (None )
49-
50- if django .VERSION < (1 , 8 ):
51- callback , param_dict = resolver ._resolve_special ('503' )
52- else :
53- callback , param_dict = resolver .resolve_error_handler ('503' )
54-
55- return callback (request , ** param_dict )
49+ return HttpResponseTemporaryUnavailable ()
0 commit comments