mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-23 17:08:41 -06:00
Adds maintenance exempt paths (#12592)
* adds maintenance exempt paths #11233 * adds maintenance exempt paths #11233 * Rename method & remove login/logout from exempt paths --------- Co-authored-by: jeremystretch <jstretch@netboxlabs.com>
This commit is contained in:
parent
eeb15ab5d1
commit
0df6a5793a
@ -181,19 +181,23 @@ class MaintenanceModeMiddleware:
|
|||||||
|
|
||||||
def __call__(self, request):
|
def __call__(self, request):
|
||||||
if get_config().MAINTENANCE_MODE:
|
if get_config().MAINTENANCE_MODE:
|
||||||
self._prevent_db_write_operations()
|
self._set_session_type(
|
||||||
|
allow_write=request.path_info.startswith(settings.MAINTENANCE_EXEMPT_PATHS)
|
||||||
|
)
|
||||||
|
|
||||||
return self.get_response(request)
|
return self.get_response(request)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _prevent_db_write_operations():
|
def _set_session_type(allow_write):
|
||||||
"""
|
"""
|
||||||
Prevent any write-related database operations.
|
Prevent any write-related database operations.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
allow_write (bool): If True, write operations will be permitted.
|
||||||
"""
|
"""
|
||||||
with connection.cursor() as cursor:
|
with connection.cursor() as cursor:
|
||||||
cursor.execute(
|
mode = 'READ WRITE' if allow_write else 'READ ONLY'
|
||||||
'SET SESSION CHARACTERISTICS AS TRANSACTION READ ONLY;'
|
cursor.execute(f'SET SESSION CHARACTERISTICS AS TRANSACTION {mode};')
|
||||||
)
|
|
||||||
|
|
||||||
def process_exception(self, request, exception):
|
def process_exception(self, request, exception):
|
||||||
"""
|
"""
|
||||||
|
@ -478,6 +478,11 @@ AUTH_EXEMPT_PATHS = (
|
|||||||
f'/{BASE_PATH}metrics',
|
f'/{BASE_PATH}metrics',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# All URLs starting with a string listed here are exempt from maintenance mode enforcement
|
||||||
|
MAINTENANCE_EXEMPT_PATHS = (
|
||||||
|
f'/{BASE_PATH}admin/',
|
||||||
|
)
|
||||||
|
|
||||||
SERIALIZATION_MODULES = {
|
SERIALIZATION_MODULES = {
|
||||||
'json': 'utilities.serializers.json',
|
'json': 'utilities.serializers.json',
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user