Proposed option for #13795, adding module option to hide scripts from user display

This commit is contained in:
Ryan Rawdon 2023-09-18 03:47:53 -04:00
parent 2dfbd72f10
commit df71b02e88
2 changed files with 4 additions and 2 deletions

View File

@ -42,7 +42,7 @@ Defining script variables is optional: You may create a script with only a `run(
Any output generated by the script during its execution will be displayed under the "output" tab in the UI. Any output generated by the script during its execution will be displayed under the "output" tab in the UI.
By default, scripts within a module are ordered alphabetically in the scripts list page. To return scripts in a specific order, you can define the `script_order` variable at the end of your module. The `script_order` variable is a tuple which contains each Script class in the desired order. Any scripts that are omitted from this list will be listed last. By default, scripts within a module are ordered alphabetically in the scripts list page. To return scripts in a specific order, you can define the `script_order` variable at the end of your module. The `script_order` variable is a tuple which contains each Script class in the desired order. Any scripts that are omitted from this list will be listed last. To omit scripts from display entirely, define the `script_hide` variable at the end of your module. Scripts listed in this tuple will be ommitted from the unordered script listing.
```python ```python
from extras.scripts import Script from extras.scripts import Script
@ -54,6 +54,7 @@ class AnotherCustomScript(Script):
... ...
script_order = (MyCustomScript, AnotherCustomScript) script_order = (MyCustomScript, AnotherCustomScript)
script_hide = (MyHiddenScript,)
``` ```
## Module Attributes ## Module Attributes

View File

@ -67,11 +67,12 @@ class ScriptModule(PythonModuleMixin, JobsMixin, ManagedFile):
scripts = {} scripts = {}
ordered = getattr(module, 'script_order', []) ordered = getattr(module, 'script_order', [])
hide = getattr(module, 'script_hide', [])
for cls in ordered: for cls in ordered:
scripts[_get_name(cls)] = cls scripts[_get_name(cls)] = cls
for name, cls in inspect.getmembers(module, is_script): for name, cls in inspect.getmembers(module, is_script):
if cls not in ordered: if cls not in ordered and cls not in hide:
scripts[_get_name(cls)] = cls scripts[_get_name(cls)] = cls
return scripts return scripts