Skip to content

Commit

Permalink
revise for user authentication
Browse files Browse the repository at this point in the history
  • Loading branch information
xieyongliang committed Mar 11, 2023
1 parent 541d7c5 commit a32195b
Show file tree
Hide file tree
Showing 9 changed files with 166 additions and 107 deletions.
28 changes: 20 additions & 8 deletions localizations/zh_CN.json
Expand Up @@ -625,17 +625,11 @@
"Train settings": "训练设置",
"Train an hypernetwork; you must specify a directory with a set of 1:1 ratio images": "训练 hypernetwork; 必须指定一组具有 1:1 比例图像的目录",
"Hypernetwork settings": "Hypernetwork 设置",
"Sign Options": "登陆选项",
"Sign In": "登入",
"Sign Up": "注册",
"Sign Out": "登出",
"Username": "用户名",
"Password": "密码",
"Email": "电子邮箱",
"Mismatched username/password or not existed username": "用户名/密码不匹配或用户不存在",
"Signup failed, please check and retry again": "注册失败,请检查后并重试",
"Update failed, please check and retry again": "更新失败,请检查后并重试",
"Options": "选项",
"Output": "输出",
"User management (Only available for admin user)": "用户管理 (仅管理员用户可用)",
"Images S3 URI": "图像 S3 位置",
"Models S3 URI": "模型 S3 位置",
"Instance type": "实例类型",
Expand Down Expand Up @@ -754,6 +748,24 @@
"Sample CFG Scale": "采样扩散度",
"Sample Steps": "采样步数",
"Cancel": "取消",
"Invert colors if your image has white background. Change your brush width to make it thinner if you want to draw something.": "如果您的图像有白色背景,请反转颜色。 如果你想画东西,改变你的画笔宽度让它更细",
"Enable": "启用",
"Invert Input Color": "反转输入颜色",
"RGB to BGR": "RGB 转为 BGR",
"Low VRAM": "低 VRAM",
"Guess Mode": "猜测模式",
"Preprocessor": "预处理器",
"Weight": "权重",
"Guidance strength (T)": "引导强度 (T)",
"Resize Mode": "调整模式",
"Envelope (Outer Fit)": "信封(外部适配)",
"Scale to Fit (Inner Fit)": "缩放以适合 (内部适配)",
"Just Resize": "调整大小",
"Canvas Width": "画布宽度",
"Canvas Height": "画布高度",
"Create blank canvas": "创建空白画布",
"Preview annotator result": "预览标注结果",
"Hide annotator result": "隐藏标注结果",

"--------": "--------"
}
20 changes: 19 additions & 1 deletion localizations/zh_TW.json
Expand Up @@ -744,6 +744,24 @@
"Sample CFG Scale": "採樣擴散度",
"Sample Steps": "採樣步數",
"Cancel": "取消",

"Invert colors if your image has white background. Change your brush width to make it thinner if you want to draw something.": "如果您的圖像有白色背景,請反轉顏色。 如果你想畫東西,改變你的畫筆寬度讓它更細",
"Enable": "啟用",
"Invert Input Color": "反轉輸入顏色",
"RGB to BGR": "RGB 轉為 BGR",
"Low VRAM": "低 VRAM",
"Guess Mode": "猜測模式",
"Preprocessor": "預處理器",
"Weight": "權重",
"Guidance strength (T)": "引導強度 (T)",
"Resize Mode": "調整模式",
"Envelope (Outer Fit)": "信封(外部適配)",
"Scale to Fit (Inner Fit)": "縮放以適合 (內部適配)",
"Just Resize": "調整大小",
"Canvas Width": "畫布寬度",
"Canvas Height": "畫布高度",
"Create blank canvas": "創建空白畫布",
"Preview annotator result": "預覽標註結果",
"Hide annotator result": "隱藏標註結果",

"--------": "--------"
}
39 changes: 21 additions & 18 deletions modules/sd_models.py
Expand Up @@ -79,24 +79,27 @@ def modeltitle(path, shorthash):
return f'{name} [{shorthash}]', shortname

if shared.cmd_opts.pureui:
params = {
'module': 'Stable-diffusion', 'endpoint_name': sagemaker_endpoint
}
response = requests.get(url=f'{api_endpoint}/sd/models', params=params)
if response.status_code == 200:
model_list = json.loads(response.text)

