mirror of
https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
synced 2024-11-27 06:40:10 +08:00
Merge pull request #12689 from AUTOMATIC1111/patch-config-status
Patch config status handle corrupted files
This commit is contained in:
commit
f65d0dc081
@ -8,14 +8,12 @@ import time
|
|||||||
import tqdm
|
import tqdm
|
||||||
|
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from collections import OrderedDict
|
|
||||||
import git
|
import git
|
||||||
|
|
||||||
from modules import shared, extensions, errors
|
from modules import shared, extensions, errors
|
||||||
from modules.paths_internal import script_path, config_states_dir
|
from modules.paths_internal import script_path, config_states_dir
|
||||||
|
|
||||||
|
all_config_states = {}
|
||||||
all_config_states = OrderedDict()
|
|
||||||
|
|
||||||
|
|
||||||
def list_config_states():
|
def list_config_states():
|
||||||
@ -28,10 +26,14 @@ def list_config_states():
|
|||||||
for filename in os.listdir(config_states_dir):
|
for filename in os.listdir(config_states_dir):
|
||||||
if filename.endswith(".json"):
|
if filename.endswith(".json"):
|
||||||
path = os.path.join(config_states_dir, filename)
|
path = os.path.join(config_states_dir, filename)
|
||||||
with open(path, "r", encoding="utf-8") as f:
|
try:
|
||||||
j = json.load(f)
|
with open(path, "r", encoding="utf-8") as f:
|
||||||
j["filepath"] = path
|
j = json.load(f)
|
||||||
config_states.append(j)
|
assert "created_at" in j, '"created_at" does not exist'
|
||||||
|
j["filepath"] = path
|
||||||
|
config_states.append(j)
|
||||||
|
except Exception as e:
|
||||||
|
print(f'[ERROR]: Config states {path}, {e}')
|
||||||
|
|
||||||
config_states = sorted(config_states, key=lambda cs: cs["created_at"], reverse=True)
|
config_states = sorted(config_states, key=lambda cs: cs["created_at"], reverse=True)
|
||||||
|
|
||||||
|
@ -65,7 +65,7 @@ def save_config_state(name):
|
|||||||
filename = os.path.join(config_states_dir, f"{timestamp}_{name}.json")
|
filename = os.path.join(config_states_dir, f"{timestamp}_{name}.json")
|
||||||
print(f"Saving backup of webui/extension state to {filename}.")
|
print(f"Saving backup of webui/extension state to {filename}.")
|
||||||
with open(filename, "w", encoding="utf-8") as f:
|
with open(filename, "w", encoding="utf-8") as f:
|
||||||
json.dump(current_config_state, f)
|
json.dump(current_config_state, f, indent=4)
|
||||||
config_states.list_config_states()
|
config_states.list_config_states()
|
||||||
new_value = next(iter(config_states.all_config_states.keys()), "Current")
|
new_value = next(iter(config_states.all_config_states.keys()), "Current")
|
||||||
new_choices = ["Current"] + list(config_states.all_config_states.keys())
|
new_choices = ["Current"] + list(config_states.all_config_states.keys())
|
||||||
@ -200,119 +200,129 @@ def update_config_states_table(state_name):
|
|||||||
created_date = time.asctime(time.gmtime(config_state["created_at"]))
|
created_date = time.asctime(time.gmtime(config_state["created_at"]))
|
||||||
filepath = config_state.get("filepath", "<unknown>")
|
filepath = config_state.get("filepath", "<unknown>")
|
||||||
|
|
||||||
code = f"""<!-- {time.time()} -->"""
|
try:
|
||||||
|
webui_remote = config_state["webui"]["remote"] or ""
|
||||||
webui_remote = config_state["webui"]["remote"] or ""
|
webui_branch = config_state["webui"]["branch"]
|
||||||
webui_branch = config_state["webui"]["branch"]
|
webui_commit_hash = config_state["webui"]["commit_hash"] or "<unknown>"
|
||||||
webui_commit_hash = config_state["webui"]["commit_hash"] or "<unknown>"
|
webui_commit_date = config_state["webui"]["commit_date"]
|
||||||
webui_commit_date = config_state["webui"]["commit_date"]
|
if webui_commit_date:
|
||||||
if webui_commit_date:
|
webui_commit_date = time.asctime(time.gmtime(webui_commit_date))
|
||||||
webui_commit_date = time.asctime(time.gmtime(webui_commit_date))
|
|
||||||
else:
|
|
||||||
webui_commit_date = "<unknown>"
|
|
||||||
|
|
||||||
remote = f"""<a href="{html.escape(webui_remote)}" target="_blank">{html.escape(webui_remote or '')}</a>"""
|
|
||||||
commit_link = make_commit_link(webui_commit_hash, webui_remote)
|
|
||||||
date_link = make_commit_link(webui_commit_hash, webui_remote, webui_commit_date)
|
|
||||||
|
|
||||||
current_webui = config_states.get_webui_config()
|
|
||||||
|
|
||||||
style_remote = ""
|
|
||||||
style_branch = ""
|
|
||||||
style_commit = ""
|
|
||||||
if current_webui["remote"] != webui_remote:
|
|
||||||
style_remote = STYLE_PRIMARY
|
|
||||||
if current_webui["branch"] != webui_branch:
|
|
||||||
style_branch = STYLE_PRIMARY
|
|
||||||
if current_webui["commit_hash"] != webui_commit_hash:
|
|
||||||
style_commit = STYLE_PRIMARY
|
|
||||||
|
|
||||||
code += f"""<h2>Config Backup: {config_name}</h2>
|
|
||||||
<div><b>Filepath:</b> {filepath}</div>
|
|
||||||
<div><b>Created at:</b> {created_date}</div>"""
|
|
||||||
|
|
||||||
code += f"""<h2>WebUI State</h2>
|
|
||||||
<table id="config_state_webui">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>URL</th>
|
|
||||||
<th>Branch</th>
|
|
||||||
<th>Commit</th>
|
|
||||||
<th>Date</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td><label{style_remote}>{remote}</label></td>
|
|
||||||
<td><label{style_branch}>{webui_branch}</label></td>
|
|
||||||
<td><label{style_commit}>{commit_link}</label></td>
|
|
||||||
<td><label{style_commit}>{date_link}</label></td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
"""
|
|
||||||
|
|
||||||
code += """<h2>Extension State</h2>
|
|
||||||
<table id="config_state_extensions">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>Extension</th>
|
|
||||||
<th>URL</th>
|
|
||||||
<th>Branch</th>
|
|
||||||
<th>Commit</th>
|
|
||||||
<th>Date</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
"""
|
|
||||||
|
|
||||||
ext_map = {ext.name: ext for ext in extensions.extensions}
|
|
||||||
|
|
||||||
for ext_name, ext_conf in config_state["extensions"].items():
|
|
||||||
ext_remote = ext_conf["remote"] or ""
|
|
||||||
ext_branch = ext_conf["branch"] or "<unknown>"
|
|
||||||
ext_enabled = ext_conf["enabled"]
|
|
||||||
ext_commit_hash = ext_conf["commit_hash"] or "<unknown>"
|
|
||||||
ext_commit_date = ext_conf["commit_date"]
|
|
||||||
if ext_commit_date:
|
|
||||||
ext_commit_date = time.asctime(time.gmtime(ext_commit_date))
|
|
||||||
else:
|
else:
|
||||||
ext_commit_date = "<unknown>"
|
webui_commit_date = "<unknown>"
|
||||||
|
|
||||||
remote = f"""<a href="{html.escape(ext_remote)}" target="_blank">{html.escape(ext_remote or '')}</a>"""
|
remote = f"""<a href="{html.escape(webui_remote)}" target="_blank">{html.escape(webui_remote or '')}</a>"""
|
||||||
commit_link = make_commit_link(ext_commit_hash, ext_remote)
|
commit_link = make_commit_link(webui_commit_hash, webui_remote)
|
||||||
date_link = make_commit_link(ext_commit_hash, ext_remote, ext_commit_date)
|
date_link = make_commit_link(webui_commit_hash, webui_remote, webui_commit_date)
|
||||||
|
|
||||||
|
current_webui = config_states.get_webui_config()
|
||||||
|
|
||||||
style_enabled = ""
|
|
||||||
style_remote = ""
|
style_remote = ""
|
||||||
style_branch = ""
|
style_branch = ""
|
||||||
style_commit = ""
|
style_commit = ""
|
||||||
if ext_name in ext_map:
|
if current_webui["remote"] != webui_remote:
|
||||||
current_ext = ext_map[ext_name]
|
style_remote = STYLE_PRIMARY
|
||||||
current_ext.read_info_from_repo()
|
if current_webui["branch"] != webui_branch:
|
||||||
if current_ext.enabled != ext_enabled:
|
style_branch = STYLE_PRIMARY
|
||||||
style_enabled = STYLE_PRIMARY
|
if current_webui["commit_hash"] != webui_commit_hash:
|
||||||
if current_ext.remote != ext_remote:
|
style_commit = STYLE_PRIMARY
|
||||||
style_remote = STYLE_PRIMARY
|
|
||||||
if current_ext.branch != ext_branch:
|
|
||||||
style_branch = STYLE_PRIMARY
|
|
||||||
if current_ext.commit_hash != ext_commit_hash:
|
|
||||||
style_commit = STYLE_PRIMARY
|
|
||||||
|
|
||||||
code += f"""
|
code = f"""<!-- {time.time()} -->
|
||||||
<tr>
|
<h2>Config Backup: {config_name}</h2>
|
||||||
<td><label{style_enabled}><input class="gr-check-radio gr-checkbox" type="checkbox" disabled="true" {'checked="checked"' if ext_enabled else ''}>{html.escape(ext_name)}</label></td>
|
<div><b>Filepath:</b> {filepath}</div>
|
||||||
<td><label{style_remote}>{remote}</label></td>
|
<div><b>Created at:</b> {created_date}</div>
|
||||||
<td><label{style_branch}>{ext_branch}</label></td>
|
<h2>WebUI State</h2>
|
||||||
<td><label{style_commit}>{commit_link}</label></td>
|
<table id="config_state_webui">
|
||||||
<td><label{style_commit}>{date_link}</label></td>
|
<thead>
|
||||||
</tr>
|
<tr>
|
||||||
"""
|
<th>URL</th>
|
||||||
|
<th>Branch</th>
|
||||||
|
<th>Commit</th>
|
||||||
|
<th>Date</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label{style_remote}>{remote}</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<label{style_branch}>{webui_branch}</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<label{style_commit}>{commit_link}</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<label{style_commit}>{date_link}</label>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<h2>Extension State</h2>
|
||||||
|
<table id="config_state_extensions">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Extension</th>
|
||||||
|
<th>URL</th>
|
||||||
|
<th>Branch</th>
|
||||||
|
<th>Commit</th>
|
||||||
|
<th>Date</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
"""
|
||||||
|
|
||||||
code += """
|
ext_map = {ext.name: ext for ext in extensions.extensions}
|
||||||
</tbody>
|
|
||||||
</table>
|
for ext_name, ext_conf in config_state["extensions"].items():
|
||||||
"""
|
ext_remote = ext_conf["remote"] or ""
|
||||||
|
ext_branch = ext_conf["branch"] or "<unknown>"
|
||||||
|
ext_enabled = ext_conf["enabled"]
|
||||||
|
ext_commit_hash = ext_conf["commit_hash"] or "<unknown>"
|
||||||
|
ext_commit_date = ext_conf["commit_date"]
|
||||||
|
if ext_commit_date:
|
||||||
|
ext_commit_date = time.asctime(time.gmtime(ext_commit_date))
|
||||||
|
else:
|
||||||
|
ext_commit_date = "<unknown>"
|
||||||
|
|
||||||
|
remote = f"""<a href="{html.escape(ext_remote)}" target="_blank">{html.escape(ext_remote or '')}</a>"""
|
||||||
|
commit_link = make_commit_link(ext_commit_hash, ext_remote)
|
||||||
|
date_link = make_commit_link(ext_commit_hash, ext_remote, ext_commit_date)
|
||||||
|
|
||||||
|
style_enabled = ""
|
||||||
|
style_remote = ""
|
||||||
|
style_branch = ""
|
||||||
|
style_commit = ""
|
||||||
|
if ext_name in ext_map:
|
||||||
|
current_ext = ext_map[ext_name]
|
||||||
|
current_ext.read_info_from_repo()
|
||||||
|
if current_ext.enabled != ext_enabled:
|
||||||
|
style_enabled = STYLE_PRIMARY
|
||||||
|
if current_ext.remote != ext_remote:
|
||||||
|
style_remote = STYLE_PRIMARY
|
||||||
|
if current_ext.branch != ext_branch:
|
||||||
|
style_branch = STYLE_PRIMARY
|
||||||
|
if current_ext.commit_hash != ext_commit_hash:
|
||||||
|
style_commit = STYLE_PRIMARY
|
||||||
|
|
||||||
|
code += f""" <tr>
|
||||||
|
<td><label{style_enabled}><input class="gr-check-radio gr-checkbox" type="checkbox" disabled="true" {'checked="checked"' if ext_enabled else ''}>{html.escape(ext_name)}</label></td>
|
||||||
|
<td><label{style_remote}>{remote}</label></td>
|
||||||
|
<td><label{style_branch}>{ext_branch}</label></td>
|
||||||
|
<td><label{style_commit}>{commit_link}</label></td>
|
||||||
|
<td><label{style_commit}>{date_link}</label></td>
|
||||||
|
</tr>
|
||||||
|
"""
|
||||||
|
|
||||||
|
code += """ </tbody>
|
||||||
|
</table>"""
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
print(f"[ERROR]: Config states {filepath}, {e}")
|
||||||
|
code = f"""<!-- {time.time()} -->
|
||||||
|
<h2>Config Backup: {config_name}</h2>
|
||||||
|
<div><b>Filepath:</b> {filepath}</div>
|
||||||
|
<div><b>Created at:</b> {created_date}</div>
|
||||||
|
<h2>This file is corrupted</h2>"""
|
||||||
|
|
||||||
return code
|
return code
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user