
    P{f                     `    d dl Z d dlmZ d dl  G d dej
                  j                        Zy)    N)Random)*c                   >     e Zd ZdZd Zd Z fdZdd fd
Z xZS )CmfChannelMessageTc                 ~   | j                   j                  rd }| j                  dk(  r| j                  j                  }n%| j                  dk(  r| j
                  j                  }|sy t        j                  j                  |dg      }|y |j                  d   }t        j                  |d| j                        | _         | j                  | j                   _        t        j                  d| j                           | j                   | j                   _        | j"                  | j                   j                  _        y )Ninouttopicsr      )parentlog_typedealz_audit_message )chat_messageis_nullmessage_flowperson_from_idvalueperson_to_idmodelsCmfChatGroupp2p_chatr
   CmfChatMessager   person_from
cmf_authorgdebugtextchanneldefault_channel)self
contact_idchattopics       +./modules/crm/models/cmf_channel_message.py_process_chat_messagez'CmfChannelMessage._process_chat_message   s   $$J  D(!0066
""e+!..44
&&//
XJGD|KKNE & 5 5UQUYU`U` 5 aD+/+;+;D(GGod&7&7%89:!%37<<  0    c                    t         j                  d       | j                  s| j                  dvr0t         j                  d| j                   d| j                          y | j	                  ddg       | j                  dk(  r| j
                  n| j                  }|j                  rt        j                  d       y t         j                  d	|        |j	                  g d
       |j                  rt         j                  d       y t         j                  d       dd| j                  gdg ddd|j                  ggg ddd|j                  gggg}| j                  |dgdg      }t         j                  d|        |r|j                  r{|j                  j                  j                  | j                  j                  j                  k(  r:t         j                  d|  d| d|j                          |j                  | _        y t         j                  d       t        j                   j                  dd|j                  ggdd| j                  j                  j                  ggdg       }|r t         j                  d!|        || _        y t         j                  d"       d }|j"                  r4t        j$                  j                  |j"                  j&                  #      }|s6|j(                  r*t        j$                  j                  |j(                  $      }|st+        | j                  j,                  t        j.                        ry t         j                  d%       t        j%                  | j                  j                  | j                  j0                  | j                  &      }|j"                  r|j"                  j&                  f|_        |j(                  r|j(                  |_        |j7                          nt         j                  d'|        t        j                   j                  d(d|j                  g)      }|r t         j                  d*|        || _        y y )+Nzprocess_parent called)r   r	   u   Родитель u   , направление: r   	person_tor   uz   Не найден контакт, для почты это нормально, для других каналов - нетu   Нашли контакта: )
user_localphoneemailuU   С локальными пользователями не создаем сделокu|   И он даже не локальный. Ищем сделку в которой последний раз общалисьidz!=OR)r   ==r   r   r.   )r   r.   r	   r   z-cmf_modified_atzparent.pipeline)filterorder_byfieldszlast_message=u   Обрабатывая u5    нашли предыдущее сообщение: z parent=u_   Старых сообщений не нашли. Ищем сделку по контакту...contactsINpipeline_id)r/   r0   ur   Нашли сделку, которую будем использовать в качестве родителя: uz   Сделки не нашлось, поэтому на основе контакта попробуем найти лида)lead_phone_name)lead_email_nameu   Лида не нашлось, попробуем создать его на основе контакта. Он же должен создать нам сделку.)r   r   r   u   Нашли лида lead_id)r/   z_process_parent: )r   r   r   r   load_fieldsr   r(   r   loggingwarningr)   r,   getpipeliner   r   CmfDealr*   CmfLeadnumber_e164r+   
isinstancer   
CmfMailboxnamer5   r6   save)r    contact_filterlast_message	last_dealleadr   s          r$   _process_parentz!CmfChannelMessage._process_parent   s   	'(;;$++=@GG'}4NtO`O`Nabc-56&*&7&74&?$""T^^??OO  Y  Z	/y9:<=GGkl	  O  	P4!-0@$

/ST.wzz0RS
 xxw:L9MWhVixj	-~./L//L4G4G4P4P4S4SW[WcWcWjWjWmWm4mGG-dV3hiuhvv~  @L  @S  @S  T  U  V&--DK	qrNN&&
D7::,/O0=tT\\EXEXE[E[/\/1<N;O ' Q	 GG  I  JS  IT  U  V#DK	  M  	N==>>%%gmm6O6O%PD>>%%gmm%DD $,,,,f.?.?@GG  |  }>>)<)<4<<CTCT^b^j^j>kD}}'.}}'@'@'A$}}'.}}$IIKGG*4&12~~!!)T477)C!D GG'v./DK r&   c                 *    t         |          g dz   S )N)
message_idzchannel.parentr   zparent.default_channelzchat_message.textz#chat_message.parent.default_channel)supersave_preload_fields)r    	__class__s    r$   rM   z%CmfChannelMessage.save_preload_fieldsc   s     w*, 0l l 	lr&   r   )depthc                   t         j                  d       | j                  j                  r| j                  r{| j                  j
                  j                  j                  d      rLdt        j                  t        j                  d            j                         z   j                         | _        | j                  j                  r$| j                  dk(  rt         j                   | _        | j"                  j$                  r&| j&                  r| j&                  j)                          | j+                          | j-                          t/        | `  |d|i| y )NuA   Вызвано сохранение объекта ChannelMessageCmfWhatsapps   3EB0   r	   rO   )r   r   rK   r   r   r,   r   
startswithbinasciihexlifyr   get_random_bytesupperdecoder   r   current_personmessage_status
is_changedr   emitrI   r%   rL   rC   )r    rO   argskwargsrN   s       r$   rC   zCmfChannelMessage.saveh   s    	ST??""t||||$$//>#*X-=-=f>U>UVW>X-Y-_-_-a#a"i"i"k##(9(9U(B //D))  !!&&(""$d2%262r&   )	__name__
__module____qualname__	api_allowr%   rI   rM   rC   __classcell__)rN   s   @r$   r   r      s*    I@&CJl
 !" 3 3r&   r   )rT   Cryptor   cmf.includecmfr   CmfModelr    r&   r$   <module>ri      s&      l3

++ l3r&   