
    g4                     D    d dl  d dlmZ  G d dej                        Zy)    )*)cmf_commentc                   ^     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                   | j                  ddg       | j                  r_| j                  sSt        d| j                  j                   d| j                  j
                  i| j                  j                                | j                  r5t        j                  j                  |       D ]  }|j                           t        | (  |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;;t}}!$++..!12tww}}%T[[5U5U5WY ==$2277t7D $
!!#$ w~t;5;F;;    c                 "   | j                   s5| j                  r)| j                  j                   j                         | _         | j                  j                  r| j                  rd| _        | j                  j                  r$| j                  dk(  rt        j                  | _	        | j
                  j                  rFt        j                  j                  |       D ]#  }| j
                  |_        |j                          % t        | 4  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    {{t//**11668DK??%%$//DL;;!!dkkX&=^^DN<<""$2277t7D "
%)\\
"!" w|%f%%r   c                    | j                   dk7  ry | j                  rt        j                  | j                        x}r| j                  r|j                  d| j                         y | j                  j                  rZt        j                  | j                  k(  r	 |j                  d| j                         y |j                  d| j                         y y t        | =          y # t        $ rb | j                  j                  r*| j                  s|j                  d| j                         n|j                  d| j                         Y y Y y w xY w)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
 ??7+@+@+Q Q Q{{11-T[[1Q%%>>T^^3c99:LRVR]R]9^ 556Hdkk5Z & G#% . c==33DMM $==mQUQ\Q\=]#==>PVZVaVa=b ^	cs   C) )A&EEc                    | j                  g d       | j                  r{t        j                  | j                  k(  r6| j
                  ry 	 | j                  j                  d| j                         y | j                  j                  d| j                         y t        | )          y # t        $ r* | j                  j                  d| j                         Y y w xY w)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H<<~~/==bLL::;OUYU`U`:a 667KQUQ\Q\6]G%' * bLL::;OUYU`U`:abs   'B+ +0CCc                 P   |r|t         j                  k(  rbt         j                  st         j                  ry|rt         j                  j
                  |k(  ryt         j                  }t         j                  }nd}t        j                  |dg d      }|j                  rt         j                  dk7  ry|j                  s&|j                  j                  dk(  r|j                  ry|j                  sy|j
                  |j                  k(  ry|j                  D ]  }|j                   dk(  r*|j                  r|j#                  |j                  |      c S |j
                  |j
                  k(  r y|du r!t$        j&                  j)                  |d	      }|j
                  |v s y y
)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   sd    1>>!A$$(8(8A,,//8;^^N()(C(C% ),%''
4/{ ( }??q{{e3!!goo&B&BF[&[`n`y`y  4 44)) 		G!!%55'//%55goowOO  GJJ.(C/,2,@,@,X,XYgqu,X,v)zz66		r   c                     t        t        | 	               }| j                  dg       | j                  r0| j                  j                         D ]  }|j                  |        t        |      S )Nr	   )setr   
get_ownersr   r	   addr   )r   r   r   ownersparent_ownerr   s        r   rW   zCmfComment.get_owners~   s`     UW')*($;; $ 6 6 8 )

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