U
    Ȝhi                     @   s8   d dl T d dlmZ d dlmZ G dd deejZdS )    )*)cmf_testplan)EvaTestCodeMixinc                       st   e Zd Zejjddg Zdd ZddddZee	d	d
dddd Z
ed fdd	Zed fdd	Z  ZS )CmfTestplanrunZsetupc                 C   s$   | j r
d S tjjdddgd| _ d S )Nztestplan.base:defaultTZsave_eval_code)codeZcache_inmemoryfields)ZworkflowmodelsZCmfWorkflowget)self r   (./modules/evatest/models/cmf_testplan.py_calc_workflow	   s    zCmfTestplan._calc_workflowN)	testcyclec                O   sB   ddl m} |d t| j| jj|r*|jnd tjjjdd d S )Nr   )	cmf_alertup   Обработка может занять несколько минут, ожидайте оповещения.)testplan_idtestcycle_idnotify_person_id)kwargs)Zcmf.appr   Zschedule_deferred_job_run_jobidvaluegZcurrent_person)r   r   argsr   r   r   r   r   r      s    zCmfTestplan.run    Запуск тест-плана   T)descriptionpriorityZshow_bg_progressbarc                    st   d fdd	 t jj| dgd}|sFt jd|j |d}|  d S  ||  t jj|dd	|j d
ddd d S )Nr   c           
         s   t jj| ddddgd}|r,t jj|d}n|}t jjdd|gdd	gd
D ]Z}t j|||j|jd}|  |j	D ]}|j
||d qr|j}	d} | |j|	|d  qJdS )u/  Копируем структуру плана тестирования

            Args:
                parent_folder (CmfTestcycle, CmfTestplanTestcaseFolder): родительский узел
                depth (int, optional): уровень копирования. Defaults to 0.
            Ztest_configurationstestplanZdefault_responsibler   r   )r   ztree_parent_folder.id==ztestplan_testcases.testcaseorderno)filterr   )parenttree_parent_foldernamer!   )r   Ztestcycle_testcase_folderN   )r	   CmfTestcycler
   ZCmfTestcycleTestcaseFolderZCmfTestplanTestcaseFolderlistr%   r!   saveZtestplan_testcasesr   r   )
r   Zparent_folder_idZtree_parent_folder_iddepthr   r$   Zplan_testcase_folderZ
run_folderZtestplan_testcaseZrun_folder_id	copy_treer   r   r,      s<      
  
z'CmfTestplan._run_job.<locals>.copy_treer%   r   u   Прогон )r%   r   r   u   Тест-план «u    » успешно запущенTr&   )Zpersonr%   msgZforce_notify_current_personr   )Nr   )r	   r   r
   r'   r%   r)   Z	CmfNotifyZplace_notify)r   r   r   _args_kwargsr   r   r   r+   r   r      s"    #

zCmfTestplan._run_jobc                    sB   |dkr$| j |f||||d|S t j|f||||d|S )Nreleaseobject_fieldsr"   r   order_by)releases_options_listsuperfield_options_list)clsrelation_field_namer2   r"   r   r3   r   	__class__r   r   r6   Q   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_prefixr    zlist.release	parent_idsearch=Zsys_typer#   r1   )r
   appendr5   r6   )
r7   r8   r2   r"   r   r3   Zfilter_by_projectr   r;   r<   r9   r   r   r4   Z   s.    

   z!CmfTestplan.releases_options_list)NNNN)NNNNN)__name__
__module____qualname__r   r   Zapi_methodsr   r   staticmethodZcmf_deferred_jobr   classmethodr6   r4   __classcell__r   r   r9   r   r      s&   6               r   N)Zcmf.includeZmodules.evatest.fieldsr   Z-modules.evatest.models.cmf_evatest_code_mixinr   r   r   r   r   r   <module>   s   