From 8ad16ceb9caae25f984ec897fdeb4f3171955bc6 Mon Sep 17 00:00:00 2001
From: Oliver Walters <oliver.henry.walters@gmail.com>
Date: Sun, 25 Apr 2021 11:07:57 +1000
Subject: [PATCH] Refactorin'

---
 InvenTree/InvenTree/ready.py | 38 ++++++++++++++++++++++++------------
 1 file changed, 26 insertions(+), 12 deletions(-)

diff --git a/InvenTree/InvenTree/ready.py b/InvenTree/InvenTree/ready.py
index 7d4f2d4eb8..b03dc90bba 100644
--- a/InvenTree/InvenTree/ready.py
+++ b/InvenTree/InvenTree/ready.py
@@ -5,20 +5,34 @@ def canAppAccessDatabase():
     Returns True if the apps.py file can access database records.
 
     There are some circumstances where we don't want the ready function in apps.py
-    to touch the database:
-
-    - "flush" command
-    - "loaddata" command
-    - "migrate" command
+    to touch the database
     """
 
-    if 'flush' in sys.argv:
-        return False
-    
-    if 'loaddata' in sys.argv:
-        return False
+    # If any of the following management commands are being executed,
+    # prevent custom "on load" code from running!
+    excluded_commands = [
+        'flush',
+        'loaddata',
+        'dumpdata',
+        'makemirations',
+        'migrate',
+        'check',
+        'dbbackup',
+        'mediabackup',
+        'dbrestore',
+        'mediarestore',
+        'shell',
+        'createsuperuser',
+        'wait_for_db',
+        'prerender',
+        'collectstatic',
+        'makemessages',
+        'compilemessages',
+        'test',
+    ]
 
-    if 'migrate' in sys.argv:
-        return False
+    for cmd in excluded_commands:
+        if cmd in sys.argv:
+            return False
 
     return True