U
    q;d                     @   s4   d dl Z d dlmZ d dlT G dd dejjZdS )    N)Random)*c                       s>   e Zd Zdd Zdd Z fddZdd fd	d

Z  ZS )CmfChannelMessagec                 C   s   | j jrd }| jdkr | jj}n| jdkr2| jj}|s:d S tj|dg}|d krVd S |j	d }tj
|d| jd| _ | j| j _td| j   | j| j _| j| j j_d S )Ninouttopicsr      )parentZlog_typedealz_audit_message )chat_messageis_nullmessage_flowperson_from_idvalueperson_to_idmodelsZCmfChatGroupZp2p_chatr   ZCmfChatMessager	   person_fromZ
cmf_authorgdebugtextchannelZdefault_channel)selfZ
contact_idZchatZtopic r   +./modules/crm/models/cmf_channel_message.py_process_chat_message	   s"    





z'CmfChannelMessage._process_chat_messagec                 C   s  t d | js| jdkr8t d| j d| j  d S | ddg | jdkrV| jn| j}|jrpt	d d S t d	|  |d
ddg |j
rt d d S t d dd| jgddddgdd|jggdddgdd|jgggg}| j|dgdgd}t d|  |rZ|jrZ|jjj| jjjkrZt d|  d| d|j  |j| _d S t d tjjdd |jggd!d| jjjggdgd"}|rt d#|  || _d S t d$ d }|jrtjj|jjd%}|s|jrtjj|jd&}|sdt| jjtjrd S t d' tj| jj| jj| jd(}|jrJ|jjf|_|jrZ|j|_|  nt d)|  tjjd*d|jgd+}|rt d,|  || _d S )-Nzprocess_parent called)r   r   u   Родитель u   , направление: r   	person_tor   uz   Не найден контакт, для почты это нормально, для других каналов - нетu   Нашли контакта: 
user_localphoneemailuU   С локальными пользователями не создаем сделокu|   И он даже не локальный. Ищем сделку в которой последний раз общалисьidz!=ORr   z==r   r   r   z-cmf_modified_atzparent.pipeline)filterorder_byZfieldszlast_message=u   Обрабатывая u5    нашли предыдущее сообщение: z parent=u_   Старых сообщений не нашли. Ищем сделку по контакту...ZcontactsINZpipeline_id)r!   r"   ur   Нашли сделку, которую будем использовать в качестве родителя: uz   Сделки не нашлось, поэтому на основе контакта попробуем найти лида)lead_phone_name)lead_email_nameu   Лида не нашлось, попробуем создать его на основе контакта. Он же должен создать нам сделку.)r	   r   r   u   Нашли лида Zlead_id)r!   z_process_parent: )r   r   r	   r   Zload_fieldsr   r   r   ZloggingZwarningr   r   getZpipeliner   r   ZCmfDealr   ZCmfLeadZnumber_e164r   
isinstancer   Z
CmfMailboxnamer$   r%   save)r   ZcontactZ_filterZlast_messageZ	last_dealZleadr
   r   r   r   _process_parent   st    




	$



z!CmfChannelMessage._process_parentc                    s   t   ddddddg S )N
message_idzchannel.parentr   zparent.default_channelzchat_message.textz#chat_message.parent.default_channel)supersave_preload_fields)r   	__class__r   r   r-   a   s
     z%CmfChannelMessage.save_preload_fieldsr   )depthc                   s   t d | jjrF| jrF| jjjdrFdt	t
d   | _| jjr`| jdkr`t j| _| jjrx| jrx| j  |   |   t j|d|i| d S )NuA   Вызвано сохранение объекта ChannelMessageZCmfWhatsapps   3EB0   r   r0   )r   r   r+   r   r   r   r   
startswithbinasciiZhexlifyr   Zget_random_bytesupperdecoder   r   Zcurrent_personZmessage_statusZ
is_changedr   emitr*   r   r,   r)   )r   r0   argskwargsr.   r   r   r)   f   s    

zCmfChannelMessage.save)__name__
__module____qualname__r   r*   r-   r)   __classcell__r   r   r.   r   r      s   Er   )r3   ZCryptor   Zcmf.includeZcmfr   ZCmfModelr   r   r   r   r   <module>   s   