feat: 后端优化部分表的相互交互逻辑,自动移除失效的表单
This commit is contained in:
@@ -1026,6 +1026,12 @@ class AppConfig(GlobalConfig):
|
|||||||
if uid in self.task_dict:
|
if uid in self.task_dict:
|
||||||
raise RuntimeError(f"脚本 {script_id} 正在运行, 无法删除")
|
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)
|
await self.ScriptConfig.remove(uid)
|
||||||
|
|
||||||
async def reorder_script(self, index_list: list[str]) -> None:
|
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",
|
/ 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))
|
await script_config.UserData[uid].set("Info", "InfrastPath", str(json_path))
|
||||||
|
|
||||||
async def add_plan(
|
async def add_plan(
|
||||||
@@ -1333,7 +1339,24 @@ class AppConfig(GlobalConfig):
|
|||||||
|
|
||||||
logger.info(f"删除计划表配置: {plan_id}")
|
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:
|
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):
|
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.if_save_multi_config = if_save_multi_config
|
||||||
self.is_locked = False
|
self.is_locked = False
|
||||||
|
|
||||||
@@ -493,6 +493,9 @@ class ConfigBase:
|
|||||||
if not hasattr(self, f"{group}_{name}"):
|
if not hasattr(self, f"{group}_{name}"):
|
||||||
raise AttributeError(f"配置项 '{group}.{name}' 不存在")
|
raise AttributeError(f"配置项 '{group}.{name}' 不存在")
|
||||||
|
|
||||||
|
if self.is_locked:
|
||||||
|
raise ValueError("配置已锁定, 无法修改")
|
||||||
|
|
||||||
configItem = getattr(self, f"{group}_{name}")
|
configItem = getattr(self, f"{group}_{name}")
|
||||||
if isinstance(configItem, ConfigItem):
|
if isinstance(configItem, ConfigItem):
|
||||||
configItem.setValue(value)
|
configItem.setValue(value)
|
||||||
|
|||||||
Reference in New Issue
Block a user