Просмотр исходного кода

Clear sys.modules cache when reloading scripts

kkthxbye-code 4 лет назад
Родитель
Сommit
ae6ed97a80
1 измененных файлов с 5 добавлено и 0 удалено
  1. 5 0
      netbox/extras/scripts.py

+ 5 - 0
netbox/extras/scripts.py

@@ -3,6 +3,7 @@ import json
 import logging
 import logging
 import os
 import os
 import pkgutil
 import pkgutil
+import sys
 import traceback
 import traceback
 from collections import OrderedDict
 from collections import OrderedDict
 
 
@@ -477,6 +478,10 @@ def get_scripts(use_names=False):
     # Iterate through all modules within the reports path. These are the user-created files in which reports are
     # Iterate through all modules within the reports path. These are the user-created files in which reports are
     # defined.
     # defined.
     for importer, module_name, _ in pkgutil.iter_modules([settings.SCRIPTS_ROOT]):
     for importer, module_name, _ in pkgutil.iter_modules([settings.SCRIPTS_ROOT]):
+        # Remove cached module to ensure consistency with filesystem
+        if module_name in sys.modules:
+            del sys.modules[module_name]
+
         module = importer.find_module(module_name).load_module(module_name)
         module = importer.find_module(module_name).load_module(module_name)
         if use_names and hasattr(module, 'name'):
         if use_names and hasattr(module, 'name'):
             module_name = module.name
             module_name = module.name