U
    7[Sem                     @   s*   d dl T d dlmZ G dd dejZdS )    )*)	cmf_auditc                
       sv   e Zd Zdd Z fddZeejdddd ZedddZ	e
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.saveT)Zsystem_taskc                  K   s\   t d|   | dd }|r4tj|dd}|| d< |sD| d | d< tjf | }|  d S )NzCelery: Logged: parentT)Zinclude_deleted
cmf_author)printgetcmfutilZget_obj_by_idmodelsr   r   )r   r   auditr   r   r   _audit_event   s    zCmfAudit._audit_eventokN Fr   c                 C   s  |rt |tr|}q>|jj}n tjr0tjjj}ntj jj}|r\t |trR|}q`|jj}n|}|sh|}|	drv|}|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rDtjrDtjtjkrDd|  } d}
| ||||||||||
d}|	rtjf |}t  |  W 5 Q R X d S ttjj|d 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_statusr   r   	client_ip
audit_datahtml_diff_dataparent_nameparent_codesecurity_level)r   )
isinstancestridvaluegcurrent_userr   r   Zsystem_person
startswithZrequestZaccess_router   Zget_model_by_nameZacl_typeZacl_default_user_policyZacl_admin_modeZcurrent_personr   Zdisable_aclr   Zcmf_deferred_taskr   )r"   r#   r$   r   r   r&   r'   r(   r)   Zcelery_skipr*   Zcmf_author_idZ	parent_idr%   r   r   r   r   r   audit_event!   sr    








 

zCmfAudit.audit_eventc                 C   s   t jjddstddd d S )NZIBAdmins)Z
group_codeu   Просматривать Аудит безопасности разрешено только Администраторам ИБ из группы IBAdminsTr   )r/   r0   Zin_person_groupr   )clsr   r   r   _check_perm_admin_ib|   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   )appendr   listr*   r4   r3   r
   r   resr   r   r   r7      s    zCmfAudit.listc                    sJ   d|krg |d< |d  d t j||}|rF|d jdkrF|   |S r5   )r6   r   slistr*   r4   r8   r   r   r   r:      s    zCmfAudit.slist)	r   NNNr   NNFr   )__name__
__module____qualname__r   r   staticmethodZ
celery_appZtaskr   r2   classmethodr4   r7   r:   __classcell__r   r   r   r   r      s(   
           Z

r   N)Zcmf.includeZ
cmf.fieldsr   r   r   r   r   r   <module>   s   