Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
S
Stable Diffusion Webui
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
novelai-storage
Stable Diffusion Webui
Commits
f65d0dc0
Commit
f65d0dc0
authored
Aug 20, 2023
by
AUTOMATIC1111
Committed by
GitHub
Aug 20, 2023
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #12689 from AUTOMATIC1111/patch-config-status
Patch config status handle corrupted files
parents
4a2bf65f
2c10fda3
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
127 additions
and
115 deletions
+127
-115
modules/config_states.py
modules/config_states.py
+9
-7
modules/ui_extensions.py
modules/ui_extensions.py
+118
-108
No files found.
modules/config_states.py
View file @
f65d0dc0
...
@@ -8,14 +8,12 @@ import time
...
@@ -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():
...
@@ -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
)
...
...
modules/ui_extensions.py
View file @
f65d0dc0
...
@@ -65,7 +65,7 @@ def save_config_state(name):
...
@@ -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):
...
@@ -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
:
code
=
f
"""<!-- {time.time()} -->
style_branch
=
STYLE_PRIMARY
<h2>Config Backup: {config_name}</h2>
if
current_ext
.
commit_hash
!=
ext_commit_hash
:
<div><b>Filepath:</b> {filepath}</div>
style_commit
=
STYLE_PRIMARY
<div><b>Created at:</b> {created_date}</div>
<h2>WebUI State</h2>
code
+=
f
"""
<table id="config_state_webui">
<tr>
<thead>
<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>
<tr>
<td><label{style_remote}>{remote}</label></td>
<th>URL</th>
<td><label{style_branch}>{ext_branch}</label></td>
<th>Branch</th>
<td><label{style_commit}>{commit_link}</label></td>
<th>Commit</th>
<td><label{style_commit}>{date_link}</label></td>
<th>Date</th>
</tr>
</tr>
"""
</thead>
<tbody>
code
+=
"""
<tr>
</tbody>
<td>
</table>
<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>
"""
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
:
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
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment