Selaa lähdekoodia

Init storage at class level of BaseScript instead of in findsource function (#20575)

bctiemann 4 kuukautta sitten
vanhempi
commit
9cb2c78e34
1 muutettua tiedostoa jossa 4 lisäystä ja 2 poistoa
  1. 4 2
      netbox/extras/scripts.py

+ 4 - 2
netbox/extras/scripts.py

@@ -329,6 +329,9 @@ class BaseScript:
         # Declare the placeholder for the current request
         self.request = None
 
+        # Initiate the storage backend (local, S3, etc) as a class attr
+        self.storage = storages.create_storage(storages.backends["scripts"])
+
         # Compile test methods and initialize results skeleton
         for method in dir(self):
             if method.startswith('test_') and callable(getattr(self, method)):
@@ -394,8 +397,7 @@ class BaseScript:
         return inspect.getfile(self.__class__)
 
     def findsource(self, object):
-        storage = storages.create_storage(storages.backends["scripts"])
-        with storage.open(os.path.basename(self.filename), 'r') as f:
+        with self.storage.open(os.path.basename(self.filename), 'r') as f:
             data = f.read()
 
         # Break the source code into lines