
    Zf"                     R    d dl Z d dlT d dlmZ  G d dej        j                  ZdS )    N)*fieldsc                        e Zd Zi Ze                    ej                            e	j
        d          g          Zeed<    ej        di eZdZd Zd Z fdZedd            Zd	efd
Z fdZ xZS )CmfChannelCallzmodules/voip/templatesloaderTc           	         dd| j         g}t                              d|            t          j                            |g d          }t                              d|            || j        dk    r| j        j        }| j	        j        }n| j        j        }| j	        j        }t          j
                            |dg|          }|sd S t                              |j        d	         d
| j                  }| j        dk    r| j        |_        nt          j        |_        t                              d|            | |_        d }t                              | j                   | j        dv ra| j        dk    r(| j        rd| j        j         d| j        j         d}nd}n| j        dk    r"d| j        j        j         d| j        j         d}n| j        dk    rG| j        r=d| j        j         d| j        j         d| j        j        j         d| j        j         d	}n0d}n-| j        dk    r"d| j        j        j         d| j        j         d}t                              d|            ||_        |j        r|                                 t                              d|j                     t                              d|j        j                     d S )Nchannel_call_id==z_audit_call )zparent.responsible
cmf_authorparent)filterr   intopics)
contact_idr   	person_idr      )r   log_typedealoutz_audit_call new comment )CALLINGANSWERu1   Входящий вызов сотруднику z ()u&   Входящий вызов общийu.   Исходящий вызов на номер u7   Пропущенный вызов сотруднику u   ) от u,   Пропущенный вызов общийu.   Неудачный вызов на номер )idgdebugmodels
CmfCommentget	call_flow	caller_idvalue	called_idCmfChatGroupp2p_chatr   r   callerr   system_personchannel_callcall_statuscallednamephone_internalphonenumber_e164text
is_changedsave)self_filtercommentr   r   chatcomment_texts          )./modules/voip/models/cmf_channel_call.py_audit_callzCmfChannelCall._audit_call   sd   $dDG4	(w(()))#''w?m?m?m'nn	(w(()))?~%%!^1
 N0		 N0	!^1
&//:xjdm/nnD ''t{1~PTP['\\G~&&%)[""%&_"GG8w88999#	 !!!444~%%; M $IW[WbWg  $I  $Ikokv  lF  $I  $I  $ILL#LLL5((  EPTP[PaPm   E   Equq|  rB   E   E   E~%%; S$`]a]h]m $` $`quq|  rL $` $`+/;+<+H$` $`LPKL\$` $` $`LL $SLL5((  EPTP[PaPm   E   Equq|  rB   E   E   E	-|--...# 	LLNNN	+wz++,,,	8w368899999    c                 *   | j         rd S | j        dk    r| j        }n| j        }|j        rd S dg}|                     ddg           | j        r+|                    g ddd| j        j        j        gg           | j        r+|                    g dd	d| j        j        j        gg           d }| j	        j
                            |d
