Wendong-Fan commited on
Commit
6d73180
·
2 Parent(s): 63e3fc9 fe92ac4

Merge branch 'main' of https://github.com/Aaron617/owl into main

Browse files
Files changed (1) hide show
  1. owl/app.py +118 -6
owl/app.py CHANGED
@@ -243,6 +243,67 @@ def add_custom_env_var(name, value, var_type):
243
  return f"✅ 已添加环境变量 {name}", ENV_GROUPS["自定义环境变量"]
244
 
245
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
246
  def terminate_process():
247
  """终止当前运行的进程"""
248
  global current_process
@@ -583,12 +644,63 @@ def create_ui():
583
  visible=len(ENV_GROUPS["自定义环境变量"]) > 0,
584
  )
585
 
586
- # 添加环境变量按钮点击事件
587
- add_var_button.click(
588
- fn=add_custom_env_var,
589
- inputs=[new_var_name, new_var_value, new_var_type],
590
- outputs=[add_var_status, custom_vars_list],
591
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
592
 
593
  # 现有环境变量配置
594
  for group_name, vars in ENV_GROUPS.items():
 
243
  return f"✅ 已添加环境变量 {name}", ENV_GROUPS["自定义环境变量"]
244
 
245
 
246
+ def update_custom_env_var(name, value, var_type):
247
+ """更改自定义环境变量"""
248
+ if not name:
249
+ return "❌ 环境变量名不能为空", None
250
+
251
+ # 检查环境变量是否存在于自定义环境变量组中
252
+ found = False
253
+ for i, var in enumerate(ENV_GROUPS["自定义环境变量"]):
254
+ if var["name"] == name:
255
+ # 更新类型
256
+ ENV_GROUPS["自定义环境变量"][i]["type"] = var_type
257
+ found = True
258
+ break
259
+
260
+ if not found:
261
+ return f"❌ 自定义环境变量 {name} 不存在", None
262
+
263
+ # 保存环境变量值
264
+ env_vars = {name: value}
265
+ save_env_vars(env_vars)
266
+
267
+ # 返回成功消息和更新后的环境变量组
268
+ return f"✅ 已更新环境变量 {name}", ENV_GROUPS["自定义环境变量"]
269
+
270
+
271
+ def delete_custom_env_var(name):
272
+ """删除自定义环境变量"""
273
+ if not name:
274
+ return "❌ 环境变量名不能为空", None
275
+
276
+ # 检查环境变量是否存在于自定义环境变量组中
277
+ found = False
278
+ for i, var in enumerate(ENV_GROUPS["自定义环境变量"]):
279
+ if var["name"] == name:
280
+ # 从自定义环境变量组中删除
281
+ del ENV_GROUPS["自定义环境变量"][i]
282
+ found = True
283
+ break
284
+
285
+ if not found:
286
+ return f"❌ 自定义环境变量 {name} 不存在", None
287
+
288
+ # 从.env文件中删除该环境变量
289
+ env_path = Path(".env")
290
+ if env_path.exists():
291
+ with open(env_path, "r", encoding="utf-8") as f:
292
+ lines = f.readlines()
293
+
294
+ with open(env_path, "w", encoding="utf-8") as f:
295
+ for line in lines:
296
+ if not line.strip().startswith(f"{name}="):
297
+ f.write(line)
298
+
299
+ # 从当前进程的环境变量中删除
300
+ if name in os.environ:
301
+ del os.environ[name]
302
+
303
+ # 返回成功消息和更新后的环境变量组
304
+ return f"✅ 已删除环境变量 {name}", ENV_GROUPS["自定义环境变量"]
305
+
306
+
307
  def terminate_process():
308
  """终止当前运行的进程"""
309
  global current_process
 
644
  visible=len(ENV_GROUPS["自定义环境变量"]) > 0,
645
  )
646
 
647
+ # 更改和删除自定义环境变量部分
648
+ with gr.Accordion("更改或删除自定义环境变量", open=True, visible=len(ENV_GROUPS["自定义环境变量"]) > 0) as update_delete_accordion:
649
+ with gr.Row():
650
+ # 创建下拉菜单,显示所有自定义环境变量
651
+ custom_var_dropdown = gr.Dropdown(
652
+ choices=[var["name"] for var in ENV_GROUPS["自定义环境变量"]],
653
+ label="选择环境变量",
654
+ interactive=True,
655
+ )
656
+ update_var_value = gr.Textbox(
657
+ label="新的环境变量值", placeholder="输入新值"
658
+ )
659
+ update_var_type = gr.Dropdown(
660
+ choices=["text", "password"], value="text", label="类型"
661
+ )
662
+
663
+ with gr.Row():
664
+ update_var_button = gr.Button("更新环境变量", variant="primary")
665
+ delete_var_button = gr.Button("删除环境变量", variant="stop")
666
+
667
+ update_var_status = gr.Textbox(label="操作状态", interactive=False)
668
+
669
+ # 添加环境变量按钮点击事件
670
+ add_var_button.click(
671
+ fn=add_custom_env_var,
672
+ inputs=[new_var_name, new_var_value, new_var_type],
673
+ outputs=[add_var_status, custom_vars_list],
674
+ ).then(
675
+ fn=lambda vars: {"visible": len(vars) > 0},
676
+ inputs=[custom_vars_list],
677
+ outputs=[update_delete_accordion],
678
+ )
679
+
680
+ # 更新环境变量按钮点击事件
681
+ update_var_button.click(
682
+ fn=update_custom_env_var,
683
+ inputs=[custom_var_dropdown, update_var_value, update_var_type],
684
+ outputs=[update_var_status, custom_vars_list],
685
+ )
686
+
687
+ # 删除环境变量按钮点击事件
688
+ delete_var_button.click(
689
+ fn=delete_custom_env_var,
690
+ inputs=[custom_var_dropdown],
691
+ outputs=[update_var_status, custom_vars_list],
692
+ ).then(
693
+ fn=lambda vars: {"visible": len(vars) > 0},
694
+ inputs=[custom_vars_list],
695
+ outputs=[update_delete_accordion],
696
+ )
697
+
698
+ # 当自定义环境变量列表更新时,更新下拉菜单选项
699
+ custom_vars_list.change(
700
+ fn=lambda vars: {"choices": [var["name"] for var in vars], "value": None},
701
+ inputs=[custom_vars_list],
702
+ outputs=[custom_var_dropdown],
703
+ )
704
 
705
  # 现有环境变量配置
706
  for group_name, vars in ENV_GROUPS.items():