
    bEf                     H    d Z ddlT ddlmZ ej        Z G d de          ZdS )uS   
"Клей" для связи почтового ящика с воронками.
    )*)	CmfEntityc                   \     e Zd Z fdZdd fd
Zd Zd Zd Zed             Z	d	 Z
 xZS )
CmfLeadMailboxc                 N    t                                                      g dz   S )N)plugin	mailboxeszmailboxes.email)supersave_preload_fields)self	__class__s    )./modules/mail/models/cmf_lead_mailbox.pyr   z"CmfLeadMailbox.save_preload_fields   s%    ww**,,/Y/Y/YYY    r   )depthc                   t          | j                  dk    r#| j        j        r| j        d         j        | _        | j                                        j        rL| j        j        s@t                              | j        d|           | _        | j        	                                  t                      j	        |d|i|S )Nr   lead_mailbox)nametypeparentr   )lenr	   r   is_nullemailr   loadmodels	CmfPluginsaver
   )r   r   argskwargsr   s       r   r   zCmfLeadMailbox.save   s    t~""ty'8"q)/DI;% 	di.? 	 **	W[*\\DKKuww|T99&999r   c                 T   t           j                            dd|gdg          }|r|S t          d|           | j        j        rt          d           t          d          t                               || j                  }t          d           |                                 |S )	Nlead_email_name==filterfieldsu)   Лида не нашли по sender = %su!   И воронку не нашлиup   Не удалось найти подходящую воронку продаж для создания лида)r    r   u5   А лида в итоге создаём нового)r   CmfLeadgetdebugpipeliner   
IndexErrorr   )r   r   leads      r   _get_or_create_leadz"CmfLeadMailbox._get_or_create_lead   s    ~!!*;T5)ISdRe!ff 	K95AAA=  	Q5666  P  Q  Q  Q~~eDM~JJEFFF		r   c                    t          d|j                   t          j                            dd|j        gddddgggdd	g
          }|rt          d||           |S t          d|j                   t          j                            d	d|j        gddddgggdd	g
          }|rt          d||j                   |S t          d|j                   t          j                            dd|j        g          }t          j                            ddd |D             gddddgggg d
          }|r"t          d|d |j	        D                        |S t          d|j                   t          d           | j
        r9t          d           t          d           |                    | j
                  S t          d           d S )Nu+   Ищем сделку по id лида = %slead_idr!   cache_status_typezNOT INCLOSEDFAILidprimary_contact.emailr"   u]   Нашли сделку %s по лиду %s, туда и будем писать письмоuG   Ищем сделку по email основного контакта %sux   Нашли сделку %s по основному контакту %s, туда и будем писать письмоu@   Ищем сделку по email других контактовr   r#   contactsINc                     g | ]	}|j         
S  )r1   .0contacts     r   
<listcomp>z6CmfLeadMailbox._get_or_create_deal.<locals>.<listcomp>@   s    #G#G#G7GJ#G#G#Gr   )r1   r2   zcontacts.emailu}   Нашли сделку %s по не основному контакту %s, туда и будем писать письмоc                     g | ]}|S r7   r7   r8   s     r   r;   z6CmfLeadMailbox._get_or_create_deal.<locals>.<listcomp>F   s    <<<7w<<<r   uN   Не нашли... лид %s есть, а открытой сделки нетu{   Пытаемся создать сделку в воронке, к которой привязана лидоловушкаu?   Воронку нашли, создадим там сделкуu   Сделка сама создаст нам контакта по идее. lead.create_deal() ниже его должен создать.)r   uk   Не нашли воронку продаж, соответственно, не создали сделку)r'   r1   r   CmfDealr&   r    primary_contact	CmfPersonslistr4   r(   create_deal)r   r*   dealr4   s       r   _get_or_create_dealz"CmfLeadMailbox._get_or_create_deal)   s   ;TWEEE~!!dg.1DhQY[aPb0cd12 " 4 4  	qswy}~~~KWY]Ymnnn~!!($0DE$h60BCE 12	 " 4 4
  	  M  OS  UY  Ui  j  j  jKPRVRfggg#))'4AU1V)WW~!!T#G#Gh#G#G#GH$h60BCE EDD	 " F F
  	 P<<dm<<<> > > K^`d`ghhh  L  	M  	M  	M= 	ASTTT  `  a  a  a##4=#999  A  A  A  A  Ar   c           	         d}|rt          d||           |j        r)|j        j        |k    rt          d||           |j        }n@|j        j        r4t          d||           |j        D ]}|j        j        r|j        |k    r|}|s3t          d|           t
          j                            dd|g          }|s t          d	| d
| d| j	         dd           t          d||           |S )u0    Либо находит, либо падает Nu<   Определяем контакт по сделке %s: %su`   Определяем контакт по основному контакту сделки %s: %suX   Определяем контакт по всем контактам сделки %s: %su`   Контакт всё ещё не найден. Ищем отправителя письма: %sr   r!   r3   uc   Не найден контакт или воронка для создания нового: email z, deal z, pipeline .T)abortu"   Найден контакт %s: %s)
r'   r>   r   r4   
is_definedr   r?   r&   	cmf_alertr(   )r   r   rB   r:   sec_contacts        r   _get_contactzCmfLeadMailbox._get_contactR   sv    		.PRVX]^^^# .(<(Be(K(Kxz~  AF  G  G  G.) .prvx}~~~#'= . .K"(3 .8IU8R8R"- 	Jtv{|||&**7D%2H*IIG 	WJJ J(,J J9=J J JQUW W W W 	2GUCCCr   c                     d}| j         j        rt          d           |dc| _         }| j        j        rt          d           |dc| _        }|r|                                  d S d S )NFu;   Обновляем отстутствующий person_fromTu@   Обновляем отсутствующего родителя)person_fromr   r'   r   r   )channel_msgr:   r   dirtys       r   _update_channel_messagez&CmfLeadMailbox._update_channel_messagej   s    "* 	;OPPP-4d*K#U% 	5TUUU(.%K 		 	r   c                 ~   |                      dg           |                     |j                  }|
J d            |                     |          }|                     |j        |          }t          d|du           ||n|}t          d|           t          d||           |                     |||           dS )ua    Создание лидов на основе писем на специальную почту r(   NuI   Не нашлось лида и не удалось его создатьu1   Итак найденность сделки = %su$   Выбрали родителем %su   Обновляем данные в channel_message, используемом вместо коммента! author=%s parent=%s)load_fieldsr+   	client_idrC   rJ   r'   rO   )r   rM   r*   rB   r:   r   s         r   receive_emailzCmfLeadMailbox.receive_emailv   s     	*&&&''(=>>!l''--##K$94@@A4tCSTTT Ld4f===  P  RY  [a  	b  	b  	b$$['6BBBBBr   )__name__
__module____qualname__r   r   r+   rC   rJ   staticmethodrO   rS   __classcell__)r   s   @r   r   r      s        Z Z Z Z Z !" : : : : : : :  'A 'A 'AR  0 	 	 \	C C C C C C Cr   r   N)__doc__cmf.include
cmf.modelsr   loggingwarningr'   r   r7   r   r   <module>r^      s                     	tC tC tC tC tCY tC tC tC tC tCr   