
    _h                     L    d dl  d dlmZ d dlZ G d dej                        Zy)    )*)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                     | j                   j                  r,| j                   j                  j                         }|| _        y | j                   j                  j	                  d      }|| _        y )NOPEN)status_type)parentis_newworkflowget_create_statusget_default_statusstatus)selfstatus_opens     $./cmf/models/cmf_document_history.py_calc_statuszCmfDocumentHistory._calc_status
   sV    ;;++..@@BK " ++..AAfAUK!    c                 .    t         j                  |        y )N)r
   start_approve)r   s    r   r   z CmfDocumentHistory.start_approve   s    T"r   c                 n   | j                  g d       | j                  r/| j                  s#t        j                  j                         | _        t        j                  j                  | j                  j                  | j                  j                  j                        | _        t        | 0  |i | y )N)r
   projectdoc_version)load_fieldsr   r   modelsCmfDocumentcalc_doc_versionconfluence_converttextvaluer
   idsuper_save_import)r   argskwargs	__class__s      r   r#   zCmfDocumentHistory._save_import   sz    =>;;t//%11BBDD&&99$))//4;;>>K_K_`	d-f-r   r   )depthc                    | j                  g d       | j                  r/| j                  s#t        j                  j                         | _        | j                  r| j                          t        |    |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   sd    EF;;t//%11BBDD;;w|T99&99r   c                 *    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    w*,/^^^r   c                 v    | j                  dg       | j                  r| j                  j                         S g S )Nr
   )r   r
   
get_owners)r   r$   r%   s      r   r0   zCmfDocumentHistory.get_owners,   s1    ($;;;;))++	r   F)TEXKOM_db_deletec                (   |r~t         j                  j                  | d      D ]  }d |_        |j	                  d        t         j                  j                  | d      D ]  }d |_        |j	                  d        t        |   |d|i| y )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.delete2   s    ))..T[_.` )+/)4() ))..DZ^._ )+/(4() 	J/?J6Jr   c                     | j                  ddg       | j                  r=t        j                  | j                        }|j	                  d| j
                         y t        |           y )Nr
   
project_idzPPP-DOC-EDITobj)r   r;   APPget_cache_projectcheck_project_role_accessr
   r"   check_edit_permr   r   r&   s     r   rA   z"CmfDocumentHistory.check_edit_perm>   sS    (L12??++DOO<G--n$++-NG#%r   c                     | j                  ddg       | j                  r=t        j                  | j                        }|j	                  d| j
                         y t        |           y )Nr
   r;   zPPP-DOC-DELETEr<   )r   r;   r>   r?   r@   r
   r"   check_delete_permrB   s     r   rD   z$CmfDocumentHistory.check_delete_permF   sT    (L12??++DOO<G--.>DKK-PG%'r   c                    ddl m}m}m} | j	                         }| d}| j
                  j                  j                         j                  |j                   ||j                  t        j                  j                  d| dd      |                  j                  t        j                  j                  j                  |            j!                         }|xs dS )Nr   )funccastIntegerz-%^- )
sqlalchemyrF   rG   rH   get_code_prefixdpdata_driverSessionquerymaxregexp_replacer   dp_modelcodefilterlikescalar)r   rF   rG   rH   prefixlike_pattern
max_numbers          r    _get_current_code_number_from_dbz3CmfDocumentHistory._get_current_code_number_from_dbN   s    22%%' }WW((00288HH''(:(C(C(H(HAfXUV-Y[\
 &'',,11,?

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