# -*- coding: UTF-8 -*- # handle msg between js and python side import json from . import util # action list js_actions = ("open_url", "add_trigger_words", "use_preview_prompt", "dl_model_new_version") py_actions = ("open_url") # handle request from javascript # parameter: msg - msg from js as string in a hidden textbox # return: dict for result def parse_js_msg(msg): util.printD("Start parse js msg") msg_dict = json.loads(msg) # in case client side run JSON.stringify twice if (type(msg_dict) == str): msg_dict = json.loads(msg_dict) if "action" not in msg_dict.keys(): util.printD("Can not find action from js request") return action = msg_dict["action"] if not action: util.printD("Action from js request is None") return if action not in js_actions: util.printD("Unknow action: " + action) return util.printD("End parse js msg") return msg_dict # build python side msg for sending to js # parameter: content dict # return: msg as string, to fill into a hidden textbox def build_py_msg(action:str, content:dict): util.printD("Start build_msg") if not content: util.printD("Content is None") return if not action: util.printD("Action is None") return if action not in py_actions: util.printD("Unknow action: " + action) return msg = { "action" : action, "content": content } util.printD("End build_msg") return json.dumps(msg)