U
    $-d"                     @   s4   d dl Z d dlT d dlmZ G dd dejjZdS )    N)*fieldsc                       s   e Zd Zi Zeeje	j
dgZeed< ejf eZdd Zdd Z fddZedd
dZedddZ fddZ  ZS )CmfChannelCallzmodules/voip/templatesloaderc              	   C   s  dd| j g}td|  tjj|dddgd}td|  |d kr| jdkrf| jj}| j	j}n| jj}| j	j}tj
j|d	g|d
}|sd S tj|jd d| jd}| jdkr| j|_ntj|_td|  | |_d }t| j | jdkrX| jdkr.| jr(d| jj d| jj d}nd}n(| jdkrd| jjj d| jj d}nt| jdkr| jrd| jj d| jj d| jjj d| jj d	}nd}n(| jdkrd| 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
   Zlog_typedealoutz_audit_call new comment )CALLINGZANSWERu1   Входящий вызов сотруднику z ()u&   Входящий вызов общийu.   Исходящий вызов на номер u7   Пропущенный вызов сотруднику u   ) от u,   Пропущенный вызов общийu.   Неудачный вызов на номер )idgdebugmodels
CmfCommentget	call_flowZ	caller_idvalueZ	called_idZCmfChatGroupZp2p_chatr   r
   callerr	   Zsystem_personchannel_callcall_statuscallednamephone_internalphonenumber_e164textZ
is_changedsave)self_filtercommentr   r   ZchatZcomment_text r*   )./modules/voip/models/cmf_channel_call.py_audit_call   sP    



2zCmfChannelCall._audit_callc                 C   s  | j r
d S | jdkr| j}n| j}|jr,d S dg}| ddg | jrf|dddgdd| jjjgg | jr|dddgd	d| jjjgg d }| j	j
j|d
gdgdD ]}|j r|j jdkr|} qqtd|  |r|j }nd }tjjdd|jggd
gdgdD ]}|jdkr|} q&q|r2|}nLtj|jj| jj  | jj| jd}|  tjjdd|jgd}|r~|}td|  || _ d S )Nr   ORcaller.phonecalled.phoner   r   Zcaller_id_numr   called_numberz-cmf_modified_atzparent.cache_status_type)r   Zorder_byr   ZCLOSEDz
last_call=ZcontactsINcache_status_type)Zlead_phone_namer
   r%   channelZlead_idr   z_process_parent: )r
   r   r   r    
user_localload_fieldsappendr#   r$   dpZmodellistr2   r   r   r   ZCmfDealr   ZCmfLeadr3   loadr!   r&   r   )r'   Zcontactr(   Z	last_callZcallr
   Z	last_dealr   r*   r*   r+   _process_parent=   sL    
  $
 zCmfChannelCall._process_parentc                    sN   | j s| jr|   ntd| j  t j||}| j rJ| jrJ|   |S )Nu$   Неизвестный звонок )	r   r    r;   r   r   call_log_rawsuperr&   r,   )r'   argskwargsres	__class__r*   r+   r&   l   s    
zCmfChannelCall.saver   c           	      C   s   t d | j|dgd}|s0| |||||d}||_|jdkr|jjrd|rdtjj	|dddgd	|_|j
jr|rtj||_
n>|jjr|rtj||_|j
jr|rtjj	|dddgd	|_
|jdgd
 |S )ua   
        Фиксируем звонок
        Минимальные значения
        process_callz**)call_idr   )r3   rD   r<   r   r   r   r5   r   Fr4   r   )r   r   r   r   r   r   is_nullr   Z	CmfPersonZget_or_create_by_phoner    Zget_by_phoner&   )	clsr0   Zcaller_numberrD   r<   r3   r   r   r   r*   r*   r+   rC   v   s0    
  
zCmfChannelCall.process_call)	file_datac           
   
   C   sv  |  ddddddddg tjjj }| jjr:| j  | j	d	krb| 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| | _td| j  || jj}|jdddd |j|dd tjj| j dgd}| j!"d}t#d| j |j$d}	|j%f |	|_$t|j$ | &  |&  d S )Nr   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)Zbackupr%   )r   r   zrecord.htmlz/files)Zurlr%   )'r6   r   ZCmfRFiler8   Zdata_driverZget_rdZ
event_timerE   Zset_nowr   r    r"   r   r   r#   r$   strftimerK   configPROJECT_DIR
class_namedatetimedateZtodayZrecord_pathr   r   Z	get_rfileZcreatewriter   r   r   
_jinja_envZget_templatedictr%   Zrenderr&   )
r'   rG   ZrdiskZ
called_numZ
caller_num	file_nameZrfiler)   templatecontextr*   r*   r+   upload_record   s@    



*,zCmfChannelCall.upload_recordc                    s   t   dddddg S )Nr
   r/   rI   r.   rJ   )r=   save_preload_fields)r'   rA   r*   r+   r^      s    z"CmfChannelCall.save_preload_fields)r   )__name__
__module____qualname__Z_optionsZjinja2ZFileSystemLoaderospathjoinrR   rS   Z_loaderZEnvironmentrX   r,   r;   r&   classmethodrC   bytesr]   r^   __classcell__r*   r*   rA   r+   r      s   0/
%r   )rU   Zcmf.includeZcmfr   r   ZCmfModelr   r*   r*   r*   r+   <module>   s   