
    fi"                     H    d dl T d dlT ddlmZ  G d dej                  ZdS )    )*   )cmf_chat_topicc                        e Zd Zej        j        g dz   Zd Zd Z fdZ fdZ	e
dd            Zd Zdd	d
ZddZ fdZd ZddddZd Z xZS )CmfChatTopic)	mark_readsend_messageload_historyc                 H    t           j                            | |           d S )Nparenttext)models
CmfCommentadd_comment_audit)selfr   s     !./common/models/cmf_chat_topic.pyauditzCmfChatTopic.audit   s$    ++4d+CCCCC    c                 $   | j         j        sd S | j        sd | j                                         D             }t          j                            dd|gdd| j        gg          D ]}|                                 | j         j	        D ]>}|| j         j
        vr.|                     t          j        j         d|j                    ?| j         D ]@}|| j         j	        vr.|                     t          j        j         d|j                    ?d S d S )	Nc                     g | ]	}|j         
S  id.0objs     r   
<listcomp>z0CmfChatTopic._calc_executors.<locals>.<listcomp>   s    KKKSVKKKr   	person_idzNOT INchat_topic_id==filteru    удалил из чата u    добавил в чат )	executors
is_changedis_new
all_nestedr   CmfChatTopicUnreadMessagelistr   deleteoldvaluer   gcurrent_personname)r   all_executorsunreadexecutors       r   _calc_executorszCmfChatTopic._calc_executors   sN   ~( 	F{ 	dKKt~/H/H/J/JKKKM :??V^`mHnIXZ^`d`gHhHj? k k     N. f f4>#777JJ!"2"7ddU]Ubddeee N d d4>#555JJ!"2"7bbS[S`bbccc	d 	dd dr   c                 N    t                                                      g dz   S )N)groupr$   group.executors)supersave_preload_fields)r   	__class__s    r   r8   z CmfChatTopic.save_preload_fields    s%    ww**,,-V-V-VVVr   c                    | j         rY| j        j        r| j        j        | _        t          j        | j        j        vr$| j                            t          j                   | j        j	        r\| j        j        sP| j        j
        dk    r@t          j        }|j        | j        j        k    r| j                            d          | _        | j	        r | j        r| j                                         |                                   t#                      j        |i |}| j        j	        rU| j        rN|                                 D ]9}t+          d|j         | j        j        | j        j        j        d|g           :|S )NCLOSED	IN_REVIEWzarchive-topic-topic_idgroup_idevent_persons)r&   r$   is_nullr5   r-   r.   r,   appendstatusr%   status_typer   	cmf_ownerworkflowget_default_statusemitr3   r7   savecmf_archivedall_relation_personscmf_emit_eventcode)r   argskwargsr.   instpersonr9   s         r   rJ   zCmfChatTopic.save#   s   ; 	8~% 6!%!5t~';;;%%a&6777;! 	L$+*= 	L$+BY]eBeBe-N DN$555"m>>{KK? 	tz 	JOOuww|T,V,,' 	zD,= 	z3355 z z===DGMLPJML_@a @aqwpxz z z z zr   Nc                     t           j        }dd|j        ggg ddg ddd|ggg}t          j                            |g d	          }d
 |D             S )ux   
        Получаем все p2p чаты для текущего пользователя
        :return:
        r$   IN)r?   !=NOR)cache_status_typerU   r;   rN   =)r$   	group.p2pr5   status.status_typer#   fieldsc                 *    g | ]}|j         j        |S r   )r5   p2p)r   rows     r   r   z*CmfChatTopic.p2p_chats.<locals>.<listcomp>D   s!    444cim4444r   )r-   r.   r   r   r   r)   )cls	chat_coder.   	filter_lsress        r   	p2p_chatszCmfChatTopic.p2p_chats9   s     )!4.*;)<=?W?W?WAAAFCQZC[\^	!&&%^%^%^ ' ` `44s4444r   c                 ~    |                      dg           | j        j        j        dv rt	          dd           d S d S )NrZ   )r;   r<   u.   К сожалению тема закрыта.T)abort)load_fieldsrD   rE   r,   	cmf_alert)r   commentrO   rP   s       r   _comment_save_hookzCmfChatTopic._comment_save_hookF   sQ    ./000;"(,CCCFdSSSSSS DCr   )r\   c                Z   |                      ddg           | j        j        rt          j                            g dddt          j        j        ggddddgggdg	          }d }| j        j	        D ]}|j        t          j        j        k    r ng }|D ]4}|j        d
 |j	        D             v r|
                    |j                   5t          j                            dd|gddddggg|dg          S t          j                            dd| j        j        gddddggg|dg          S )NrY   r6   )r^   r!   Tr$   rT   rW   r;   r<   r[   c                     g | ]	}|j         