gdg          D ]}|j         r|j         j        dk    r|} nt                              d|            |r|j         }nd }t          j                            dd|j        ggd
gdg          D ]}|j        dk    r|} n|r|}nt                              |j        j        | j        j                                         | j        j        | j                  }|                                 t          j                            dd|j        g          }|r|}t                              d|            || _         d S )Nr   ORcaller.phonecalled.phone)r    r   r   caller_id_numr   )r    r   r   called_numberz-cmf_modified_atzparent.cache_status_type)r   order_byr   CLOSEDz
last_call=contactsINcache_status_type)lead_phone_namer   r/   channellead_idr   z_process_parent: )r   r    r&   r*   
user_localload_fieldsappendr-   r.   dpmodellistrD   r   r   r   CmfDealr   CmfLeadrF   loadr+   r1   r   )r2   contactr3   	last_callcallr   	last_dealr   s           r7   _process_parentzCmfChannelCall._process_parent>   su   ; 	F>T!!kGGkG 	F&..9:::; 	pNN555t{O`Ol7mnooo; 	qNN666$PTP[PaPm8noppp	GM&&gAS@T^x]y&zz 	 	D{ t{<HH 		(Y(())) 	"%FF I++Jwzl3S_q^r  }P  |Q+  R  R  )X55 $IE 6  ""8QZ^ZfZmZrZrZtZt-1\-> ( V V~)))T691M)NN "!F	,F,,---r9   c                    | j         s| j        r|                                  n"t                              d| j                     t                      j        |i |}| j         r| j        r|                                  |S )Nu$   Неизвестный звонок )	r&   r*   rV   r   r   call_log_rawsuperr1   r8   )r2   argskwargsres	__class__s       r7   r1   zCmfChannelCall.savem   s    ; 	P$+ 	P  """"GGN4;LNNOOOegglD+F++; 	4; 	
r9   r   c                    t                               d           |                     |dg          }|s | |||||          }||_        |j        dk    ri|j        j        r*|r(t          j        	                    |g d          |_        |j
        j        r&|r$t          j                            |          |_
        nh|j        j        r&|r$t          j                            |          |_        |j
        j        r*|r(t          j        	                    |g d          |_
        |                    dg           |S )	ua   
        Фиксируем звонок
        Минимальные значения
        process_callz**)call_idr   )rF   r`   rX   r    r)   r   )rI   r   FrH   r   )r   r   r   r)   r    r&   is_nullr   	CmfPersonget_or_create_by_phoner*   get_by_phoner1   )	clsr?   caller_numberr`   rX   rF   r    r)   r(   s	            r7   r_   zCmfChannelCall.process_callw   s{    	
wwwvw>> 	h3w,8I[fh h hL#. !T))"* r} r&,&6&M&MmUpUpUp 'N 'r 'r#"* S} S&,&6&C&CM&R&R#"* S} S&,&6&C&CM&R&R#"* r} r&,&6&M&MmUpUpUp 'N 'r 'r#$(((r9   	file_datac                    |                      g d           t          j        j        j                                        }| j        j        r| j                                         | j	        dk    r+| j
        j        j        }| j        j        j        dd          }n*| j
        j        j        dd          }| j        j        j        }| j        j                            d           d| d| j        j         d| d}t$          j         d| j         dt*          j                                                            d	           d| | _        t2                              d
| j                    |                    | j        j                  }|                    ddd           |                    |d           t          j                            | j         dg          }| j!        "                    d          }tG          d| j         |j$                  }	 |j%        di |	|_$        t2                              |j$                   | &                                 |&                                 d S )N)r   statusr=   r<   called.phone_internalcaller.phone_internalcalled_d_idr   r   r   z%Y%m%d_%H%M%S_z.mp3z/files/obj//z%Y%mu    Сохраняем запись FT)is_direxist_okparents)backupr/   )r
   r   zrecord.htmlz/files)urlr/    )'rJ   r   CmfRFilerL   data_driverget_rd
event_timera   set_nowr    r*   r,   r"   r&   r-   r.   strftimerl   configPROJECT_DIR
class_namedatetimedatetodayrecord_pathr   r   	get_rfilecreatewriter   r   r   
_jinja_envget_templatedictr/   renderr1   )
r2   rg   rdisk
called_num
caller_num	file_namerfiler4   templatecontexts
             r7   upload_recordzCmfChannelCall.upload_record   sb   	 	 		
 	
 	
 ".5577?" 	&O##%%%>T!!39J*6qrr:JJ*6qrr:J39J,55oFFVZVfVloy	$0  D  DT_  D  Dx}ObObOdOdOmOmntOuOu  D  D  yB  D  D	E43CEEFFF 0 677ED$???Ie,,,#'''QQ?//>>6D$466W\JJJ&x1111			r9   c                 N    t                                                      g dz   S )N)r   r=   rj   r<   rk   )rY   save_preload_fields)r2   r]   s    r7   r   z"CmfChannelCall.save_preload_fields   s4    ww**,,  0L  0L  0L  L  	Lr9   rt   )r   )__name__
__module____qualname___optionsjinja2FileSystemLoaderospathjoinr{   r|   _loaderEnvironmentr   	api_allowr8   rV   r1   classmethodr_   bytesr   r   __classcell__)r]   s   @r7   r   r      s       H%%rw||F4FH`'a'a&bccG HX##//h//JI.: .: .:`- - -^        [:#u # # # #JL L L L L L L L Lr9   r   )r~   cmf.includecmfr   r   CmfModelr   rt   r9   r7   <module>r      sy              tL tL tL tL tLSZ( tL tL tL tL tLr9   