From 1ebff23232f29ad6d9e7cbf9bf6735f4c87477c1 Mon Sep 17 00:00:00 2001 From: Alan Rominger Date: Mon, 10 Oct 2022 11:19:52 -0400 Subject: [PATCH] Do not rely on unreliable dir output and use exists query --- awx/main/middleware.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/awx/main/middleware.py b/awx/main/middleware.py index 160b9e77d3..647787e8a9 100644 --- a/awx/main/middleware.py +++ b/awx/main/middleware.py @@ -5,6 +5,7 @@ import logging import threading import time import urllib.parse +from pathlib import Path from django.conf import settings from django.contrib.auth import logout @@ -202,16 +203,17 @@ class URLModificationMiddleware(MiddlewareMixin): @memoize(ttl=20) def is_migrating(): - last_applied = MigrationRecorder(connection).migration_qs.order_by('-applied').only('name').first().name - last_number = int(last_applied.split('_', 1)[0]) - for migration_name in dir(migrations): + latest_number = 0 + latest_name = '' + for migration_path in Path(migrations.__path__[0]).glob('[0-9]*.py'): try: - migration_number = int(migration_name.split('_', 1)[0]) + migration_number = int(migration_path.name.split('_', 1)[0]) except ValueError: continue - if migration_number > last_number: - return True - return False + if migration_number > latest_number: + latest_number = migration_number + latest_name = migration_path.name[: -len('.py')] + return not MigrationRecorder(connection).migration_qs.filter(app='main', name=latest_name).exists() class MigrationRanCheckMiddleware(MiddlewareMixin):