Files
cdtestplant_v1/apps/project/tools/copyDemand.py
2025-04-29 18:09:00 +08:00

49 lines
2.0 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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