
    X(i$#                     `    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dej                  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 )CmfChannelCall
autoescapez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   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?   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,-r:   c                    | j                   s| j                  r| j                          n"t        j	                  d| j
                          t        |   |i |}| j                   r| j                  r| j                          |S )Nu$   Неизвестный звонок )	r'   r+   rW   r   r   call_log_rawsuperr2   r9   )r3   argskwargsres	__class__s       r8   r2   zCmfChannelCall.saven   sh    ;;$++  "GG:4;L;L:MNOglD+F+;;4;;
r:   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   )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>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#$(r:   	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)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   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			r:   c                 *    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   s     w*,  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9:H%%rww||F4F4FH`'a&bcG HX###/h/JI.:`-^  :#u #JL Lr:   r   )r   cmf.includecmfr   r   CmfModelr   ru   r:   r8   <module>r      s(      uLSZZ(( uLr:   