U
    _h                     @   s2   d dl T d dlmZ d dlZG dd dejZdS )    )*)cmf_document_historyNc                       s   e Zd ZdZdd Zdd Z fddZdd	 fd
d
Z fddZdd Z	dd fdd
Z
 fddZ fddZdd Z  ZS )CmfDocumentHistoryu+   
    История документа
    c                 C   s0   | j jr| j j }n| j jjdd}|| _d S )NZOPEN)Zstatus_type)parentis_newZworkflowZget_create_statusZget_default_statusstatus)selfZstatus_open r	   $./cmf/models/cmf_document_history.py_calc_status
   s    zCmfDocumentHistory._calc_statusc                 C   s   t |  d S )N)r   start_approver   r	   r	   r
   r      s    z CmfDocumentHistory.start_approvec                    sT   |  dddg | jr(| js(tj | _tj| jj| j	j
j| _t j|| d S )Nr   projectdoc_version)load_fieldsr   r   modelsCmfDocumentcalc_doc_versionZconfluence_converttextvaluer   idsuper_save_importr   argskwargs	__class__r	   r
   r      s
    zCmfDocumentHistory._save_importr   )depthc                   sL   |  dddg | jr(| js(tj | _| jr6|   t j|d|i|S )Nr   r   zparent.workflowr   )	r   r   r   r   r   r   r   r   save)r   r   r   r   r   r	   r
   r      s    zCmfDocumentHistory.savec                    s   t   dddg S )NZapprovedZapproved_atZapproved_version)r   save_preload_fieldsr   r   r	   r
   r    )   s    z&CmfDocumentHistory.save_preload_fieldsc                 O   s    |  dg | jr| j S g S )Nr   )r   r   
get_ownersr   r	   r	   r
   r!   ,   s    
zCmfDocumentHistory.get_ownersF)TEXKOM_db_deletec                   sn   |rTt jj| ddD ]}d |_|jdd qt jj| ddD ]}d |_|jdd q<t j|d|i| d S )NT)cur_published_versioninclude_deleted)Z	only_data)cur_workflow_versionr$   r"   )r   r   listr#   r   r%   r   delete)r   r"   r   r   docr   r	   r
   r'   2   s    zCmfDocumentHistory.deletec                    s@   |  ddg | jr2t| j}|jd| jd n
t   d S )Nr   
project_idzPPP-DOC-EDITobj)r   r)   APPget_cache_projectcheck_project_role_accessr   r   check_edit_permr   r   r   r	   r
   r/   >   s
    z"CmfDocumentHistory.check_edit_permc                    s@   |  ddg | jr2t| j}|jd| jd n
t   d S )Nr   r)   zPPP-DOC-DELETEr*   )r   r)   r,   r-   r.   r   r   check_delete_permr0   r   r	   r
   r1   F   s
    z$CmfDocumentHistory.check_delete_permc                 C   sv   ddl m}m}m} |  }| d}| jj |	||
tjjd| dd|tjj| }|ptdS )Nr   )funccastIntegerz-%^- )Z
sqlalchemyr2   r3   r4   Zget_code_prefixZdpZdata_driverZSessionquerymaxZregexp_replacer   Zdp_modelcodefilterZlikeZscalar)r   r2   r3   r4   prefixZlike_patternZ
max_numberr	   r	   r
    _get_current_code_number_from_dbN   s    
z3CmfDocumentHistory._get_current_code_number_from_db)__name__
__module____qualname____doc__r   r   r   r   r    r!   r'   r/   r1   r=   __classcell__r	   r	   r   r
   r      s   

r   )Zcmf.includeZ
cmf.fieldsr   Zdatetimer   r	   r	   r	   r
   <module>   s   