
    8f"                     `    d dl Z d dl d dlmZ  G d dej                  j
                        Zy)    N)*fieldsc                        e Zd Zi Zej                  ej                  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           	      B   dd| j                   g}t        j                  d|        t        j                  j                  |g d      }t        j                  d|        || j                  dk(  r-| j                  j                  }| j                  j                  }n,| j                  j                  }| j                  j                  }t        j                  j                  |dg|      }|sy t        j	                  |j                  d	   d
| j                        }| j                  dk(  r| j                  |_        nt        j                   |_        t        j                  d|        | |_        d }t        j                  | j$                         | j$                  dv r| j                  dk(  rC| j&                  r3d| j&                  j(                   d| j&                  j*                   d}n"d}n| j                  dk(  rd| j&                  j,                  j.                   d| j&                  j(                   d}n| j                  dk(  ry| j&                  rjd| j&                  j(                   d| j&                  j*                   d| j                  j,                  j.                   d| j                  j(                   d	}nMd}nJ| j                  dk(  r;d| j&                  j,                  j.                   d| j&                  j(                   d}t        j                  d|        ||_        |j2                  r|j5                          t        j                  d|j                           t        j                  d|j"                  j                           y )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   sJ   $dDGG4	,wi()##''w?m'n	,wi()?~~%!^^11
 NN00	 NN00	!^^11
&&//:xjdm/nD''t{{1~PTP[P['\G~~&%)[["%&__"GG.wi89#	  !44~~%;;%VW[WbWbWgWgVhhjkokvkv  lF  lF  kG  GH  $IL%KL5(!OPTP[P[PaPaPmPmOnnpquq|q|  rB  rB  qC  CD   E~~%;;%\]a]h]h]m]m\nnpquq|q|  rL  rL  qM M++/;;+<+<+H+H*IDKKL\L\K]]^$`L &RL5(!OPTP[P[PaPaPmPmOnnpquq|q|  rB  rB  qC  CD   E	,|n-.#LLN	,wzzl+,	,w3366789    c                    | j                   ry | j                  dk(  r| j                  }n| j                  }|j                  ry dg}| j                  ddg       | j                  r6|j                  g ddd| j                  j                  j                  gg       | j                  r6|j                  g dd	d| j                  j                  j                  gg       d }| j                  j                  j                  |d
gdg      D ],  }|j                   s|j                   j                  dk7  s*|} n t        j                  d|        |r|j                   }nd }t        j                   j                  dd|j"                  ggd
gdg      D ]  }|j                  dk7  s|} n |r|}nt        j%                  |j                  j                  | j&                  j                   j)                         | j&                  j*                  | j&                        }|j-                          t        j                   j/                  dd|j"                  g      }|r|}t        j                  d|        || _         y )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>   s1   ;;>>T!kkGkkG&..9:;;NN5t{{O`O`OlOl7mno;;NN6$PTP[P[PaPaPmPm8nop	GGMM&&gAS@T^x]y&z 	D{{t{{<<H 		
 	
*YK()%%F I++Jwzzl3S_q^r  }P  |Q+  R ))X5 $I "8Q8QZ^ZfZfZmZmZrZrZt-1\\->-> ( V~~)))T6991M)N!F	#F8,-r9   c                    | j                   s| j                  r| j                          n"t        j	                  d| j
                          t        |   |i |}| j                   r| j                  r| j                          |S )Nu$   Неизвестный звонок )	r&   r*   rV   r   r   call_log_rawsuperr1   r8   )r2   argskwargsres	__class__s       r7   r1   zCmfChannelCall.savem   sh    ;;$++  "GG:4;L;L:MNOglD+F+;;4;;
r9   c                    t         j                  d       | j                  |dg      }|s | |||||      }||_        |j                  dk(  r}|j
                  j                  r*|r(t        j                  j                  |g d      |_        |j                  j                  r|rt        j                  j                  |      |_
        n||j
                  j                  r&|r$t        j                  j                  |      |_        |j                  j                  r*|r(t        j                  j                  |g d      |_
        |j                  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>w,8I[fhL#. !!T)""**}&,&6&6&M&MmUp 'N 'r#""**}&,&6&6&C&CM&R#""**}&,&6&6&C&CM&R#""**}&,&6&6&M&MmUp 'N 'r#$(r9   	file_datac                    | j                  g d       t        j                  j                  j                  j                         }| j                  j                  r| j                  j                          | j                  dk(  rD| j                  j                  j                  }| j                  j                  j                  dd  }nC| j                  j                  j                  dd  }| j                  j                  j                  }| j                  j                  j!                  d       d| d| j"                  j                   d| d}t$        j&                   d| j(                   dt*        j,                  j/                         j!                  d	       d| | _        t2        j5                  d
| j0                          |j7                  | j0                  j                        }|j9                  ddd       |j;                  |d       t        j<                  j?                  | j@                  dg      }| jB                  jE                  d      }tG        d| j0                   |jH                        }	 |jJ                  di |	|_$        t2        j5                  |jH                         | jM                          |jM                          y )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   s;   		
 ""..557??""OO##%>>T!3399J**66qr:J**66qr:J3399J,,55oFGqTUVZVfVfVlVlUmmnoynzz~	$001T__<MQx}}ObObOdOmOmntOuNvvw  yB  xC  D	243C3C2DEF 0 0 6 67ED$?Ie,##'''Q??//>VD$4$4#56W\\J&x11			r9   c                 *    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   s     w*,  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%%rww||F4F4FH`'a&bcG HX###/h/JI.:`-^  :#u #JL Lr9   r   )r~   cmf.includecmfr   r   CmfModelr   rt   r9   r7   <module>r      s(      tLSZZ(( tLr9   