U
    c                     @   sZ   d dl Z d dlZd dlZd dlT d dlmZ d dlmZ d dlm	Z	 G dd dej
Z
dS )    N)*)cmf_comment)Path)CmfActiveEntityc                       sD   e Zd Zdd fdd
Z fddZdd Zedd
dZ  ZS )
CmfCommentF)forcec                   s   |  ddg | jrt| jjtjrtj| jkrpz| jj	d| j
d W q tk
rl   | jj	d| j
d Y qX n| jj	d| j
d | j
rtd| j
j d| jji| j
 d t j|d	|i|S )
Nparentroot_parentzPPP-COM-DELETE-ALLobjzPPP-COM-DELETE-OWNzcomment-delete-id)Zevent_personsr   )Zload_fieldsr	   
isinstancevaluemodels
CmfProjectgcurrent_user	cmf_ownercheck_project_role_accessr   CmfPermissionErrorZcmf_emit_eventr   Zall_relation_personssuperdelete)selfr   argskwargs	__class__ ./common/models/cmf_comment.pyr      s    
 zCmfComment.deletec                    sB   | j s| jr| jj  | _ | jr4| jjr4| jr4d| _t jf |S )NT)	r   Ztree_parentloadis_new
spectators
is_changedprivater   save)r   r   r   r   r   r$   $   s
    zCmfComment.savec                 C   s   | j dkrd S | jrt| jjtjr| jr>| jjd| jd nf| j	j
rtj| jkrz| jjd| jd W q tk
r   | jjd| jd Y qX n| jjd| jd d S )Nr   zPPP-COM-ADDr
   zPPP-COM-EDIT-ALLzPPP-COM-EDIT-OWN)Z	log_levelr	   r   r   r   r   r    r   r   textr"   r   r   r   r   )r   r   r   r   _check_project_perm,   s    
zCmfComment._check_project_permNc                 C   sx   t jst jrdS |r$t jj|kr$dS tj|ddddgd}|jsDdS t jj|jkrVdS |j	D ]}|jt j
kr\ dS q\dS )uT   Проверяем видимость комментария для g.current_personTr!   cmf_owner_idr#   )ZsimpleZfieldsN)r   Zdisable_permissionsZacl_admin_modeZcurrent_personr   ZcmfutilZget_obj_by_idr#   r'   r!   Zcurrent_person__member_of)clsZ
comment_idZowner_idZcommentZsubjectr   r   r   check_visibilityA   s    
zCmfComment.check_visibility)N)	__name__
__module____qualname__r   r$   r&   classmethodr)   __classcell__r   r   r   r   r      s
   r   )base64ZdatetimeZ	mimetypesZcmf.includeZ
cmf.modelsr   pathlibr   Zcommon.models.cmf_active_entityr   r   r   r   r   r   <module>   s   