
    *.+h4                     @    d dl T d dlmZ  G d dej                  ZdS )    )*)cmf_commentc                   d     e Zd Zdd fd
Z fdZ fdZ fdZed
d            Z fd	Z	 xZ
S )
CmfCommentF)forcec                   |                      ddg           | j        rI| j        sBt          d| j        j         d| j        j        i| j                                                   | j        r7t          j        	                    |           D ]}|
                                  t                      j
        |d|i|S )Nparentis_dummyzcomment-delete-id)event_personsr	   r   )load_fieldsr	   r
   cmf_emit_eventr   valueall_relation_personsmodelsCmfAttachmentlistdeletesuper)selfr   argskwargs
attachment	__class__s        $./modules/evagit/examples/example.pyr   zCmfComment.delete   s    
 	(J/000; 	Yt} 	Y2$+.22tw}%T[5U5U5W5WY Y Y Y = 	$$277t7DD $ $
!!####uww~t;5;F;;;    c                    | j         s*| j        r#| j        j                                         | _         | j        j        r| j        rd| _        | j        j        r| j        dk    rt          j        | _	        | j        j        rCt          j                            |           D ]"}| j        |_        |                                 # t                      j        di |S )NTclosedr    )r	   tree_parentload
spectators
is_changedprivatestatusgcurrent_user	closed_byr   r   r   saver   )r   r   r   r   s      r   r*   zCmfComment.save   s    { 	9t/ 	9*16688DK?% 	 $/ 	 DL;! 	,dkX&=&=^DN<" 	"$277t7DD " "
%)\
"!!!!uww|%%f%%%r   c                 ~   | j         dk    rd S | j        rt                              | j                  x}r| j        r|                    d| j                   d S | j        j        rt          j
        | j        k    r	 |                    d| j                   d S # t          $ rS | j        j        r$| j        s|                    d| j                   n|                    d| j                   Y d S Y d S w xY w|                    d| j                   d S d S t                                                       d S )Nr   zPPP-COM-ADDobjzPPP-COM-EDIT-ALLzPPP-COM-EDIT-OWN)	log_level
project_idcmfutilget_obj_by_idis_newcheck_project_role_accessr	   textr$   r'   r(   	cmf_ownerCmfPermissionErrorr
   r   check_edit_perm)r   projectr   s     r   r7   zCmfComment.check_edit_perm'   s   >QF
 ? 	&7+@+@+Q+Q Q 	&{ [11-T[1QQQQQ% [>T^33c99:LRVR]9^^^^^- c c c=3 cDM c $==mQUQ\=]]]]#==>PVZVa=bbbbbb ^]]	c 556Hdk5ZZZZZ[ [ GG##%%%%%s   ?B AC:9C:c                    |                      g d           | j        rt          j        | j        k    r_| j        rd S 	 | j                            d| j                   d S # t          $ r% | j                            d| j                   Y d S w xY w| j                            d| j                   d S t                      
                                 d S )N)r8   r	   r5   r
   zPPP-COM-DELETE-ALLr,   zPPP-COM-DELETE-OWN)r   r8   r'   r(   r5   r
   r3   r	   r6   r   check_delete_perm)r   r   s    r   r:   zCmfComment.check_delete_permC   s    GGGHHH< 	(~//= FbL::;OUYU`:aaaaa) b b bL::;OUYU`:aaaaaab 667KQUQ\6]]]]]GG%%'''''s   !A" "+BBNc                    |r|t           j        k    rLt           j        st           j        rdS |rt           j        j        |k    rdS t           j        }t           j        }nd}t                              |dg d          }|j	        rt           j
        dk    rdS |j        s|j        j        dk    r	|j        rdS |j	        sdS |j        |j        k    rdS |j        D ]u}|j        dk    r$|j        r|                    |j        |          c S |j        |j        k    r dS |du r!t$          j                            |d	          }|j        |v r dS vd
S )uy  
        Проверяем видимость комментария для g.current_person (или check_for_person)
        При использовании check_for_user метод можт выполняться долго! Обязательно перед вызовом
        проверяйте, что комментарий имеет флаг private
        T.)r#   cmf_owner_idr%   r8   zproject.logic_prefix)simplefieldsapiFzproject.servicedeskCmfProjectRole)id_onlyN)r'   r(   disable_permissionsacl_admin_modecurrent_personr   current_person__member_ofr0   r1   r%   	api_scoper#   r8   logic_prefix
user_localr<   
class_namein_project_roler   CmfAccessListsubject_full_group_list)cls
comment_idowner_idcheck_for_usercheck_for_user__member_ofcommentsubjects          r   check_visibilityzCmfComment.check_visibilityT   s     
	,1>!A!A$ (8 t A,/8;;t^N()(C%% ),%''
4/{/{/{ ( } }? 	q{e335! 	go&BF[&[&[`n`y&[ 4 	4 4444) 		 		G!%555'/5%55gowOOOOO GJ..tt(C//,2,@,X,XYgqu,X,v,v)z666tt 7		 		r   c                    t          t                                                                }|                     dg           | j        r1| j                                        D ]}|                    |           t          |          S )Nr	   )setr   
get_ownersr   r	   addr   )r   r   r   ownersparent_ownerr   s        r   rW   zCmfComment.get_owners~   s     UWW''))**($$$; 	) $ 6 6 8 8 ) )

<((((F||r   )NN)__name__
__module____qualname__r   r*   r7   r:   classmethodrT   rW   __classcell__)r   s   @r   r   r      s        "' < < < < < < <"& & & & & & & & & &8( ( ( ( (" ' ' ' ['R        r   r   N)cmf.includecommon.fieldsr   r   r    r   r   <module>rb      sd        % % % % % %A A A A A' A A A A Ar   