for model in model_list:
h = model['hash']
filename = model['filename']
title = model['title']
short_model_name = model['model_name']
config = model['config']

if 'sd_model_checkpoint' not in shared.opts.data:
shared.opts.data['sd_model_checkpoint'] = title

checkpoints_list[title] = CheckpointInfo(filename, title, h, short_model_name, config)
if sagemaker_endpoint:
params = {
'module': 'Stable-diffusion', 'endpoint_name': sagemaker_endpoint
}
response = requests.get(url=f'{api_endpoint}/sd/models', params=params)
if response.status_code == 200:
model_list = json.loads(response.text)

for model in model_list:
h = model['hash']
filename = model['filename']
title = model['title']
short_model_name = model['model_name']
config = model['config']

if 'sd_model_checkpoint' not in shared.opts.data:
shared.opts.data['sd_model_checkpoint'] = title

checkpoints_list[title] = CheckpointInfo(filename, title, h, short_model_name, config)
else:
print(response.text)

sd_model_checkpoint = shared.opts.data['sd_model_checkpoint']
if sd_model_checkpoint and sd_model_checkpoint in checkpoints_list:
Expand Down
49 changes: 26 additions & 23 deletions modules/shared.py
Expand Up @@ -144,30 +144,31 @@
sagemaker_endpoint_component = None
sd_model_checkpoint_component = None
create_train_dreambooth_component = None
username = ''

response = requests.get(url=f'{api_endpoint}/sd/industrialmodel')
if response.status_code == 200:
industrial_model = response.text
else:
model_name = 'stable-diffusion-webui'
model_description = model_name
inputs = {
'model_algorithm': 'stable-diffusion-webui',
'model_name': model_name,
'model_description': model_description,
'model_extra': '{"visible": "false"}',
'model_samples': '',
'file_content': {
'data': [(lambda x: int(x))(x) for x in open(os.path.join(script_path, 'logo.ico'), 'rb').read()]
}
}

response = requests.get(url=f'{api_endpoint}/sd/industrialmodel')
response = requests.post(url=f'{api_endpoint}/industrialmodel', json = inputs)
if response.status_code == 200:
industrial_model = response.text
body = json.loads(response.text)
industrial_model = body['id']
else:
model_name = 'stable-diffusion-webui'
model_description = model_name
inputs = {
'model_algorithm': 'stable-diffusion-webui',
'model_name': model_name,
'model_description': model_description,
'model_extra': '{"visible": "false"}',
'model_samples': '',
'file_content': {
'data': [(lambda x: int(x))(x) for x in open(os.path.join(script_path, 'logo.ico'), 'rb').read()]
}
}

response = requests.post(url=f'{api_endpoint}/industrialmodel', json = inputs)
if response.status_code == 200:
body = json.loads(response.text)
industrial_model = body['id']
else:
print(response.text)
print(response.text)

def reload_hypernetworks():
from modules.hypernetworks import hypernetwork
Expand Down Expand Up @@ -301,7 +302,9 @@ def list_checkpoint_tiles():

def refresh_checkpoints(sagemaker_endpoint=None):
import modules.sd_models
return modules.sd_models.list_models(sagemaker_endpoint)
modules.sd_models.list_models(sagemaker_endpoint)
checkpoints = modules.sd_models.checkpoints_list
return checkpoints


def list_samplers():
Expand All @@ -320,7 +323,7 @@ def list_sagemaker_endpoints():

return sagemaker_endpoints

def refresh_sagemaker_endpoints(username=None):
def refresh_sagemaker_endpoints(username):
global industrial_model, api_endpoint, sagemaker_endpoints

sagemaker_endpoints = []
Expand Down
27 changes: 22 additions & 5 deletions modules/ui.py
Expand Up @@ -416,8 +416,8 @@ def create_toprow(is_img2img):
with gr.Column(scale=1, elem_id="roll_col"):
roll = gr.Button(value=art_symbol, elem_id="roll", visible=len(shared.artist_db.artists) > 0)
paste = gr.Button(value=paste_symbol, elem_id="paste")
save_style = gr.Button(value=save_style_symbol, elem_id="style_create")
prompt_style_apply = gr.Button(value=apply_style_symbol, elem_id="style_apply")
save_style = gr.Button(value=save_style_symbol, elem_id="style_create", visible=False)
prompt_style_apply = gr.Button(value=apply_style_symbol, elem_id="style_apply", visible=False)

