mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-22 20:12:00 -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):
|
||||
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)
|
||||
|
||||
@staticmethod
|
||||
def _prevent_db_write_operations():
|
||||
def _set_session_type(allow_write):
|
||||
"""
|
||||
Prevent any write-related database operations.
|
||||
|
||||
Args:
|
||||
allow_write (bool): If True, write operations will be permitted.
|
||||
"""
|
||||
with connection.cursor() as cursor:
|
||||
cursor.execute(
|
||||
'SET SESSION CHARACTERISTICS AS TRANSACTION READ ONLY;'
|
||||
)
|
||||
mode = 'READ WRITE' if allow_write else 'READ ONLY'
|
||||
cursor.execute(f'SET SESSION CHARACTERISTICS AS TRANSACTION {mode};')
|
||||
|
||||
def process_exception(self, request, exception):
|
||||
"""
|
||||
|
@ -478,6 +478,11 @@ AUTH_EXEMPT_PATHS = (
|
||||
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 = {
|
||||
'json': 'utilities.serializers.json',
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user