U
    f                     @   s*   d dl T d dlmZ G dd dejZdS )    )*)	cmf_auditc                
       s   e Zd Zdd Z fddZedd
dZedd Zedd Z	e fddZ
e fddZe fddZe fddZ  ZS )CmfAuditc                 O   s   t ddd d S )Nu>   Невозможно удалить запись Аудита!Tabort)	cmf_alertselfargskwargs r   ./cmf/models/cmf_audit.pydelete   s    zCmfAudit.deletec                    s$   | j rt j||S tddd d S )NuJ   Невозможно редактировать запись Аудита!Tr   )Zis_newsupersaver   r   	__class__r   r   r   	   s    zCmfAudit.saveokN Fr   c                 C   s  t jr
d S |r(t|tr|}qH|jj}n t jr:t jjj}ntj	 jj}|rft|tr\|}qj|jj}n|}|sr|}|
dr|}|dkrd}d }tjrtjd }|sg }|
dkr|dkrd}
d|  } |
dkr|dkrd	}
d
|  } |
dkr t|jdkst|jdkr d}
d|  } |
dkrNt jrNt jt j	krNd|  } d}
| ||||||||||
d}|	rtjf |}t  |  W 5 Q R X d S t j| d S )Nz	CmfAudit:r   u   Таблица Аудитаr   )	CmfPerson   Zuser_)ZCmfPersonGroupZCmfRoleZ
CmfOrgUnitZCmfProjectRoleZCmfProjectPermSchemeRuleZCmfProjectPermSchemeZCmfAccessListZCmfAccessRuleZCmfSecurityLevelRuleZCmfSecurityLevelSchemeZCmfSecurityLevel   Zperm_)defaultZstaticZno_aclr      Zcfg_Zadmin_)operatecmf_model_nameresult_status
cmf_authorparent	client_ip
audit_datahtml_diff_dataparent_nameparent_codesecurity_level)gZimport_mode
isinstancestridvaluecurrent_usermodelsr   Zsystem_person
startswithZrequestZaccess_routecmfutilZget_model_by_nameZacl_typeZacl_default_user_policyZacl_admin_modeZcurrent_personr   disable_aclr   deferred_audit_listappend)r   r   r   r   r   r    r!   r"   r#   Zcurrent_transactionr$   Zcmf_author_idZ	parent_idr   r   auditr   r   r   audit_event   sr    








 

zCmfAudit.audit_eventc              	   C   sp   t  ^ tjD ]P}|dd }|r<t|tr<t j|dd}|sH|d }||d< tj	f |
  qW 5 Q R X d S )Nr   T)Zinclude_deletedr   )r-   r.   r%   r/   getr&   r'   Zget_obj_by_idr+   r   r   )clsr   r   r   r   r   apply_deferred_auditj   s    

zCmfAudit.apply_deferred_auditc                 C   s   t jjddstddd d S )NZIBAdmins)Z
group_codeu   Просматривать Аудит безопасности разрешено только Администраторам ИБ из группы IBAdminsTr   )r%   r*   Zin_person_groupr   )r4   r   r   r   _check_perm_admin_ibw   s    zCmfAudit._check_perm_admin_ibc                    sJ   d|krg |d< |d  d t j||}|rF|d jdkrF|   |S NZfieldsr$   r   )r0   r   listr$   r6   r4   r
   r   resr   r   r   r8   }   s    zCmfAudit.listc                    sJ   d|krg |d< |d  d t j||}|rF|d jdkrF|   |S r7   )r0   r   slistr$   r6   r9   r   r   r   r;      s    zCmfAudit.slistc                    sF   d|krg |d< |d  d t j||}|rB|jdkrB|   |S r7   )r0   r   r3   r$   r6   r9   r   r   r   r3      s    zCmfAudit.getc                    sF   d|krg |d< |d  d t j||}|rB|jdkrB|   |S r7   )r0   r   sgetr$   r6   r9   r   r   r   r<      s    zCmfAudit.sget)	r   NNNr   NNFr   )__name__
__module____qualname__r   r   staticmethodr2   classmethodr5   r6   r8   r;   r3   r<   __classcell__r   r   r   r   r      s.              [




r   N)Zcmf.includeZ
cmf.fieldsr   r   r   r   r   r   <module>   s   