diff options
author | AUTOMATIC1111 <16777216c@gmail.com> | 2023-08-21 04:59:57 +0000 |
---|---|---|
committer | AUTOMATIC1111 <16777216c@gmail.com> | 2023-08-21 05:48:45 +0000 |
commit | b4d21e7113384bbb592bbd79bca06aeb9e4d640a (patch) | |
tree | b6f73a85433b4bd78e7b59a1ec745c0982269b76 /modules/options.py | |
parent | d722d6de36fe9802360232283d14a4c62e08d4af (diff) | |
download | stable-diffusion-webui-gfx803-b4d21e7113384bbb592bbd79bca06aeb9e4d640a.tar.gz stable-diffusion-webui-gfx803-b4d21e7113384bbb592bbd79bca06aeb9e4d640a.tar.bz2 stable-diffusion-webui-gfx803-b4d21e7113384bbb592bbd79bca06aeb9e4d640a.zip |
prevent API options from being changed via API
Diffstat (limited to 'modules/options.py')
-rw-r--r-- | modules/options.py | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/modules/options.py b/modules/options.py index db1fb157..41d1b672 100644 --- a/modules/options.py +++ b/modules/options.py @@ -8,7 +8,7 @@ from modules.shared_cmd_options import cmd_opts class OptionInfo:
- def __init__(self, default=None, label="", component=None, component_args=None, onchange=None, section=None, refresh=None, comment_before='', comment_after='', infotext=None):
+ def __init__(self, default=None, label="", component=None, component_args=None, onchange=None, section=None, refresh=None, comment_before='', comment_after='', infotext=None, restrict_api=False):
self.default = default
self.label = label
self.component = component
@@ -26,6 +26,9 @@ class OptionInfo: self.infotext = infotext
+ self.restrict_api = restrict_api
+ """If True, the setting will not be accessible via API"""
+
def link(self, label, url):
self.comment_before += f"[<a href='{url}' target='_blank'>{label}</a>]"
return self
@@ -71,7 +74,7 @@ options_builtin_fields = {"data_labels", "data", "restricted_opts", "typemap"} class Options:
typemap = {int: float}
- def __init__(self, data_labels, restricted_opts):
+ def __init__(self, data_labels: dict[str, OptionInfo], restricted_opts):
self.data_labels = data_labels
self.data = {k: v.default for k, v in self.data_labels.items()}
self.restricted_opts = restricted_opts
@@ -113,14 +116,18 @@ class Options: return super(Options, self).__getattribute__(item)
- def set(self, key, value):
+ def set(self, key, value, is_api=False):
"""sets an option and calls its onchange callback, returning True if the option changed and False otherwise"""
oldval = self.data.get(key, None)
if oldval == value:
return False
- if self.data_labels[key].do_not_save:
+ option = self.data_labels[key]
+ if option.do_not_save:
+ return False
+
+ if is_api and option.restrict_api:
return False
try:
@@ -128,9 +135,9 @@ class Options: except RuntimeError:
return False
- if self.data_labels[key].onchange is not None:
+ if option.onchange is not None:
try:
- self.data_labels[key].onchange()
+ option.onchange()
except Exception as e:
errors.display(e, f"changing setting {key} to {value}")
setattr(self, key, oldval)
|