token_counter = gr.HTML(value="<span></span>", elem_id=f"{id_part}_token_counter")
token_button = gr.Button(visible=False, elem_id=f"{id_part}_token_button")
Expand Down Expand Up @@ -671,6 +671,15 @@ def open_folder(f):
img2img_submit = None
extras_submit = None

def update_sagemaker_endpoint():
return gr.update(value=shared.opts.sagemaker_endpoint, choices=shared.sagemaker_endpoints)

def update_sd_model_checkpoint():
return gr.update(value=shared.opts.sd_model_checkpoint, choices=modules.sd_models.checkpoint_tiles())

def update_username():
return gr.update(value=shared.username)

def create_ui():
import modules.img2img
import modules.txt2img
Expand Down Expand Up @@ -1971,11 +1980,14 @@ def sagemaker_train_hypernetwork(
)

with gr.Blocks(analytics_enabled=False) as user_interface:
username_state = gr.Textbox(value="", elem_id="username", visible=False)
username_state.change(fn=None, inputs=[username_state], outputs=None, _js="function(username){var x=gradioApp().querySelector('#tabs').querySelectorAll('button')[5];x.style.display=(username=='admin'?'block':'none')}")

user_dataframe = gr.Dataframe(
headers=["username", "password", "options"],
headers=["Username", "Password", "Options"],
row_count=2,
col_count=(3,"fixed"),
label="Input Data",
label="User management (Only available for admin user)",
interactive=True,
visible=True,
datatype=["str","str","str"],
Expand Down Expand Up @@ -2049,9 +2061,14 @@ def save_userdata(user_dataframe, request: gr.Request):
save_userdata_btn.click(
save_userdata,
inputs=[user_dataframe],
outputs=[user_dataframe]
outputs=[user_dataframe],
_js="var if alert('Only admin user can save user data')"
)

user_interface.load(update_sagemaker_endpoint, inputs=None, outputs=[shared.sagemaker_endpoint_component])
user_interface.load(update_sd_model_checkpoint, inputs=None, outputs=[shared.sd_model_checkpoint_component])
user_interface.load(update_username, inputs=None, outputs=[username_state])

if cmd_opts.pureui:
interfaces += [
(txt2img_interface, "txt2img", "txt2img"),
Expand Down
92 changes: 46 additions & 46 deletions modules/ui_extensions.py
Expand Up @@ -91,7 +91,7 @@ def extension_table():

code += f"""
<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><input class="gr-check-radio gr-checkbox" name="enable_{html.escape(ext.name)}" type="checkbox" disabled="true" {'checked="checked"' if ext.enabled else ''}>{html.escape(ext.name)}</label></td>
<td>{remote}</td>
<td{' class="extension_status"' if ext.remote is not None else ''}>{ext_status}</td>
</tr>
Expand Down Expand Up @@ -243,8 +243,8 @@ def create_ui():
with gr.TabItem("Installed"):

with gr.Row():
apply = gr.Button(value="Apply and restart UI", variant="primary")
check = gr.Button(value="Check for updates")
apply = gr.Button(value="Apply and restart UI", variant="primary", visible=False)
check = gr.Button(value="Check for updates", visible=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)

Expand All @@ -263,48 +263,48 @@ def create_ui():
inputs=[],
outputs=[extensions_table],
)

with gr.TabItem("Available"):
with gr.Row():
refresh_available_extensions_button = gr.Button(value="Load from:", variant="primary")
available_extensions_index = gr.Text(value="https://raw.githubusercontent.com/wiki/AUTOMATIC1111/stable-diffusion-webui/Extensions-index.md", label="Extension index URL").style(container=False)
extension_to_install = gr.Text(elem_id="extension_to_install", visible=False)
install_extension_button = gr.Button(elem_id="install_extension_button", visible=False)

with gr.Row():
hide_tags = gr.CheckboxGroup(value=["ads", "localization"], label="Hide extensions with tags", choices=["script", "ads", "localization"])

install_result = gr.HTML()
available_extensions_table = gr.HTML()

refresh_available_extensions_button.click(
fn=modules.ui.wrap_gradio_call(refresh_available_extensions, extra_outputs=[gr.update(), gr.update(), gr.update()]),
inputs=[available_extensions_index, hide_tags],
outputs=[available_extensions_index, available_extensions_table, hide_tags, install_result],
)

install_extension_button.click(
fn=modules.ui.wrap_gradio_call(install_extension_from_index, extra_outputs=[gr.update(), gr.update()]),
inputs=[extension_to_install, hide_tags],
outputs=[available_extensions_table, extensions_table, install_result],
)

hide_tags.change(
fn=modules.ui.wrap_gradio_call(refresh_available_extensions_for_tags, extra_outputs=[gr.update()]),
inputs=[hide_tags],
outputs=[available_extensions_table, install_result]
)

with gr.TabItem("Install from URL"):
install_url = gr.Text(label="URL for extension's git repository")
install_dirname = gr.Text(label="Local directory name", placeholder="Leave empty for auto")
install_button = gr.Button(value="Install", variant="primary")
install_result = gr.HTML(elem_id="extension_install_result")

install_button.click(
fn=modules.ui.wrap_gradio_call(install_extension_from_url, extra_outputs=[gr.update()]),
inputs=[install_dirname, install_url],
outputs=[extensions_table, install_result],
)
if not shared.cmd_opts.pureui:
with gr.TabItem("Available"):
with gr.Row():
refresh_available_extensions_button = gr.Button(value="Load from:", variant="primary")
available_extensions_index = gr.Text(value="https://raw.githubusercontent.com/wiki/AUTOMATIC1111/stable-diffusion-webui/Extensions-index.md", label="Extension index URL").style(container=False)
extension_to_install = gr.Text(elem_id="extension_to_install", visible=False)
install_extension_button = gr.Button(elem_id="install_extension_button", visible=False)

with gr.Row():
hide_tags = gr.CheckboxGroup(value=["ads", "localization"], label="Hide extensions with tags", choices=["script", "ads", "localization"])

install_result = gr.HTML()
available_extensions_table = gr.HTML()

refresh_available_extensions_button.click(
fn=modules.ui.wrap_gradio_call(refresh_available_extensions, extra_outputs=[gr.update(), gr.update(), gr.update()]),
inputs=[available_extensions_index, hide_tags],
outputs=[available_extensions_index, available_extensions_table, hide_tags, install_result],
)

install_extension_button.click(
fn=modules.ui.wrap_gradio_call(install_extension_from_index, extra_outputs=[gr.update(), gr.update()]),
inputs=[extension_to_install, hide_tags],
outputs=[available_extensions_table, extensions_table, install_result],
)

hide_tags.change(
fn=modules.ui.wrap_gradio_call(refresh_available_extensions_for_tags, extra_outputs=[gr.update()]),
inputs=[hide_tags],
outputs=[available_extensions_table, install_result]
)

with gr.TabItem("Install from URL"):
install_url = gr.Text(label="URL for extension's git repository")
install_dirname = gr.Text(label="Local directory name", placeholder="Leave empty for auto")
install_button = gr.Button(value="Install", variant="primary")
install_result = gr.HTML(elem_id="extension_install_result")

install_button.click(
fn=modules.ui.wrap_gradio_call(install_extension_from_url, extra_outputs=[gr.update()]),
inputs=[install_dirname, install_url],
outputs=[extensions_table, install_result],
)

return ui
2 changes: 1 addition & 1 deletion requirements_versions.txt
Expand Up @@ -3,7 +3,7 @@ diffusers==0.3.0
accelerate==0.12.0
basicsr==1.4.2
gfpgan==1.3.8
gradio==3.9
gradio==3.16.2
numpy==1.23.3
Pillow==9.2.0
realesrgan==0.3.0
Expand Down
2 changes: 1 addition & 1 deletion requirements_versions.txt.cn
Expand Up @@ -4,7 +4,7 @@ diffusers==0.3.0
accelerate==0.12.0
basicsr==1.4.2
gfpgan==1.3.8
gradio==3.9
gradio==3.16.2
numpy==1.23.3
Pillow==9.2.0
realesrgan==0.3.0
Expand Down

0 comments on commit a32195b

Please sign in to comment.