Merge pull request #9052 from space-nuko/temp-disable-extensions
Temporary disable extensions option
This commit is contained in:
commit
daa5a83bb7
5 changed files with 37 additions and 10 deletions
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
function extensions_apply(_, _){
|
function extensions_apply(_, _, disable_all){
|
||||||
var disable = []
|
var disable = []
|
||||||
var update = []
|
var update = []
|
||||||
|
|
||||||
|
@ -13,10 +13,10 @@ function extensions_apply(_, _){
|
||||||
|
|
||||||
restart_reload()
|
restart_reload()
|
||||||
|
|
||||||
return [JSON.stringify(disable), JSON.stringify(update)]
|
return [JSON.stringify(disable), JSON.stringify(update), disable_all]
|
||||||
}
|
}
|
||||||
|
|
||||||
function extensions_check(){
|
function extensions_check(_, _){
|
||||||
var disable = []
|
var disable = []
|
||||||
|
|
||||||
gradioApp().querySelectorAll('#extensions input[type="checkbox"]').forEach(function(x){
|
gradioApp().querySelectorAll('#extensions input[type="checkbox"]').forEach(function(x){
|
||||||
|
|
|
@ -206,6 +206,10 @@ def list_extensions(settings_file):
|
||||||
print(e, file=sys.stderr)
|
print(e, file=sys.stderr)
|
||||||
|
|
||||||
disabled_extensions = set(settings.get('disabled_extensions', []))
|
disabled_extensions = set(settings.get('disabled_extensions', []))
|
||||||
|
disable_all_extensions = settings.get('disable_all_extensions', 'none')
|
||||||
|
|
||||||
|
if disable_all_extensions != 'none':
|
||||||
|
return []
|
||||||
|
|
||||||
return [x for x in os.listdir(extensions_dir) if x not in disabled_extensions]
|
return [x for x in os.listdir(extensions_dir) if x not in disabled_extensions]
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,12 @@ if not os.path.exists(extensions_dir):
|
||||||
|
|
||||||
|
|
||||||
def active():
|
def active():
|
||||||
return [x for x in extensions if x.enabled]
|
if shared.opts.disable_all_extensions == "all":
|
||||||
|
return []
|
||||||
|
elif shared.opts.disable_all_extensions == "extra":
|
||||||
|
return [x for x in extensions if x.enabled and x.is_builtin]
|
||||||
|
else:
|
||||||
|
return [x for x in extensions if x.enabled]
|
||||||
|
|
||||||
|
|
||||||
class Extension:
|
class Extension:
|
||||||
|
@ -97,6 +102,11 @@ def list_extensions():
|
||||||
if not os.path.isdir(extensions_dir):
|
if not os.path.isdir(extensions_dir):
|
||||||
return
|
return
|
||||||
|
|
||||||
|
if shared.opts.disable_all_extensions == "all":
|
||||||
|
print("*** \"Disable all extensions\" option was set, will not load any extensions ***")
|
||||||
|
elif shared.opts.disable_all_extensions == "extra":
|
||||||
|
print("*** \"Disable all extensions\" option was set, will only load built-in extensions ***")
|
||||||
|
|
||||||
extension_paths = []
|
extension_paths = []
|
||||||
for dirname in [extensions_dir, extensions_builtin_dir]:
|
for dirname in [extensions_dir, extensions_builtin_dir]:
|
||||||
if not os.path.isdir(dirname):
|
if not os.path.isdir(dirname):
|
||||||
|
@ -112,4 +122,3 @@ def list_extensions():
|
||||||
for dirname, path, is_builtin in extension_paths:
|
for dirname, path, is_builtin in extension_paths:
|
||||||
extension = Extension(name=dirname, path=path, enabled=dirname not in shared.opts.disabled_extensions, is_builtin=is_builtin)
|
extension = Extension(name=dirname, path=path, enabled=dirname not in shared.opts.disabled_extensions, is_builtin=is_builtin)
|
||||||
extensions.append(extension)
|
extensions.append(extension)
|
||||||
|
|
||||||
|
|
|
@ -422,7 +422,8 @@ options_templates.update(options_section(('postprocessing', "Postprocessing"), {
|
||||||
}))
|
}))
|
||||||
|
|
||||||
options_templates.update(options_section((None, "Hidden options"), {
|
options_templates.update(options_section((None, "Hidden options"), {
|
||||||
"disabled_extensions": OptionInfo([], "Disable those extensions"),
|
"disabled_extensions": OptionInfo([], "Disable these extensions"),
|
||||||
|
"disable_all_extensions": OptionInfo("none", "Disable all extensions (preserves the list of disabled extensions)", gr.Radio, {"choices": ["none", "extra", "all"]}),
|
||||||
"sd_checkpoint_hash": OptionInfo("", "SHA256 hash of the current checkpoint"),
|
"sd_checkpoint_hash": OptionInfo("", "SHA256 hash of the current checkpoint"),
|
||||||
}))
|
}))
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ def check_access():
|
||||||
assert not shared.cmd_opts.disable_extension_access, "extension access disabled because of command line flags"
|
assert not shared.cmd_opts.disable_extension_access, "extension access disabled because of command line flags"
|
||||||
|
|
||||||
|
|
||||||
def apply_and_restart(disable_list, update_list):
|
def apply_and_restart(disable_list, update_list, disable_all):
|
||||||
check_access()
|
check_access()
|
||||||
|
|
||||||
disabled = json.loads(disable_list)
|
disabled = json.loads(disable_list)
|
||||||
|
@ -43,6 +43,7 @@ def apply_and_restart(disable_list, update_list):
|
||||||
print(traceback.format_exc(), file=sys.stderr)
|
print(traceback.format_exc(), file=sys.stderr)
|
||||||
|
|
||||||
shared.opts.disabled_extensions = disabled
|
shared.opts.disabled_extensions = disabled
|
||||||
|
shared.opts.disable_all_extensions = disable_all
|
||||||
shared.opts.save(shared.config_filename)
|
shared.opts.save(shared.config_filename)
|
||||||
|
|
||||||
shared.state.interrupt()
|
shared.state.interrupt()
|
||||||
|
@ -99,9 +100,13 @@ def extension_table():
|
||||||
else:
|
else:
|
||||||
ext_status = ext.status
|
ext_status = ext.status
|
||||||
|
|
||||||
|
style = ""
|
||||||
|
if shared.opts.disable_all_extensions == "extra" and not ext.is_builtin or shared.opts.disable_all_extensions == "all":
|
||||||
|
style = ' style="color: var(--primary-400)"'
|
||||||
|
|
||||||
code += f"""
|
code += f"""
|
||||||
<tr>
|
<tr>
|
||||||
<td><label><input class="gr-check-radio gr-checkbox" name="enable_{html.escape(ext.name)}" type="checkbox" {'checked="checked"' if ext.enabled else ''}>{html.escape(ext.name)}</label></td>
|
<td><label{style}><input class="gr-check-radio gr-checkbox" name="enable_{html.escape(ext.name)}" type="checkbox" {'checked="checked"' if ext.enabled else ''}>{html.escape(ext.name)}</label></td>
|
||||||
<td>{remote}</td>
|
<td>{remote}</td>
|
||||||
<td>{ext.version}</td>
|
<td>{ext.version}</td>
|
||||||
<td{' class="extension_status"' if ext.remote is not None else ''}>{ext_status}</td>
|
<td{' class="extension_status"' if ext.remote is not None else ''}>{ext_status}</td>
|
||||||
|
@ -294,16 +299,24 @@ def create_ui():
|
||||||
with gr.Row(elem_id="extensions_installed_top"):
|
with gr.Row(elem_id="extensions_installed_top"):
|
||||||
apply = gr.Button(value="Apply and restart UI", variant="primary")
|
apply = gr.Button(value="Apply and restart UI", variant="primary")
|
||||||
check = gr.Button(value="Check for updates")
|
check = gr.Button(value="Check for updates")
|
||||||
|
extensions_disable_all = gr.Radio(label="Disable all extensions", choices=["none", "extra", "all"], value=shared.opts.disable_all_extensions, elem_id="extensions_disable_all")
|
||||||
extensions_disabled_list = gr.Text(elem_id="extensions_disabled_list", visible=False).style(container=False)
|
extensions_disabled_list = gr.Text(elem_id="extensions_disabled_list", visible=False).style(container=False)
|
||||||
extensions_update_list = gr.Text(elem_id="extensions_update_list", visible=False).style(container=False)
|
extensions_update_list = gr.Text(elem_id="extensions_update_list", visible=False).style(container=False)
|
||||||
|
|
||||||
info = gr.HTML()
|
html = ""
|
||||||
|
if shared.opts.disable_all_extensions != "none":
|
||||||
|
html = """
|
||||||
|
<span style="color: var(--primary-400);">
|
||||||
|
"Disable all extensions" was set, change it to "none" to load all extensions again
|
||||||
|
</span>
|
||||||
|
"""
|
||||||
|
info = gr.HTML(html)
|
||||||
extensions_table = gr.HTML(lambda: extension_table())
|
extensions_table = gr.HTML(lambda: extension_table())
|
||||||
|
|
||||||
apply.click(
|
apply.click(
|
||||||
fn=apply_and_restart,
|
fn=apply_and_restart,
|
||||||
_js="extensions_apply",
|
_js="extensions_apply",
|
||||||
inputs=[extensions_disabled_list, extensions_update_list],
|
inputs=[extensions_disabled_list, extensions_update_list, extensions_disable_all],
|
||||||
outputs=[],
|
outputs=[],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue