
    bh}#                     @    d dl T d dlmZ  G d dej                  ZdS )    )*)cmf_commentc                        e Zd Z fdZed fd	            Zddd fd
Zdd fd
Z fd	Z fd
Z	 fdZ
edd            Z fdZd Z xZS )
CmfCommentc                 L    t                                                      dgz   S )Nproject)supersave_preload_fieldsself	__class__s    ./common/models/cmf_comment.pyr
   zCmfComment.save_preload_fields   s     ww**,,	{::    Nc                     t                                          |          }|s6|                    t                                          g d                     |S )N)
cmf_authorcmf_created_atprivateext_id)r	   import_shop_fieldsextend)clsfields_nameresr   s      r   r   zCmfComment.import_shop_fields
   sg    gg((55 
	 JJ** , , ,     
r   FforceTEXKOM_db_deletec                   |                      ddg           | j        rI| j        sBt          d| j        j         d| j        j        i| j                                                   | j        s|r:t          j        	                    | d          D ]}|
                    d            t                      j
        |||d	|}t          j                            |            |S )
Nparentis_dummyzcomment-delete-id)event_personsT)r   include_deleted)r   r   )load_fieldsr   r   cmf_emit_eventr    valueall_relation_personsmodelsCmfAttachmentlistdeleter	   CmfBackbonePeerobj_after_delete_hook)r   r   r   argskwargs
attachmentr   r   s          r   r*   zCmfComment.delete   s   
 	(J/000; 	Yt} 	Y2$+.22tw}%T[5U5U5W5WY Y Y Y = 	9, 	9$277tUY7ZZ 9 9
!!4!8888eggnd%BR]]V\]]44T:::
r   )	recursivec                     t                      j        |d|i|}t          j                            dgdd| gg dgddd          D ]}|                                 |S )Nr0   r   tree_parent==)cmf_deletedr3   TT)fieldsfilterTECHCOM_nocacher"   include_dummy)r	   restorer'   r   r)   )r   r0   r-   r.   r   commentr   s         r   r9   zCmfComment.restore.   s    eggotCyCFCC(--cU]TXZ^D_`y`y`yCz@D>BRV . X X 	 	G OO
r   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closed)r    )r   r2   load
spectators
is_changedr   statusgcurrent_user	closed_byr'   r(   r)   saver	   )r   r.   r/   r   s      r   rE   zCmfComment.save6   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@   rB   rC   	cmf_ownerCmfPermissionErrorr   r	   check_edit_perm)r   r   r   s     r   rR   zCmfComment.check_edit_permF   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)r   r   rP   r   zPPP-COM-DELETE-ALLrG   zPPP-COM-DELETE-OWN)r#   r   rB   rC   rP   r   rN   r   rQ   r	   check_delete_permr   s    r   rT   zCmfComment.check_delete_permb   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c                    |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   r   zproject.logic_prefix)simpler5   apiFzproject.servicedeskCmfProjectRole)id_onlyN)rB   rC   disable_permissionsacl_admin_modecurrent_personr    current_person__member_ofrK   rL   r   	api_scoper?   r   logic_prefix
user_localrV   
class_namein_project_roler'   CmfAccessListsubject_full_group_list)r   
comment_idowner_idcheck_for_usercheck_for_user__member_ofr:   subjects          r   check_visibilityzCmfComment.check_visibilitys   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   rn   zCmfComment.get_owners   s     UWW''))**($$$; 	) $ 6 6 8 8 ) )

<((((F||r   c                 ^    ddl m} |                    | j        j        ||          | _        d S )Nr   )CmfActiveEntity)common.models.cmf_active_entityrs   _replace_attach_urlrO   r%   )r   attach
new_attachrs   s       r   _replace_attachmentzCmfComment._replace_attachment   s6    CCCCCC#77	Q[\\			r   )N)NN)__name__
__module____qualname__r
   classmethodr   r*   r9   rE   rR   rT   rk   rn   rx   __classcell__)r   s   @r   r   r      sO       ; ; ; ; ;      [ #(%       ( (-       & & & & & & & & & &8( ( ( ( (" ' ' ' ['R    ] ] ] ] ] ] ]r   r   N)cmf.includecommon.fieldsr   r   r=   r   r   <module>r      sn        % % % % % %e] e] e] e] e]' e] e] e] e] e]r   