U
    yb$hk                     @   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                       sd   e Zd Zejjdg Zdd Z fddZdddd	Ze	d fd
d	Z
e	d fdd	Z  ZS )CmfTestplanrunc                 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)Z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   ZCmfTestplanTestcaseFolderlistZCmfTestcycleTestcaseFolderr   r   r   Ztestplan_testcasesr   )Zparent_folderr   depthZplan_testcase_folderZ
run_folderZ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.runc                    sB   |dkr$| j |f||||d|S t j|f||||d|S )Nreleaseobject_fieldsfilterr   order_by)releases_options_listr   field_options_list)clsrelation_field_namer"   r#   r   r$   r   r   r
   r   r&   ;   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_prefixz==zlist.release	parent_idsearch=r   r   r!   )r   appendr   r&   )
r'   r(   r"   r#   r   r$   Zfilter_by_projectr   r)   r*   r   r
   r   r%   D   s.    

   z!CmfTestplan.releases_options_list)NNNN)NNNNN)__name__
__module____qualname__r   r   Zapi_methodsr   r   r   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   