
    @i                     D    d dl  d dlmZ  G d dej                        Zy)    )*)cmf_testplanc                        e Zd Zej                  j
                  ddgz   Zd Z f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{.|    c                     | j                   j                  r&t        j                  j	                  dd      | _         t        |   |i |S )NTr   )systemsys_type)tree_parentis_nullr   CmfRegistryr   supersave)r   argskwargs	__class__s      r   r   zCmfTestplan.save   sD    ##%1155TM5ZDw|T,V,,r   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)r   )cmf.appr#   schedule_deferred_job_run_jobidvaluegcurrent_person)r   r!   r   r   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testplanr6   default_responsibler*   r   )r*   ztree_parent_folder.id==ztestplan_testcases.testcaseorderno)filterr   )parenttree_parent_foldernamer:   )r!   testcycle_testcase_folderN   )r   CmfTestcycler   CmfTestcycleTestcaseFolderCmfTestplanTestcaseFolderlistr>   r:   r   testplan_testcasesr   r*   )r%   parent_folder_idtree_parent_folder_iddepthr!   r=   plan_testcase_folder
run_foldertestplan_testcaserun_folder_id	copy_trees             r   rM   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   r>   r8   u   Прогон )r>   r6   r.   u   Тест-план «u    » успешно запущенTr@   )personr>   msgforce_notify_current_personr1   )Nr   )r   r   r   rA   r>   r   	CmfNotifyplace_notify)r$   r%   r&   _args_kwargsr6   r!   rM   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_fieldsr;   r   order_by)releases_options_listr   field_options_list)clsrelation_field_namerX   r;   r   rY   r   r    s          r   r[   zCmfTestplan.field_options_listV   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 )	Nr>   )logic_prefixr9   zlist.release	parent_idsearch=r   r<   rW   )r   appendr   r[   )r\   r]   rX   r;   r   rY   filter_by_projectr   r`   ra   r    s             r   rZ   z!CmfTestplan.releases_options_list_   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   r   staticmethodcmf_deferred_jobr)   classmethodr[   rZ   __classcell__)r    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   r    r   r   <module>rp      s!     /ny,** nyr   