B
    Zf"                 @   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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loaderTc          	   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_idz==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 }x8| j	j
j|d
gdgdD ]}|j r|j jdkr|}P qW td|  |r|j }nd }x<tjjdd|jggd
gdgdD ]}|jdkr|}P qW |r4|}nLtj|jj| jj  | jj| jd}|  tjjdd|jgd}|r|}td|  || _ d S )Nr
   ORzcaller.phonezcalled.phoner   z==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listr.   r   r   r   ZCmfDealr   ZCmfLeadr/   loadr   r$   r   )r%   Zcontactr&   Z	last_callZcallr   Z	last_dealr   r(   r(   r)   _process_parent>   sH    
  &zCmfChannelCall._process_parentc                sN   | j s| jr|   ntd| j  t j||}| j rJ| jrJ|   |S )Nu$   Неизвестный звонок )	r   r   r6   r   r   call_log_rawsuperr$   r*   )r%   argskwargsZres)	__class__r(   r)   r$   m   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   )r/   r=   r7   r   r   r
   r0   z==F)r	   )r   )r   r   r   r   r   r   is_nullr   Z	CmfPersonZget_or_create_by_phoner   Zget_by_phoner$   )	clsr,   Zcaller_numberr=   r7   r/   r   r   r   r(   r(   r)   r<   w   s&    

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   statuszcalled.phonezcaller.phonezcalled.phone_internalz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#   )'r1   r   ZCmfRFiler3   Zdata_driverZget_rdZ
event_timer>   Zset_nowr   r   r    r   r   r!   r"   ZstrftimerB   configPROJECT_DIR
class_namedatetimeZdateZtodayZrecord_pathr   r   Z	get_rfileZcreatewriter   r   r   
_jinja_envZget_templatedictr#   Zrenderr$   )
r%   r@   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   zcalled.phonezcalled.phone_internalzcaller.phonezcaller.phone_internal)r8   save_preload_fields)r%   )r;   r(   r)   rS      s    z"CmfChannelCall.save_preload_fields)r   )__name__
__module____qualname__Z_optionsZjinja2ZFileSystemLoaderospathjoinrH   rI   Z_loaderZEnvironmentrM   Z	api_allowr*   r6   r$   classmethodr<   bytesrR   rS   __classcell__r(   r(   )r;   r)   r      s   0/
%r   )rK   Zcmf.includeZcmfr   r   ZCmfModelr   r(   r(   r(   r)   <module>   s   