
    Y~hI                     @    d dl T d dlmZ  G d dej                  ZdS )    )*)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                         Ze	 d fd	            Ze	 	 d fd	            Z xZS )CmfTestplanrunsetupc                 b    | j         rd S t          j                            d          | _         d S )Nztestplan.base:default)code)workflowmodelsCmfWorkflowget)selfs    (./modules/evatest/models/cmf_testplan.py_calc_workflowzCmfTestplan._calc_workflow   s1    = 	F*..4K.LL    c                     | j         j        r&t          j                            dd          | _          t                      j        |i |S )NTr   )systemsys_type)tree_parentis_nullr   CmfRegistryr   supersave)r   argskwargs	__class__s      r   r   zCmfTestplan.save   sK    # 	[%155TM5ZZDuww|T,V,,,r   N)	testcyclec                    ddl m}  |d           t          | j        | j        j        |r|j        nd t          j        j        j        d           d S )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   s    %%%%%%	  E  	F  	F  	FM#'7=5>%HY\\D()(8(;(A 	
 	
 	
 	
 	
 	
r       Запуск тест-планаT)descriptionshow_bg_progressbarc                 B   dfd	t           j                            | dg          }|s:t                               d|j         |          }|                                 d S  ||            t           j                            |dd|j         d	d
d           d S )Nr   c                    t           j                            | g d          }|r!t           j                            |          }n|}t           j                            dd|gddg          D ]~}t                               |||j        |j        	          }|                                 |j	        D ]}|
                    ||
           |j        }	d} 
| |j        |	|dz              dS )u/  Копируем структуру плана тестирования

            Args:
                parent_folder (CmfTestcycle, CmfTestplanTestcaseFolder): родительский узел
                depth (int, optional): уровень копирования. Defaults to 0.
            )test_configurationstestplanr1   default_responsibler'   fields)r'   ztree_parent_folder.id==ztestplan_testcases.testcaseorderno)filterr4   )parenttree_parent_foldernamer6   )r   testcycle_testcase_folderN   )r   CmfTestcycler   CmfTestcycleTestcaseFolderCmfTestplanTestcaseFolderlistr:   r6   r   testplan_testcasesr   r'   )r"   parent_folder_idtree_parent_folder_iddepthr   r9   plan_testcase_folder
run_foldertestplan_testcaserun_folder_id	copy_trees             r   rI   z'CmfTestplan._run_job.<locals>.copy_tree!   s_    +//<$G $G $G 0 H HI % /%+%F%J%JNc%J%d%d""%."(.(H(M(M/7GH19 )N ) ) [ [$ $>>$9K-2<P<X ?  
 !!!)=)P  %%))"+2< *     !+!
	,(<(?PUXYPYZZZZ'[ [r   r:   r3   u   Прогон )r:   r1   r+   u   Тест-план «u    » успешно запущенTr<   )personr:   msgforce_notify_current_personpriority)Nr   )r   r   r   r=   r:   r   	CmfNotifyplace_notify)r!   r"   r#   _args_kwargsr1   r   rI   s          @r   r&   zCmfTestplan._run_job   s    !	[ !	[ !	[ !	[ !	[ !	[F %))[&)JJ 	++4X]44! ,  I NNF	,,,,%%#3Vx}VVV(, 	& 	
 	
 	
 	
 	
r   c                 t    |dk    r | j         |f||||d|S  t                      j        |f||||d|S )Nreleaseobject_fieldsr7   r4   order_by)releases_options_listr   field_options_list)clsrelation_field_namerU   r7   r4   rV   r   r   s          r   rX   zCmfTestplan.field_options_listV   s     )++,3,-@  ZP]flu{  GO  Z  Z  SY  Z  Z  Z)uww)y/<VTZemy yqwy y 	yr   c                 0   |sg }|sdg}|sg }|g dg}|o|                     d          }|                     dd           }	|r|s|	s|dd|gg}|                    d           |                    d            t                      j        |f||||d|S )	Nr:   )logic_prefixr5   zlist.release	parent_idsearch=r   r8   rT   )r   appendr   rX   )rY   rZ   rU   r7   r4   rV   filter_by_projectr   r]   r^   r   s             r   rW   z!CmfTestplan.releases_options_list_   s      	F 	 xH 	F@@@A!Dm&7&7&D&D	Hd++ 	=+ 	=6 	={C;<Fj!!!h)uww)y/<VTZemy yqwy y 	yr   )NNNN)NNNNN)__name__
__module____qualname__r   r   api_methodsr   r   r   staticmethodcmf_deferred_jobr&   classmethodrX   rW   __classcell__)r   s   @r   r   r      s$       *6%9IIKM M M
- - - - - $( 	
 	
 	
 	
 	
 "DZ^___4
 4
 `_ \4
l ]ay y y y y [y ]a"y y y y y [y y y y yr   r   N)cmf.includemodules.evatest.fieldsr   r    r   r   <module>rm      sn        / / / / / /ny ny ny ny ny,* ny ny ny ny nyr   