U
    Įwh                     @   s2   d dl T d dlT d dlmZ G dd dejZdS )    )*)cmf_testplanc                       s   e Zd Zejjddg Zdd Z fddZddd	d
Zdddde	e
e
dddZed fdd	Zed fdd	Z  ZS )CmfTestplanrunsetupc                 C   s   | j r
d S tjjdd| _ d S )Nztestplan.base:default)code)ZworkflowmodelsZCmfWorkflowget)self r   (./modules/evatest/models/cmf_testplan.py_calc_workflow	   s    zCmfTestplan._calc_workflowc                    s(   | j jrtjjddd| _ t j||S )NTr   )systemsys_type)tree_parentZis_nullr   ZCmfRegistryr	   supersave)r
   argskwargs	__class__r   r   r      s    zCmfTestplan.saveN)	testcyclec                   sB   d fdd	 s6t jd| j | d  d S  |  d S )Nr   c                    sr   |dkr}t jj| ddgdD ]L}t j||j|jd}|  |jD ]}|j|d qH |||d  q dS )u/  Копируем структуру плана тестирования

            Args:
                parent_folder (CmfTestcycle, CmfTestplanTestcaseFolder): родительский узел
                depth (int, optional): уровень копирования. Defaults to 0.
            Nztestplan_testcases.test_caseorderno)tree_parent_folderfields)parentr   namer   )r   Ztestcycle_testcase_folder   )	r   CmfTestplanTestcaseFolderlistZCmfTestcycleTestcaseFolderr   r   r   Ztestplan_testcasesr   )parent_folderr   depthZplan_testcase_folderZ
run_foldertestplan_testcase	copy_treer   r   r   r$      s*     
  
z"CmfTestplan.run.<locals>.copy_treeu   Прогон )r   Ztestplan)Nr   )r   ZCmfTestcycler   r   )r
   r   r   r   r   r#   r   r      s    
zCmfTestplan.runabstractF)root_folder_nameroot_folder_typeappend)testcase_idsr&   r'   c                   s    fdd t jjd}|s0t jd}|r:||_||_|  |st jjdgdD ]0}|jj	|kr~|
|jj	 q^|  |  q^|D ]f}	t jjdd|	gd}|st jj|	d	d
ddgd}
 ||
j}t j||
|
jd}|  |  qd S )Nc                    sf   |r^|j jdkr^tjj|jd}|sZ | |j }tj|d|jd}|  |  |S | S d S )NZCmfTestcaseFolder)r   r   r%   )r   r   r   r   )	value
class_namer   r   r	   r   r   loadr   )Zroot_folderZtestcase_foldertestplan_folderr    get_parent_treer
   r   r   r/   >   s     z*CmfTestplan.setup.<locals>.get_parent_tree)r   r   testcase)r   r   ztestcase.id==)r   filterresponsiblefolderzfolder.namezfolder.tree_parent)idr   )r   Ztestplan_testcase_folderr0   r3   )r   r   r	   r   r   r   ZCmfTestplanTestcaser   r0   r5   removedeleteZCmfTestcaser4   r3   )r
   r)   r&   r'   r(   r   r   Ztestplan_root_folderr"   Ztestcase_idr0   r-   r   r.   r   r   ;   s:    

  zCmfTestplan.setupc                    sB   |dkr$| j |f||||d|S t j|f||||d|S )Nreleaseobject_fieldsr2   r   order_by)releases_options_listr   field_options_list)clsrelation_field_namer:   r2   r   r;   r   r   r   r   r=   h   s       zCmfTestplan.field_options_listc           
         s   |sg }|sdg}|sg }|dddgg}|o4| d}| dd }	|r\|sN|	s\|dd|gg}|d |d	 t j|f||||d
|S )Nr   Zlogic_prefixr1   zlist.release	parent_idsearch=r   r   r9   )r	   r(   r   r=   )
r>   r?   r:   r2   r   r;   Zfilter_by_projectr   r@   rA   r   r   r   r<   q   s.    

   z!CmfTestplan.releases_options_list)NNNN)NNNNN)__name__
__module____qualname__r   r   Zapi_methodsr   r   r   r   strr   classmethodr=   r<   __classcell__r   r   r   r   r      s(   '-               r   N)Zcmf.includeZ
cmf.fieldsZmodules.evatest.fieldsr   r   r   r   r   r   <module>   s   