
    i%                     N    d dl  d dl d dlmZ  G d dej                        Zy)    )*)cmf_testcase_folderc                   B     e Zd Zd Z fdZd Zddd fd
Zd Z xZS )	CmfTestcaseFolderc                     | j                   | _        | j                  }|r[|r:|j                  j                  dk(  r!|j                    d| j                   | _        ny |j                  j                         }|rZy y )Nr   z / )nametexttree_parentvalue
class_nameload)selfr
   s     /./modules/evatest/models/cmf_testcase_folder.py_calc_fullnamez CmfTestcaseFolder._calc_fullname   sk    II	&&{00;;?RR*//0DII;?	%11668K     c                 *    t         |          ddgz   S )Nr
   r	   )supersave_preload_fields)r   	__class__s    r   r   z%CmfTestcaseFolder.save_preload_fields   s    w*,v/FFFr   c                    | j                   j                  s-| j                  j                  s| j                  j                  sy | j                  st	        dd       | j
                  rdd| j
                  g}n| j                  rdd| j                  g}nd }|rZt        j                  j                  dd| j                  g|dd	| j                  gg
      rt	        d| j                   dd       y y y )Nu8   Имя папки не может быть пустым.T)aborttree_parent_id=	parent_idr   idz!=)filteru   Папка с именем uA    уже существует. Укажите другое имя.)r
   
is_changedparentr   	cmf_alertr   r   modelsr   slistr   )r   parent_filters     r   _check_folder_conflictz(CmfTestcaseFolder._check_folder_conflict   s      ++t{{/E/EI]I]yyPX\]-sD4G4GHM^^(#t~~>M MV55;;dii0-$dggAVW < Y3DII;>  A  IM  NY=r   Nr   is_task_transition_rundepthc                h    | j                          | j                          t        |   |||d|S )Nr$   )r#   r   r   save)r   r%   r&   argskwargsr   s        r   r(   zCmfTestcaseFolder.save'   s6    ##%w|T:PX]haghhr   c                     fd |       S )u   
        Рекурсивный вывод тест-кейсов из папки и всех подпапок.
        Возвращает плоский список только тест-кейсов (без папок).
        c                     g }t         j                  j                  |       }|j                  |       t         j                  j                  |       }|D ]  }|j                   |              |S )uP   Рекурсивно получить все тест-кейсы из папки)folder)r
   )r    CmfTestcaselistextendr   )r-   result	testcases
subfolders	subfolderget_folder_testcasess        r   r5   z8CmfTestcaseFolder.rec_list.<locals>.get_folder_testcases1   sr    F **//v/>IMM)$  116666JJ' ?	29=>? Mr    )r   r)   r*   r5   s      @r   rec_listzCmfTestcaseFolder.rec_list,   s    
	  $D))r   )	__name__
__module____qualname__r   r   r#   r(   r7   __classcell__)r   s   @r   r   r      s&    	9GN$ 26Q i
*r   r   N)cmf.include
cmf.fieldsmodules.evatest.fieldsr   r   r6   r   r   <module>r?      s!      6;*+== ;*r   