
    Ni                     R    d dl  d dlmZ d dlmZ  G d deej
                        Zy)    )*)cmf_testplan)EvaTestCodeMixinc                        e Zd Zej                  j
                  ddgz   Zd ZdddZe e	ddd	
      d               Z
e	 d fd	       Ze	 	 d fd	       Z xZS )CmfTestplanrunsetupc                 n    | j                   ry t        j                  j                  dddg      | _         y )Nztestplan.base:defaultTsave_eval_code)codecache_inmemoryfields)workflowmodelsCmfWorkflowget)selfs    (./modules/evatest/models/cmf_testplan.py_calc_workflowzCmfTestplan._calc_workflow	   s1    ==**..4K\`jzi{.|    N)	testcyclec                    ddl m}  |d       t        | j                  | j                  j
                  |r|j                  nd t        j                  j                  j
                  d       y )Nr   )	cmf_alertup   Обработка может занять несколько минут, ожидайте оповещения.)testplan_idtestcycle_idnotify_person_id)kwargs)cmf.appr   schedule_deferred_job_run_jobidvaluegcurrent_person)r   r   argsr   r   s        r   r   zCmfTestplan.run   sS    %  E  	FMM#'77==5>Y\\D()(8(8(;(;(A(A	
r       Запуск тест-плана   T)descriptionpriorityshow_bg_progressbarc                 :   dfd	t         j                  j                  | dg      }|s5t         j                  d|j                   |      }|j                          y  ||        t         j                  j                  |dd|j                   dd	d
       y )Nc                    t         j                  j                  | g d      }|r!t         j                  j                  |      }n|}t         j                  j                  dd|gddg      D ]  }t         j                  |||j                  |j                  	      }|j                          |j                  D ]  }|j                  ||
        |j                  }	d} 
| |j                  |	|dz           y)u/  Копируем структуру плана тестирования

            Args:
                parent_folder (CmfTestcycle, CmfTestplanTestcaseFolder): родительский узел
                depth (int, optional): уровень копирования. Defaults to 0.
            )test_configurationstestplanr.   default_responsibler!   r   )r!   ztree_parent_folder.id==ztestplan_testcases.testcaseorderno)filterr   )parenttree_parent_foldernamer2   )r   testcycle_testcase_folderN   )r   CmfTestcycler   CmfTestcycleTestcaseFolderCmfTestplanTestcaseFolderlistr6   r2   savetestplan_testcasesr   r!   )r   parent_folder_idtree_parent_folder_iddepthr   r5   plan_testcase_folder
run_foldertestplan_testcaserun_folder_id	copy_trees             r   rF   z'CmfTestplan._run_job.<locals>.copy_tree   s#    ++//<$G 0 HI %%+%F%F%J%JNc%J%d"%."(.(H(H(M(M/7GH19 )N ) [$ $>>$9K-22<P<X<X ? 
 !)=)P)P %%))"+2< * 
 !+!
,(<(?(?PUXYPYZ'[r   r6   r0   u   Прогон )r6   r.   r&   u   Тест-план «u    » успешно запущенTr8   )personr6   msgforce_notify_current_personr)   )Nr   )r   r   r   r9   r6   r=   	CmfNotifyplace_notify)r   r   r   _args_kwargsr.   r   rF   s          @r   r    zCmfTestplan._run_job   s    !	[F %%))[&)J++$X]]O4! , I NN,,%%#3&x}}o5UV(, 	& 	
r   c                 h    |dk(  r | j                   |f||||d|S t        |   |f||||d|S )Nreleaseobject_fieldsr3   r   order_by)releases_options_listsuperfield_options_list)clsrelation_field_namerQ   r3   r   rR   r   	__class__s          r   rU   zCmfTestplan.field_options_listQ   s{     )+,3,,-@  ZP]flu{  GO  Z  SY  Z  Zw)y/<VTZemyqwy 	yr   c                     |sg }|sdg}|sg }|g dg}|xr |j                  d      }|j                  dd       }	|r|s|	s|dd|gg}|j                  d       |j                  d       t        
|   |f||||d|S )	Nr6   )logic_prefixr1   zlist.release	parent_idsearch=sys_typer4   rP   )r   appendrT   rU   )rV   rW   rQ   r3   r   rR   filter_by_projectr   r[   r\   rX   s             r   rS   z!CmfTestplan.releases_options_listZ   s     FxHF@A!Dm&7&7&D	Hd++6{C;<Fj!hw)y/<VTZemyqwy 	yr   )NNNN)NNNNN)__name__
__module____qualname__r   r   api_methodsr   r   staticmethodcmf_deferred_jobr    classmethodrU   rS   __classcell__)rX   s   @r   r   r      s    **66%9IIK}
 $( 	
 "Dqfjk4
 l 4
l ]ay y ]a"y yr   r   N)cmf.includemodules.evatest.fieldsr   -modules.evatest.models.cmf_evatest_code_mixinr   r    r   r   <module>rm      s'     / Jhy"L$<$< hyr   