refactor jsonschema

pull/59/head
GeorgLegato 2023-04-25 00:24:37 +02:00
parent b0cb75399e
commit 5dde17ad39
2 changed files with 19 additions and 27 deletions

View File

@ -1,12 +1,11 @@
import math
import os
import json
from jsonschema import validate
import modules.shared as shared
import modules.sd_models
import gradio as gr
from scripts import postprocessing_upscale
from .static_variables import jsonprompt_schemafile
from .prompt_util import readJsonPrompt
import asyncio
def fix_env_Path_ffprobe():
@ -90,31 +89,28 @@ def do_upscaleImg(curImg, upscale_do, upscaler_name, upscale_by):
)
return pp.image
def validatePromptJson_throws(data):
with open(jsonprompt_schemafile, "r") as s:
schema = json.load(s)
validate(instance=data, schema=schema)
async def showGradioErrorAsync(txt, delay=1):
await asyncio.sleep(delay) # sleep for 1 second
raise gr.Error(txt)
def putPrompts(files):
try:
with open(files.name, "r") as f:
file_contents = f.read()
data = json.loads(file_contents)
validatePromptJson_throws(data)
data = readJsonPrompt(file_contents,False)
return [
gr.DataFrame.update(data["prompts"]),
gr.Textbox.update(data["negPrompt"]),
]
except Exception:
gr.Error(
"loading your prompt failed. It seems to be invalid. Your prompt table is preserved."
)
print(
"[InfiniteZoom:] Loading your prompt failed. It seems to be invalid. Your prompt table is preserved."
)
asyncio.run(
showGradioErrorAsync("Loading your prompts failed. It seems to be invalid. Your prompt table has been preserved.",5)
)
return [gr.DataFrame.update(), gr.Textbox.update()]

View File

@ -1,4 +1,3 @@
import json
import gradio as gr
from .run import create_zoom
import modules.shared as shared
@ -6,11 +5,10 @@ from webui import wrap_gradio_gpu_call
from modules.ui import create_output_panel
from .static_variables import (
default_prompt,
empty_prompt,
invalid_prompt,
available_samplers,
)
from .helpers import validatePromptJson_throws, putPrompts, clearPrompts
from .helpers import putPrompts, clearPrompts
from .prompt_util import readJsonPrompt
def on_ui_tabs():
@ -41,13 +39,11 @@ def on_ui_tabs():
# safe reading json prompt
pr = shared.opts.data.get("infzoom_defPrompt", default_prompt)
if not pr:
pr = empty_prompt
try:
jpr = json.loads(pr)
validatePromptJson_throws(jpr)
except Exception:
jpr = invalid_prompt
jpr = readJsonPrompt(pr, True)
main_common_prompt = gr.Textbox(
value=jpr["commonPrompt"], label="Common Prompt"
)
main_common_prompt = gr.Textbox(
value=jpr["commonPrompt"], label="Common Prompt"
@ -83,8 +79,8 @@ def on_ui_tabs():
exportPrompts_button.click(
None,
_js="exportPrompts",
inputs=[main_common_prompt, main_prompts, main_negative_prompt],
outputs=None,
inputs=[main_prompts, main_negative_prompt],
outputs=None
)
importPrompts_button.upload(
fn=putPrompts,