S r   r   r   s     r   r   z-CmfChatTopic.load_history.<locals>.<listcomp>Y   s     B B BC B B Br   r?   cmf_modified_at)r#   r\   order_byr!   )rg   r5   r^   r   CmfChatGroupslistr-   r.   r   r$   rC   r   )r   r\   rO   rP   rd   rR   groupschats           r   r
   zCmfChatTopic.load_historyK   s   +'89::::> 	.+11:M:M:M;FqO_ObNc:d;NPTW_alVm:n:p ;F 2 H HI F*.  9 0 333E 4F! + +9 B B4> B B BBBMM$'***&,,T6*$dX{,CD5F +,	 - . . .
 "((*dDJM1R2EthXcMd1e1gou3D2E ) G G 	Gr   c                 ^    t          d| j         ||                                            d S )Nzchat-message-r@   )rM   r   rL   )r   datas     r   
emit_eventzCmfChatTopic.emit_eventd   s4    0tw00$dF_F_FaFabbbbbbr   c                 6     t                      j        |i |S N)r7   toggle_check)r   rO   rP   r9   s      r   rx   zCmfChatTopic.toggle_checkg   s    #uww#T4V444r   c                    |                      dg           t          j                            dd| j        gddt
          j        j        ggg d          D ]g}|j                                        st          dt
          j        j
         | j        j        | j        j        j        dt
          j        g	           hd S )
Nr5   r    r!   r   )messagezmessage.viewsz'message.channel_messages.message_statusr[   z
mark-read-r=   r@   )rg   r   r(   r)   r   r-   r.   rz   r   rM   rN   r,   r5   )r   rP   unread_comments      r   r   zCmfChatTopic.mark_readk   s   '###$>CC_^bdhdkLlMXZ^`a`p`sLtLvLw Lw Lw D x x 	a 	aN ")3355 ?(8(=??dgmimisivi|A}A}  OP  O_  N`  a  a  a  a  a	a 	ar   r   )
channel_idpriority_msgc                   |                      ddg           | j        }|rPt          t                    |                    d          d                  }|                    |          }|| _        | j        r|                     d           t                              | |          }|                    d           |r| j	        D ]}	|	j
        t          j        j
        k    r|	j        r%|	                     g d	           |	j        j        p|	j        j        }
|
sW|                    |
||
          }||_        |j        r'|j        s |j        |_        |                                 |                                 n>t                              | |          }d|_        ||_        |                                 |j
        S )up   
        Отправляем сообщение в чат (Копроротивный, Whatsapp, тд)
        zexecutors.user_localdefault_channel:r   r   T)	only_data)r   priority)phone_mobilephonecompany)chat_messager   sent)rg   r   varsr   splitgetr%   rJ   CmfChatMessager$   r   r-   r.   
user_localr   numberr   r	   r   r   dealCmfChannelMessagemessage_status)r   rz   r|   r}   rO   rP   channelchannel_modelr   rR   phone_numberchannel_msgs               r   r	   zCmfChatTopic.send_messagev   s    	02CDEEE& 	+ LL)9)9#)>)>q)ABM#'':'66G#*D ? 	&III%%%,,D<,PPD))) 	. # #9 0 333$ ""#G#G#GHHH%29PV\=P# %22<Wc2dd+7(% (l.? ((3(:L% %%'''  """"##& !22$W2MMK)/K&'3K$r   c                     |                      g d           t          j                            dd| j        g          D ]}|                                 d| _        |                                  dS )u8   
        Архивируем тему чата
        )rD   rG   activityr    r!   r"   TN)rg   r   r(   r)   r   r*   rK   rJ   )r   rO   rP   r1   s       r   archivezCmfChatTopic.archive   sv     	;;;<<<6;;OUY[_[bCc;dd 	 	FMMOOOO 		r   rw   )__name__
__module____qualname__r   r   api_methodsr   r3   r8   rJ   classmethodrd   rj   r
   ru   rx   r   r	   r   __classcell__)r9   s   @r   r   r      sa        -9 =
 =
 =
 
KD D Dd d d W W W W W    , 
5 
5 
5 [
5T T T
 *. G G G G G2c c c c5 5 5 5 5	a 	a 	a 7; ' ' ' ' 'R	 	 	 	 	 	 	r   r   N)cmf.include
cmf.fieldsr\   r   r   r   r   r   <module>r      sp            # # # # # #b b b b b>. b b b b br   