feat: 后端优化部分表的相互交互逻辑,自动移除失效的表单
This commit is contained in:
@@ -1026,6 +1026,12 @@ class AppConfig(GlobalConfig):
|
||||
if uid in self.task_dict:
|
||||
raise RuntimeError(f"脚本 {script_id} 正在运行, 无法删除")
|
||||
|
||||
for queue in self.QueueConfig.values():
|
||||
if isinstance(queue, QueueConfig):
|
||||
for key, value in queue.QueueItem.items():
|
||||
if value.get("Info", "ScriptId") == str(uid):
|
||||
await queue.QueueItem.remove(key)
|
||||
|
||||
await self.ScriptConfig.remove(uid)
|
||||
|
||||
async def reorder_script(self, index_list: list[str]) -> None:
|
||||
@@ -1288,7 +1294,7 @@ class AppConfig(GlobalConfig):
|
||||
/ f"data/{script_id}/{user_id}/Infrastructure/infrastructure.json",
|
||||
)
|
||||
|
||||
if isinstance(script_config, (MaaConfig)):
|
||||
if isinstance(script_config, MaaConfig):
|
||||
await script_config.UserData[uid].set("Info", "InfrastPath", str(json_path))
|
||||
|
||||
async def add_plan(
|
||||
@@ -1333,7 +1339,24 @@ class AppConfig(GlobalConfig):
|
||||
|
||||
logger.info(f"删除计划表配置: {plan_id}")
|
||||
|
||||
await self.PlanConfig.remove(uuid.UUID(plan_id))
|
||||
uid = uuid.UUID(plan_id)
|
||||
|
||||
user_list = []
|
||||
|
||||
for script in self.ScriptConfig.values():
|
||||
if isinstance(script, MaaConfig):
|
||||
for user in script.UserData.values():
|
||||
if user.get("Info", "StageMode") == str(uid):
|
||||
if user.is_locked:
|
||||
raise RuntimeError(
|
||||
f"用户 {user.get('Info','Name')} 正在使用此计划表且被锁定, 无法完成删除"
|
||||
)
|
||||
user_list.append(user)
|
||||
|
||||
for user in user_list:
|
||||
await user.set("Info", "StageMode", "Fixed")
|
||||
|
||||
await self.PlanConfig.remove(uid)
|
||||
|
||||
async def reorder_plan(self, index_list: list[str]) -> None:
|
||||
"""重新排序计划表"""
|
||||
|
||||
@@ -369,7 +369,7 @@ class ConfigBase:
|
||||
|
||||
def __init__(self, if_save_multi_config: bool = True):
|
||||
|
||||
self.file: None | Path = None
|
||||
self.file: Optional[Path] = None
|
||||
self.if_save_multi_config = if_save_multi_config
|
||||
self.is_locked = False
|
||||
|
||||
@@ -493,6 +493,9 @@ class ConfigBase:
|
||||
if not hasattr(self, f"{group}_{name}"):
|
||||
raise AttributeError(f"配置项 '{group}.{name}' 不存在")
|
||||
|
||||
if self.is_locked:
|
||||
raise ValueError("配置已锁定, 无法修改")
|
||||
|
||||
configItem = getattr(self, f"{group}_{name}")
|
||||
if isinstance(configItem, ConfigItem):
|
||||
configItem.setValue(value)
|
||||
|
||||
Reference in New Issue
Block a user