
    B
d                     L    d Z ddl ddlmZ ej
                  Z G d de      Zy)uS   
"Клей" для связи почтового ящика с воронками.
    )*)	CmfEntityc                   V     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                 *    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    w*,/YYY    r   )depthc                   t        | j                        dkD  r4| j                  j                  r| j                  d   j                  | _        | j
                  j                         j                  rW| j                  j                  sAt        j                  | j                  d|       | _        | j
                  j                          t        | $  |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~~"tyy'8'8q)//DI;;%%dii.?.? **		W[*\DKKKw|T99&99r   c                 @   t         j                  j                  dd|gdg      }|r|S t        d|       | j                  j
                  rt        d       t        d      t         j                  || j                        }t        d       |j                          |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K95A==  56  P  Q  Q~~eDMM~JEF		r   c                    t        d|j                         t        j                  j	                  dd|j                  gddddgggdd	g
      }|rt        d||       |S t        d|j
                         t        j                  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                  j                  dd|j
                  g      }t        j                  j	                  dd|D cg c]  }|j                   c}gddddgggg d
      }|r't        d||j                  D cg c]  }| c}       |S t        d|j                         t        d       | j                  r2t        d       t        d       |j                  | j                        S t        d       y c c}w c c}w )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IN)r1   r2   zcontacts.emailu}   Нашли сделку %s по не основному контакту %s, туда и будем писать письмо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   contacts        r   _get_or_create_dealz"CmfLeadMailbox._get_or_create_deal)   s!   ;TWWE~~!!dgg.1DhQY[aPb0cd12 " 4 qswy}~KWY]YmYmn~~!!($0D0DE$h60BCE 12	 " 4
   M  OS  UY  Ui  Ui  jKPRVRfRfg##))'4AUAU1V)W~~!!Th#G7GJJ#GH$h60BCE E	 " F
  Pdmm<7w<> K^`d`g`gh  L  	M==ST  `  a##4==#99  A! $H =s   )G#&	G(c           	      "   d}|rt        d||       |j                  r3|j                  j                  |k(  rt        d||       |j                  }n]|j                  j                  rGt        d||       |j                  D ]+  }|j                  j                  s|j                  |k(  s*|}- |s/t        d|       t
        j                  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'   r7   r   r4   
is_definedr   r8   r&   	cmf_alertr(   )r   r   r;   r<   sec_contacts        r   _get_contactzCmfLeadMailbox._get_contactR   s   PRVX]^##(<(<(B(Be(Kxz~  AF  G..))prvx}~#'== .K"((338I8IU8R"-. tv{|&&**7D%2H*IGv[qJQUW 	2GUCr   c                     d}| j                   j                  rt        d       |dc| _         }| j                  j                  rt        d       |dc| _        }|r| j	                          y y )NFu;   Обновляем отстутствующий person_fromTu@   Обновляем отсутствующего родителя)person_fromr   r'   r   r   )channel_msgr<   r   dirtys       r   _update_channel_messagez&CmfLeadMailbox._update_channel_messagej   si    ""**OP-4d*K#U%%TU(.%K r   c                 J   | j                  dg       | j                  |j                        }|J d       | j                  |      }| j	                  |j                  |      }t        d|du       ||n|}t        d|       t        d||       | j                  |||       y)ua    Создание лидов на основе писем на специальную почту r(   NuI   Не нашлось лида и не удалось его создатьu1   Итак найденность сделки = %su$   Выбрали родителем %su   Обновляем данные в channel_message, используемом вместо коммента! author=%s parent=%s)load_fieldsr+   	client_idr=   rD   r'   rI   )r   rG   r*   r;   r<   r   s         r   receive_emailzCmfLeadMailbox.receive_emailv   s     	*&''(=(=>l!ll''-##K$9$94@A4tCST Ld4f=  P  RY  [a  	b$$['6Br   )__name__
__module____qualname__r   r   r+   r=   rD   staticmethodrI   rM   __classcell__)r   s   @r   r   r      s>    Z !" :'AR0 	 	Cr   r   N)__doc__cmf.include
cmf.modelsr   loggingwarningr'   r    r   r   <module>rY      s-       	tCY tCr   