
    1*)i$#                     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dej        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 )CmfChannelCall
autoescapez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   r0   channellead_idr   z_process_parent: )r   r!   r'   r+   
user_localload_fieldsappendr.   r/   dpmodellistrE   r   r   r   CmfDealr   CmfLeadrG   loadr,   r2   r    )r3   contactr4   	last_callcallr   	last_dealr   s           r8   _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,,---r:   c                    | j         s| j        r|                                  n"t                              d| j                     t                      j        |i |}| j         r| j        r|                                  |S )Nu$   Неизвестный звонок )	r'   r+   rW   r   r   call_log_rawsuperr2   r9   )r3   argskwargsres	__class__s       r8   r2   zCmfChannelCall.saven   s    ; 	P$+ 	P  """"GGN4;LNNOOOegglD+F++; 	4; 	
r:   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   )rG   ra   rY   r!   r*   r   )rJ   r   FrI   r   )r   r   r    r*   r!   r'   is_nullr   	CmfPersonget_or_create_by_phoner+   get_by_phoner2   )	clsr@   caller_numberra   rY   rG   r!   r*   r)   s	            r8   r`   zCmfChannelCall.process_callx   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#$(((r:   	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)backupr0   )r   r   zrecord.htmlz/files)urlr0    )'rK   r   CmfRFilerM   data_driverget_rd
event_timerb   set_nowr!   r+   r-   r#   r'   r.   r/   strftimerm   configPROJECT_DIR
class_namedatetimedatetodayrecord_pathr   r   	get_rfilecreatewriter   r    r   
_jinja_envget_templatedictr0   renderr2   )
r3   rh   rdisk
called_num
caller_num	file_namerfiler5   templatecontexts
             r8   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			r:   c                 N    t                                                      g dz   S )N)r   r>   rk   r=   rl   )rZ   save_preload_fields)r3   r^   s    r8   r   z"CmfChannelCall.save_preload_fields   s4    ww**,,  0L  0L  0L  L  	Lr:   ru   )r   )__name__
__module____qualname__APPselect_jinja_autoescape_optionsjinja2FileSystemLoaderospathjoinr|   r}   _loaderEnvironmentr   	api_allowr9   rW   r2   classmethodr`   bytesr   r   __classcell__)r^   s   @r8   r   r      s       c9:H%%rw||F4FH`'a'a&bccG HX##//h//JI.: .: .:`- - -^        [:#u # # # #JL L L L L L L L Lr:   r   )r   cmf.includecmfr   r   CmfModelr   ru   r:   r8   <module>r      sy              uL uL uL uL uLSZ( uL uL uL uL uLr:   