55 lines
2.2 KiB
Python
55 lines
2.2 KiB
Python
# encoding: UTF-8
|
|
from ..dao.planDao import PlanDao
|
|
from ..model.planModel import PlanCase, TestPlan
|
|
|
|
|
|
class PlanService(object):
|
|
"""测试计划域 Service 层,封装计划统计等业务能力。"""
|
|
|
|
@staticmethod
|
|
def create(session, model_cls, add_info):
|
|
return PlanDao.create(session, model_cls, add_info)
|
|
|
|
@staticmethod
|
|
def batch_create(session, model_cls, batch_info_list):
|
|
return PlanDao.batch_create(session, model_cls, batch_info_list)
|
|
|
|
@staticmethod
|
|
def update_by_id(session, model_cls, obj_id, update_info, soft_delete=True):
|
|
return PlanDao.update_by_id(session, model_cls, obj_id, update_info, soft_delete)
|
|
|
|
@staticmethod
|
|
def get_by_id(session, model_cls, obj_id, soft_delete=True):
|
|
return PlanDao.get_by_id(session, model_cls, obj_id, soft_delete)
|
|
|
|
@staticmethod
|
|
def list_by_filters(session, model_cls, filter_list, page_num=1, page_size=20, order_column=None, asc=False):
|
|
return PlanDao.list_by_filters(session, model_cls, filter_list, int(page_num), int(page_size), order_column, asc)
|
|
|
|
@staticmethod
|
|
def delete_by_id(session, model_cls, obj_id):
|
|
return PlanDao.delete_by_id(session, model_cls, obj_id)
|
|
|
|
@staticmethod
|
|
def plan_stats(session, plan_id):
|
|
return PlanDao.plan_stats(session, plan_id)
|
|
|
|
@staticmethod
|
|
def refresh_plan_status(session, plan_id):
|
|
total = session.query(PlanCase).filter(PlanCase.plan_id == int(plan_id)).count()
|
|
if total == 0:
|
|
return
|
|
unexecuted_count = session.query(PlanCase).filter(PlanCase.plan_id == int(plan_id), PlanCase.status == 0).count()
|
|
failed_count = session.query(PlanCase).filter(PlanCase.plan_id == int(plan_id), PlanCase.status.in_([2, 3])).count()
|
|
plan = PlanDao.get_by_id(session, TestPlan, plan_id)
|
|
if not plan or plan.status == 3:
|
|
return
|
|
if unexecuted_count == 0:
|
|
new_status = 4 if failed_count == 0 else 2
|
|
elif unexecuted_count < total:
|
|
new_status = 1
|
|
else:
|
|
new_status = plan.status
|
|
if new_status != plan.status:
|
|
PlanDao.update_by_id(session, TestPlan, plan_id, {'status': new_status})
|