MCPcopy Index your code
hub / github.com/dataease/SQLBot / ui

Function ui

backend/apps/system/api/assistant.py:115–162  ·  view source on GitHub ↗
(session: SessionDep, data: str = Form(), files: List[UploadFile] = [])

Source from the content-addressed store, hash-verified

113@router.patch('/ui', summary=f"{PLACEHOLDER_PREFIX}assistant_ui_api", description=f"{PLACEHOLDER_PREFIX}assistant_ui_api")
114@system_log(LogConfig(operation_type=OperationType.UPDATE, module=OperationModules.APPLICATION, result_id_expr="id"))
115async def ui(session: SessionDep, data: str = Form(), files: List[UploadFile] = []):
116 json_data = json.loads(data)
117 uiSchema = AssistantUiSchema(**json_data)
118 id = uiSchema.id
119 db_model = session.get(AssistantModel, id)
120 if not db_model:
121 raise ValueError(f"AssistantModel with id {id} not found")
122 configuration = db_model.configuration
123 config_obj = json.loads(configuration) if configuration else {}
124
125 ui_schema_dict = uiSchema.model_dump(exclude_none=True, exclude_unset=True)
126 if files:
127 for file in files:
128 origin_file_name = file.filename
129 file_name, flag_name = SQLBotFileUtils.split_filename_and_flag(origin_file_name)
130 file.filename = file_name
131 if flag_name == 'logo' or flag_name == 'float_icon':
132 try:
133 SQLBotFileUtils.check_file(file=file, file_types=[".jpg", ".jpeg", ".png"],
134 limit_file_size=(10 * 1024 * 1024))
135 except ValueError as e:
136 error_msg = str(e)
137 if '文件大小超过限制' in error_msg:
138 raise ValueError(f"文件大小超过限制(最大 10 M)")
139 else:
140 raise e
141 if config_obj.get(flag_name):
142 SQLBotFileUtils.delete_file(config_obj.get(flag_name))
143 file_id = await SQLBotFileUtils.upload(file)
144 ui_schema_dict[flag_name] = file_id
145 else:
146 raise ValueError(f"Unsupported file flag: {flag_name}")
147
148 for flag_name in ['logo', 'float_icon']:
149 file_val = config_obj.get(flag_name)
150 if file_val and not ui_schema_dict.get(flag_name):
151 config_obj[flag_name] = None
152 SQLBotFileUtils.delete_file(file_val)
153
154 for attr, value in ui_schema_dict.items():
155 if attr != 'id' and not attr.startswith("__"):
156 config_obj[attr] = value
157
158 db_model.configuration = json.dumps(config_obj, ensure_ascii=False)
159 session.add(db_model)
160 session.commit()
161 await clear_ui_cache(db_model.id)
162 return db_model
163
164
165@clear_cache(namespace=CacheNamespace.EMBEDDED_INFO, cacheName=CacheName.ASSISTANT_INFO, keyExpression="id")

Callers

nothing calls this directly

Calls 6

AssistantUiSchemaClass · 0.90
clear_ui_cacheFunction · 0.85
uploadMethod · 0.80
getMethod · 0.65
addMethod · 0.65
itemsMethod · 0.45

Tested by

no test coverage detected