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

Merge pull request #9438 from kkthxbye-code/fix-9420

Fixes #9420: Allow script inheritance
Jeremy Stretch 3 лет назад
Родитель
Сommit
6c0b4c66c0
1 измененных файлов с 10 добавлено и 3 удалено
  1. 10 3
      netbox/extras/scripts.py

+ 10 - 3
netbox/extras/scripts.py

@@ -306,9 +306,16 @@ class BaseScript:
     @classmethod
     def _get_vars(cls):
         vars = {}
-        for name, attr in cls.__dict__.items():
-            if name not in vars and issubclass(attr.__class__, ScriptVariable):
-                vars[name] = attr
+
+        # Iterate all base classes looking for ScriptVariables
+        for base_class in inspect.getmro(cls):
+            # When object is reached there's no reason to continue
+            if base_class is object:
+                break
+
+            for name, attr in base_class.__dict__.items():
+                if name not in vars and issubclass(attr.__class__, ScriptVariable):
+                    vars[name] = attr
 
         # Order variables according to field_order
         field_order = getattr(cls.Meta, 'field_order', None)