Files
cdtestplant_v1/apps/project/tools/copyDemand.py

49 lines
2.0 KiB
Python
Raw Normal View History

2025-04-29 18:09:00 +08:00
from copy import deepcopy
from django.shortcuts import get_object_or_404
from apps.project.models import Project
def demand_copy_to_design(project_id: int, demand_key: str, design_id: int, depth: bool = False):
"""注意传入项目id测试项是key设计需求是id"""
project_qs = get_object_or_404(Project, id=project_id)
design = project_qs.psField.filter(id=design_id).first()
demand = project_qs.ptField.filter(key=demand_key).first()
# 1.这里先要根据老的demand取出其步骤并深度复制
origin_demand = deepcopy(demand)
demand.id = None
demand.title = '(复制)' + demand.title
demand.name = '(复制)' + demand.name
demand.dut = design.dut
demand.round = design.round
demand.design = design
demand.ident += '(复制)'
# 先查询目标design下面有多少个demand然后key+1
demand.key = "".join([design.key, '-', str(design.dtField.count())])
demand.save()
for content_obj in origin_demand.testQField.all():
content_origin = deepcopy(content_obj)
content_obj.id = None
content_obj.testDemand = demand
content_obj.save()
for step_obj in content_origin.testStepField.all():
step_obj.testDemandContent = content_obj
step_obj.id = None
step_obj.save()
# 2.如果depth=True则复制用例过去
if depth:
for case in origin_demand.tcField.all():
origin_case = deepcopy(case)
case.id = None
case.round = demand.round
case.dut = demand.dut
case.design = demand.design
case.test = demand
# 处理新case的key
case_key_lastkey = case.key.split("-")[-1]
case.key = "".join([demand.key, '-', case_key_lastkey])
case.save()
for case_step in origin_case.step.all():
case_step.id = None
case_step.case = case
case_step.save()
return demand.key