diff --git a/models/__init__.py b/models/__init__.py index 9af6e80122a508f444953a3bfa0854c63187aa32..2a28d80e2551109a5be9ef208e1079614d1af9db 100644 --- a/models/__init__.py +++ b/models/__init__.py @@ -1,6 +1,6 @@ import datetime -from sqlalchemy import Column, Integer, DateTime, func, select, delete, insert +from sqlalchemy import Column, Integer, DateTime, func, select, delete, insert, update from app.db import Base, db from common.tools import datetime_toString, string_toDatetime @@ -111,6 +111,12 @@ class BaseModel(Base): await cls.exec_orm(data_orm) return + @classmethod + async def batch_update(cls, values, *conditions): + update_orm = update(cls).where(*conditions).values(values) + await cls.exec_orm(update_orm) + return + class CommonModel(BaseModel): __abstract__ = True diff --git a/models/case_model.py b/models/case_model.py index dbd31df5648aaa556635f7c30d097aa0acfc3636..3d50820cee850637729f914a4dc7b040fb760966 100644 --- a/models/case_model.py +++ b/models/case_model.py @@ -20,8 +20,10 @@ class Case(CommonModel): comment='测试用例运行模式,单机、集群') is_available = Column(Boolean(), nullable=False, default=True, comment='测试用例是否可用') tone_case = Column(String(128), nullable=True, comment='T-One测试用例,当run_method为自动的时候生效') - device_type = Column(String(128), default=Device_Type_EN.UNLIMIT.value, nullable=False, comment='设备类型,可多选,默认支持所有设备') - device_arch = Column(String(256), default=Device_Arch.NOARCH.value, nullable=False, comment='设备架构类型,可多选,默认支撑所有类型') + device_type = Column(String(128), default=Device_Type_EN.UNLIMIT.value, nullable=False, + comment = '设备类型,可多选,默认支持所有设备') + device_arch = Column(String(256), default=Device_Arch.NOARCH.value, nullable=False, + comment = '设备架构类型,可多选,默认支撑所有类型') labels = Column(String(256), nullable=True, default='', comment='设备标签,多个用,隔开') desc = Column(String(512), default='', nullable=True, comment='用例描述') pre_condition = Column(String(512), default='', nullable=True, comment='前置条件') @@ -78,18 +80,6 @@ async def remove_case_tree_nodes(node_id, nodes): return err, False -async def batch_update_cases(ids, values): - batch_update_orm = update(Case).where(Case.id.in_(ids)).values(values) - await Case.exec_orm(batch_update_orm) - return - - -async def update_cases_list(node_id, nodes): - batch_update_orm = update(Case).where(Case.id.in_(nodes)).values(parent=node_id) - await Case.exec_orm(batch_update_orm) - return - - async def get_distinct_path(start=None): distinct_orm = select(CaseTree.path).distinct(CaseTree.path) if start: diff --git a/services/case_service.py b/services/case_service.py index afeafd05499fc11a454e4fc1797e183a45f47c83..ac535efa9e7dfd5a04f46fdb105a118c8ca900d0 100644 --- a/services/case_service.py +++ b/services/case_service.py @@ -101,7 +101,7 @@ async def move_cases(data): node = await CaseTree.query_obj_one(CaseTree.id == data['parent']) if not node: return ERROR_UN_EXISTED_NODE, False - await update_cases_list(data['parent'], data['cases']) + await Case.batch_update({'parent': data['parent']}, Case.id.in_(data['cases'])) return None, True @@ -189,7 +189,7 @@ async def update_cases(data, user): need_update = True if not need_update: return '没有需要更新的字段', False - await batch_update_cases(case_ids, values) + await Case.batch_update(values, Case.id.in_(case_ids)) if 'labels' in data: await __batch_update_case_labels(data['labels'], case_ids) return None, True diff --git a/services/plan_service.py b/services/plan_service.py index 17a127f48d8d74147aeb2294be73ba129a0197b6..632ccb56053ea2484a5f38393e7c70dda3a2ae6c 100644 --- a/services/plan_service.py +++ b/services/plan_service.py @@ -75,6 +75,7 @@ async def add_tasks(data, plan_id): else: plan.tasks = f'{plan.tasks},{tasks}' await plan.update() + await Task.batch_update({'plan_id': plan_id}, Task.id.in_(data['tasks'])) return plan.to_dict(), True