
    4j_                     D    d dl mZ d dl  G d dej                        Zy)    )cmf_testcase_step)*c                        e Zd Zej                  j
                  dgz   Z fdZd Zd fd	Ze	 e
dd      defd	              Ze fd
       Ze fd       Zd Z fdZ fdZddZ xZS )CmfTestcaseStepcopyc                 *    t         |          g dz   S )N)expected_resultcomment	test_datastep_number)supersave_preload_fields)self	__class__s    -./modules/evatest/models/cmf_testcase_step.pyr   z#CmfTestcaseStep.save_preload_fields   s    w*,/iii    c                 P   t         j                  j                  dd| gg d      D ]q  }t        |j                  d      5 }t         j                  ||j
                        }|j                  |j                                |j                          ddd       s y# 1 sw Y   ~xY w)u?    Копирование вложений для CmfTestcaseStepparent==)url_previewurl_preview_imgurl)filterfieldsrb)r   nameN)	modelsCmfAttachmentlistopenfull_path_filer   upload_filereadsave)r   r   
attachmentfilenew_attachments        r   copy_attachmentsz CmfTestcaseStep.copy_attachments
   s     ..33d4(< 4 
 	&J j//6 &$!'!5!5V*//!5!Z**499;7##%& &		&& &s    ABB%	c                 v    t        |   ||g|i |}|r| j                  |       |j                          |S N)r   r   r(   _update_parent_modified_at)r   r   r(   codeargskwargsnew_objr   s          r   r   zCmfTestcaseStep.copy   s?    ',tT;D;F;!!'***,r   Tu=   Пересчет номеров шагов тесткейса)	only_oncedescriptiontestcase_idc                    t         j                  j                  dd| gddgg d      }i }|D ]]  }|j                  j                  }|j                  |d      dz   ||<   |j                  ||   k7  sD||   |_        |j                          _ y	)
u   Пересчитывает порядковые номера шагов внутри каждой секции тесткейсаr   r   step_sectionorderno)r4   r   r5   )r   order_byr   r      N)r   r   r   r4   valuegetr   r$   )r2   stepssection_countersstepsections        r   recalc_steps_numberz#CmfTestcaseStep.recalc_steps_number   s     &&++dK0$i0= , 
  	D''--G(8(<(<Wa(H1(LW%#3G#<<#3G#< 			r   c                     t        |   ||fi |}| j                  |dg      }t        | j                  |j
                  g       |S N	parent_id)r   )r-   )r   
move_abovesgetschedule_deferred_jobr>   rA   )clsobj_id	before_idr.   resobjr   s         r   rB   zCmfTestcaseStep.move_above0   sH    g =f=hhv{mh4c55S]]OL
r   c                     t        |   ||fi |}| j                  |dg      }t        | j                  |j
                  g       |S r@   )r   
move_belowrC   rD   r>   rA   )rE   rF   after_idr.   rH   rI   r   s         r   rK   zCmfTestcaseStep.move_below7   sH    g <V<hhv{mh4c55S]]OL
r   c                     | j                   s-| j                  j                  s| j                  j                  sy d| j                   d| j                   d| _        y )Nu
   Шаг №u    (секция: ))is_newr   
is_changedr4   r   r   s    r   
_calc_namezCmfTestcaseStep._calc_name>   sP    ##..$$// !1!1 22B4CTCTBUUVW	r   c                 R   | j                   rj| j                  j                  sTdd| j                  gdd| j                  gdd| j
                  gg}t        j                  j                  |      dz   | _        | j                          t        | ,  |i |}| j                          |S )Nr   r   r4   idz!=)r   r7   )rO   r   rP   r   r4   rT   r   r   countrR   r   r$   r+   )r   r-   r.   _filterresultr   s        r   r$   zCmfTestcaseStep.saveE   s    ;;t//:: $4nd4K\K\5]d477+-G%55;;7;KaODt.v.'')r   c                 F    t        |   |i |}| j                          |S r*   )r   deleter+   )r   r-   r.   rW   r   s       r   rY   zCmfTestcaseStep.deleteP   s'    00'')r   c                     | j                   j                          | j                   j                  j                          | j                   j	                  d       y)u  
        Обновляет cmf_modified_at у родительского testcase
        Необходимо, чтобы изменения в testcase_step отражались на времени модификации родительского testcase
        T)	only_dataN)r   loadcmf_modified_atset_nowr$   rQ   s    r   r+   z*CmfTestcaseStep._update_parent_modified_atU   s?    
 	##++-4(r   )FN)returnN)__name__
__module____qualname__r   r   api_methodsr   r(   r   staticmethodcmf_deferred_jobstrr>   classmethodrB   rK   rR   r$   rY   r+   __classcell__)r   s   @r   r   r      s    #33??6(JKj	& 2qr  s $    X	
)r   r   N)modules.evatest.fieldsr   cmf.includer    r   r   <module>rl      s     4 W)'77 W)r   