
    h                     H    d dl T d dlmZ d dlZ G d dej                  ZdS )    )*)cmf_document_historyNc                   x     e Zd ZdZd Zd Z fdZdd fd
Z fdZd	 Z	d
d fd
Z
 fdZ fdZd Z xZS )CmfDocumentHistoryu+   
    История документа
    c                 T    | j         j                            d          }|| _        d S )NOPEN)status_type)parentworkflowget_default_statusstatus)selfstatus_opens     $./cmf/models/cmf_document_history.py_calc_statuszCmfDocumentHistory._calc_status
   s(    k*==&=QQ!    c                 :    t                               |            d S )N)r
   start_approve)r   s    r   r   z CmfDocumentHistory.start_approve   s    T"""""r   c                 F   |                      g d           | j        r*| j        s#t          j                                        | _        t          j                            | j        j        | j	        j
        j                  | _         t                      j        |i | d S )N)r
   projectdoc_version)load_fieldsis_newr   modelsCmfDocumentcalc_doc_versionconfluence_converttextvaluer
   idsuper_save_import)r   argskwargs	__class__s      r   r"   zCmfDocumentHistory._save_import   s    ===>>>; 	Et/ 	E%1BBDDD&99$)/4;>K_``	d-f-----r   r   )depthc                    |                      g d           | j        r*| j        s#t          j                                        | _        | j        r|                                   t                      j        |d|i|S )N)r   r
   zparent.workflowr&   )	r   r   r   r   r   r   r   r!   save)r   r&   r#   r$   r%   s       r   r(   zCmfDocumentHistory.save   s    EEEFFF; 	Et/ 	E%1BBDDD; 	 uww|T99&999r   c                 N    t                                                      g dz   S )N)approvedapproved_atapproved_version)r!   save_preload_fieldsr   r%   s    r   r-   z&CmfDocumentHistory.save_preload_fields&   s%    ww**,,/^/^/^^^r   c                 r    |                      dg           | j        r| j                                        S g S )Nr
   )r   r
   
get_owners)r   r#   r$   s      r   r0   zCmfDocumentHistory.get_owners)   s;    ($$$; 	,;))+++	r   F)TEXKOM_db_deletec                F   |rt           j                            | d          D ]}d |_        |                    d            t           j                            | d          D ]}d |_        |                    d             t                      j        |d|i| d S )NT)cur_published_versioninclude_deleted)	only_data)cur_workflow_versionr4   r1   )r   r   listr3   r(   r6   r!   delete)r   r1   r#   r$   docr%   s        r   r8   zCmfDocumentHistory.delete/   s     	))..T[_.`` ) )+/)4(((()..DZ^.__ ) )+/(4((((J/?J6JJJJJr   c                     |                      ddg           | j        r#| j                            d| j                   d S t	                                                       d S )Nr
   r   zPPP-DOC-EDITobj)r   r   check_project_role_accessr
   r!   check_edit_permr.   s    r   r>   z"CmfDocumentHistory.check_edit_perm;   se    (I.///< 	&L22>t{2SSSSSGG##%%%%%r   c                     |                      ddg           | j        r#| j                            d| j                   d S t	                                                       d S )Nr
   r   zPPP-DOC-DELETEr;   )r   r   r=   r
   r!   check_delete_permr.   s    r   r@   z$CmfDocumentHistory.check_delete_permB   sf    (I.///< 	(L223C2UUUUUGG%%'''''r   c                    ddl m}m}m} |                                 }| d}| j        j                                                            |	                     ||
                    t          j        j        d| dd          |                                                  t          j        j                            |                                                    }|pdS )Nr   )funccastIntegerz-%^- )
sqlalchemyrB   rC   rD   get_code_prefixdpdata_driverSessionquerymaxregexp_replacer   dp_modelcodefilterlikescalar)r   rB   rC   rD   prefixlike_pattern
max_numbers          r    _get_current_code_number_from_dbz3CmfDocumentHistory._get_current_code_number_from_dbI   s    2222222222%%'' }}}W(002288HH''(:(C(H-f---Y[\\  
 
 &',11,??
 

&(( 	 Qr   )__name__
__module____qualname____doc__r   r   r"   r(   r-   r0   r8   r>   r@   rX   __classcell__)r%   s   @r   r   r      s%        " " "# # #. . . . . !" : : : : : : :_ _ _ _ _   .3 
K 
K 
K 
K 
K 
K 
K& & & & &( ( ( ( (      r   r   )cmf.include
cmf.fieldsr   datetimer    r   r   <module>rb      sn        + + + + + + T T T T T-@ T T T T Tr   