HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //home/arjun/projects/buyercall/buyercall/blueprints/mobile/__pycache__/views.cpython-310.pyc
o

�we4��@svddlZddlZddlZddlZddlmZmZddlmZm	Z	m
Z
ddlmZddl
m
Z
mZddlmZddlmZddlmZmZmZmZmZmZmZmZdd	lmZdd
lm Z m!Z!ddl"m#Z#m$Z$m%Z%m&Z&ddl'm(Z(m)Z)m*Z*dd
l+m,Z,ddl-m.Z.m/Z/m0Z0m1Z1m2Z2ddl3m4Z4ddl5m6Z6ddl7m8Z8m9Z9ddl:m;Z;m<Z<m=Z=ddl>m?Z?m@Z@ddlAmBZBddlCmDZDddlEmFZFmGZGddlHmIZIddlJmKZKdZLedeMdd�ZNe�OeM�ZPed�ZQdd�ZRd d!�ZSd"d#�ZTeNjUd$d%d&gd'�eFjVd(d)���ZWeNjUd*d%d&gd'�eFjVd+d,���ZXeNjUd-d&d%gd'�e eDd.�d/d0����ZYeNjUd1d%d&gd'�eFjVd2d3���ZZeNjUd4d%gd'�eFjVd5d6���Z[eNjUd7d%d&gd'�eFjVd8d9���Z\eNjUd:d%gd'�eFjVd;d<���Z]eNjUd=d&gd'�eFjVd>d?���Z^eNjUd@d&gd'�eFjVdAdB���Z_eNjUdCd&gd'�eFjVdDdE���Z`eNjUdFd%d&gd'�eFjVdGdH���ZaeNjUdId%d&gd'�eFjVdJdK���ZbeNjUdLd%gd'�eFjVdMdN���ZcdS)O�N)�	unhexlify�crc32)�Cipher�
algorithms�modes)�default_backend)�datetime�	timedelta)�tz)�timezone)�url_for�redirect�flash�	Blueprint�request�Response�render_template�jsonify)�gettext)�login_required�current_user)�and_�desc�or_�case)�null�func�	union_all��Agent)�Contact�ContactNotes�BdcStatuses�Status�MarketingSources)�format_phone_number_bracket)�FormLead)�Endpoint�Domain)�get_sip_endpoint�	is_iphone�validate_phonenumber)�Lead�Phone)�Message)�
role_required)�csrf�db)�choices_from_dict)�	bw_client�	bandwidth�mobile�	templates)�template_folderz
US/EasterncCs�tj�tj|k���}tj�tj|jk���}ddlm}|j�|j|j	k���}t
|j�}t�||j||j
|j|j�|jdkrU|jj|j|j|j
|jd|jid�}|St�d�dS)Nr)�Partnershipr4�password)�	domain_id�endpoint_id�description�enabled�credentialsz)The provider does not have a sip endpoint)r'�query�filter�id�firstr(r:�'buyercall.blueprints.partnership.modelsr8�partnership_idr3�update�partnership_account_idr<r=�agent_id�provider�domains�update_endpoint�provider_id�sip_password�log�info)�id_rL�endpoint�domainr8�partner�client�bw_endpoint�rU�C/home/arjun/projects/buyercall/buyercall/blueprints/mobile/views.pyrJ*s$
�
�rJc
C�|t|�}dt|�}tt�|�t�|�t�d�}|��}|�	�}d}|s)t
�d�|�|�}t
||�}|}	td�|��|	S�N�)�backendrz.There is no encrypted file_in file to decrypt zHash: {}�r�lenrr�AESr�CTRr�	decryptor�readrMrNrEr�print�format�
�media�encrypt_key�key�nonce�cipher�dec�file_in�crc�	dec_block�decrypted_filerUrUrV�
encrypt_mediaG�


rnc
CrWrXr[rcrUrUrV�
decrypt_media_rorpz/mobile/contacts/�GET�POST)�methodscCsLddlm}tj}|d}t�d�|d��|d}ztjd}Wnty@}zt�d�t	�
��d�}WYd}~nd}~wwt�d	�|���z?tj
�ttj|ktj|k����}tj
�tj|jk���}tj
�ttj|jktj�d
����tj|jk��ttj����}|dj�d�}	t�}
d}|D]�}d}
|j r�d}d
}|j!s�|j"r�|j"}|}
n |j!s�|j"s�|j#}|}
n|j!}n|j$}|j%}|j!}|d|j&}
|d}t'|�dk�r(t'|j#�dk�r(ddd|j#d�ddd|j(d�ddd|j)d�g}gd�}|j$|j%|j*d|j+||j|j,d|
|j!|j&d|j-|j.|j/g}dd�t/||�D�}|
�0|�q�t�d�|
��d|
i}tj1|t2d�}t�d�|��|j
�|j|jk���}|j3du�rYd}n|j3}||	k�ri||k�rid }n
d!}||_3t4j5�6�t7||d"d#�}|	|jd$<t�d%�|��|WSt�y�}zt�8d&�|��WYd}~dSd}~ww)'Nrr�usernamez.The username return by the fetch request is {}r9zIf-Modified-Sincez*Something went from with the modified datez%a, %d %b %Y %H:%M:%S GMTzThe last modified date is: {}F�zIhttps://buyercall-logo.s3-us-west-2.amazonaws.com/contact_placeholder.pngzOhttps://buyercall-logo.s3-us-west-2.amazonaws.com/contact_placeholder_large.png� �ztel:0zphone 1�tel)�entryId�label�type�uriztel:1zphone 2zemail:1�email)�avatar�largeAvatar�birthday�checksum�city�contactEntries�	contactId�country�countryCode�displayName�fname�lname�notes�state�street�zip�uscSsi|]\}}||�qSrUrU)�.0rf�valuerUrUrV�
<dictcomp>��zcontacts.<locals>.<dictcomp>zThe contact list looks like: {}�contacts)�defaultz*The response body sent to Acrobits are: {}i0��zapplication/json; charset=utf-8)�response�status�mimetypez
Last-Modifiedz3The status is {} for the mobile contact web servicezBSomething went from with the contacts post heres the exception: {})9�"buyercall.blueprints.agents.modelsrr�jsonrMrNrb�headers�	Exceptionr�now�strftimer'r?r@r�sip_usernamerLrBr(rAr:r rF�is_deactivated�is_rG�order_byr�
updated_on�all�list�default_domain�	firstname�	caller_id�
phonenumber_1r~�large_avatar�lastnamer\�
phonenumber_2r}r�r�r�r��	address_1r��append�dumps�str�
contact_countr1�session�commitr�debug)r�argsr�rL�request_last_date�e�sip_endpoint�
sip_domain�sip_contacts�last_updated�
contacts_list�total_contacts�contact�display_namer~r��
first_name�contact_entries�key_list�
value_list�dicti�d�	json_data�agentr�r��contact_responserUrUrVr�ws�
��
���
��
�������
��

��r�z/mobile/voicemail/c	Cs�tj�dd�}tj�dd�}t||�\}}|rP|j}tj�tj|j	k��
�}|r.t|j�}nd}t
j�tt
j	|j	kt
jdkt
jdk���t
j����d���}nd}d}g}t��}t��}	t�}
t�}|D]s}|j|_t|j�|_|j}
|
j|d�}
|
�|	�}|jj}t�|�t dd	�}|jr�d
dl!m"}||j�}|r�|dr�|d
r�d
dl!m#}||d|d
d�|_|j|kr�|�t$��%d�|_|
�&|�qf|�t$��%d�|_|�&|�qft't�r�dnd}t(||||
||t$d�S)Nrtrur9�unavailable�missed���tzinfo�)�daysr)�get_recording_url_detailsrf�bucket)�generate_presigned_aws_urlTz%d %b, %Y at %H:%M:%S ESTzmobile/voicemail_ios.jinja2zmobile/voicemail_android.jinja2)�phone_number�vm�	vm_recent�vm_older�call_uri�	time_zone))rr��getr)r�r-r?r@rA�
inbound_idrBr%�phonenumberr,rr��
recording_urlr��
created_onr�limitr�r
�tzutc�tzlocalr��
action_number�replace�
astimezoner�rr�r	�buyercall.lib.util_boto3_s3r�r�r�r�r�r*r)rtr9r�r�r��inbound�sip_phone_number�vm_calls�	from_zone�to_zone�vm_list_recent�
vm_list_older�i�utc_date�
local_date�tz_info�date_nowr��recording_detailsr��
template_namerUrUrV�	voicemail�sl���


��r�z?/inbound/<int:inbound_id>/mobile-app-email-instructions/<email>�adminc
Csxtj}tj�ttj|ktj|ktj�d����	�}t
j�d�}t
j�d�}|r^|r^|r^t
��jdd����dd��dd��d	d
�}t�|j|||j|j|�}|s^tdd�ttd
|d��Sz3tj�ttj|ktj�d����	�}ddlm}	|	�|j|j||�ttd�|��d�ttd��WSt y�}
zt!�"d|
�d��ttd�d�ttd
|d��WYd}
~
Sd}
~
ww)NF�reset�mobile_agent_id��0�X�o�Yr��EzVAn error occurred while resetting the password. Please contact support for assistance.�dangerz!phonenumbers.install_instructions)rArw)�send_mobile_app_info_emailz=The mobile app instructions email was successfully sent to {}�successzphonenumbers.inbound_listz[Something went wrong while trying to send the mobile app instructions email. The error is: rvz�Something went wrong while trying to send the mobile app instructions email. Please contact support for assistance or please try again.)#rrFr'r?r@rr�r�r�rBrr�r��uuid�uuid4�hex�lowerr��
api_updaterAr<r=rr
rr-�tasksr��delayr��_rbr�rM�error)r�r}rFr��reset_password�new_agent_id�new_password�new_endpointr�r�r�rUrUrV�send_mobile_app_info-sF

���.
�
$����r
z/mobile/contact_leads/detailcCszt�dtj���tj�dd�}tj�dd�}t||�\}}tt�r$dnd}|r+|jnd}t�	|�}t
|dd�|D�d	�S)
N�
form data:rtrur9zmobile/contact_ios.jinja2zmobile/contact_android.jinja2cS�i|]}|j|j�qSrU�r�r��r��itemrUrUrVr�_r�z!contact_leads.<locals>.<dictcomp>)�status_choices)rMrNrr�r�r)r*rFr#�get_assigned_status_listr)rtr9r��_sip_domainr�rF�status_listrUrUrV�
contact_leadsRs�
�rz/mobile/contact_leads_list/cCst�dtj���tj�dd�}tj�dd�}tj�dd�}tj�dd�}tj�dd�}tj�dd�}tj�d	d�}tj�d
d�}t||�\}}	|	r�|	j}
tj�	t
tj|jktj�
d���}|dkrk|�	tjdk�}n	|�	tj|jk�}|r�d
|�d
�}|�	ttj�|�tj�|�tj�|���}|dkr�|�	tj|k�}|r�|�	tj|k�}|r�|r�t�|d�jtd�d�}t�|d�jtd�d�}|�	t
t�tj�|kt�tj�|k��}|�ttj���d�� �}
nd}
g}
t�d|
���t!t�r�dnd}t"t#||
t�$���t%d�|
d��S)Nrrtrur9�searchr�r��
start_date�end_date�unassigned_agentF�true�%z	no statusz%m/%d/%Y�UTCr��zsip contacts :z"mobile/api/contact_list_ios.jinja2zmobile/api/contact_list.jinja2)r��todayr�)�html_contentr�)&rMrNrr�r�r)r�r r?r@rrFr�r�rGr�name�iliker�r}r�r�strptimer�rr�dater�r�rr�r�r�r*rrr r�)rtr9rr�r�rrrr�r�r��contacts_query�patternr�r�rUrUrV�contact_leads_listcs�
���
�


������
���r(z&/mobile/contact_notes/<int:contact_id>cCstt�rdnd}t|�S)Nzmobile/contact_note_ios.jinja2z"mobile/contact_note_android.jinja2)r*rr)�
contact_idr�rUrUrV�
contact_notes�s��r*z+/mobile/contact_notes_list/<int:contact_id>c	Cs�tj�dd�}tj�dd�}t||�\}}|rGtj�ttj|jktj	�
d�tj|k���t
tj���d���}tj�tj|jk���}|j}ng}d}tt�rQdnd}tdt|||td	�i�S)
Nrtrur9Trz'mobile/api/contact_note_list_ios.jinja2z#mobile/api/contact_note_list.jinja2r!)r��user_idr�)rr�r�r)r!r?r@rrF�
is_enabledr�r)r�rr�r�r�rrArGrBr+r*rrr�)	r)rtr9r�r��sip_contact_notesr�r+r�rUrUrV�contact_note_list�s@
���
������r.z!/mobile/add_note/<int:contact_id>c
Cstj�dd�}tj�dd�}tj�dd�}t�dtj���t||�\}}|r�tj�tj	|j
k���}|jrdt
j�tj�tj	|k������rd||t��t��|jd|jd�}t�|�}|rdtddi�S|sid	}	n|jsxt�d
|j	���d}	nd}	td
|	d��Std
dd��S)Nrtrur9�noterT)�textr)r�r�r+r,rFr�zNo Agent Found.z
Agent id :zNo User Found.�Something Went WrongF�r�rzNo Sip Endpoint found.)r�formr�rMrNr)rr?r@rArGrBr+r1r�r �exists�scalarrr�rFr!�creater)
r)rtr9�	note_textr�rr�r/�result�
error_messagerUrUrV�add_contact_note�sF
�����
	r:z"/mobile/edit_note/<int:contact_id>c
Cs�tj�dd�}tj�dd�}tj�dd�}tj�dd�}t||�\}}d}|rOtj�tj|jk��	�}|rOt
j�t
j|k���rO||t�
�|jdg}	tj|	�}t|dd	��S)
Nrtrur9r/�note_idFTzNo Sip EndPoint Foundr2)rr3r�r)rr?r@rArGrBr r�rr�r+r!rEr)
r)rtr9r7r;r�r�r8r�r/rUrUrV�edit_contact_note�s 
��
r<z!/mobile/delete_note/<int:note_id>cCsHtj�dd�}tj�dd�}t||�\}}d}|rt�|�}td|i�S)Nrtrur9Fr�)rr3r�r)r!�deleter)r;rtr9r�r�r8rUrUrV�delete_contact_notes
r>z/mobile/contact_add/cCs�tj�dd�}tj�dd�}t||�\}}|r�|j}tjdkr�tj��}|�d�r8tj	�
tj|�d�k���}nd}t
|�d��sFddd	�S|�d
�r`t
|�d
��sWddd	�St
|�d
��|d
<t
|�d��|d<|j|d<|rs|jnd|d<|r||jnd|d<d
|d<t�|�}|r�ddiSddd	�Stj	�
tj|jktj�d����}ntjdkr�ddd	�Sg}d}tt�r�dnd}	|r�|jnd}
t�|
�}t�|
�}t�|
�}
t|	||dd�|D�dd�|D�dd�|
D�d�S)Nrtrur9rr�agent_assignedr�F�"Enter a valid 10 digit Phonenumberr2r�rFrGr5�external_source_typer�Tzsomething went wrongzNo Sip Endpoint Found.zmobile/add_contact_ios.jinja2zmobile/add_contact.jinja2cSrrUrrrUrUrVr�Kr�zcontact_add.<locals>.<dictcomp>cSrrUrrrUrUrVr�Lr�cSrrU��sourcer�rrUrUrVr�Mr�)�agents�
current_agent�bdc_status_choicesr�sources_choices)rr�r�r)rG�methodr3�to_dictrr?r@rArBr+rF�	full_namer �
api_creater�r�r�r*r"rr#r$�get_assigned_source_listr)rtr9r�r�rE�datar�r8�
all_agentsr�rF�bdc_status_listr�marketing_listrUrUrV�contact_addsd










��

�


�rQz(/mobile/contact_detail/<int:contact_id>/c
Cstj�dd�}tj�dd�}t||�\}}|r�tjdkr�tj��}t�d|���t	|�d��s5ddd	�S|�d
�rOt	|�d
��sFddd	�St	|�d
��|d
<t	|�d��|d<|�d�sfd|d<d|d<n t
j�t
j
|�d�k���}|ry|j
nd|d<|r�|jnd|d<tj||jfi|��}|r�d
diSddd	�S|j}tj�ttj
|ktj|jktj�d�����}	t
j�t
j|jkt
j�d����}
nd}d}	g}
tt�r�dnd}|r�|jnd}t�|�}
t�|�}t�|�}t||	||
dd�|
D�dd�|D�dd�|D�td�S)Nrtrur9rrzrequest data is: r�Fr@r2r�r?rGr�Tr1z mobile/contact_detail_ios.jinja2zmobile/contact_detail.jinja2cSrrUrrrUrUrVr��r�z"contact_detail.<locals>.<dictcomp>cSrrUrrrUrUrVr��r�cSrrUrBrrUrUrVr��r�)r�r�rDrFrrGr�) rr�r�r)rHr3rIrMrNr+rr?r@rArBrJr �mobile_api_updaterFr�rr�r�r�r*r"rr#r$rLrr�)r)rtr9r�r�rMr�r8r�r�rNr�rFrOrrPrUrUrV�contact_detailQs~






��



���

���


�rSz!/mobile/timeline/<int:contact_id>cCs�tj�dd�}tj�dd�}t||�\}}|�r�tj�t�d��	d�t�d��	d�t
��	d�tj�	d	�t�d
tj
��	d�tj�	d�t
��	d
���ttj|jktj�d�tj|k��}tj�ttjdkdfgdd��	d�ttjdkdftjdkdfgdd��	d�tj�	d�tj�	d	�t�tjdtj��	d�tj�	d�ttjdktjfgt
�d��	d
���tj|ktj|jk�}tj�t�d��	d�ttjdkdftjdkdfgdd��	d�tj�	d�tj�	d	�tttjdktjdk�t�dtj�fttjdktjdk�t�dtj �fttjdktjdk�t�dtj �fttjdktjdk�t�dtj�fgdd��	d�t
��	d�tj!�	d
���tj|jktj|kt"tjdktjd k��}tj�t�d!��	d�t�d"��	d�t
��	d�t#j�	d	�t�d#t#j$��	d�t
��	d�t
��	d
���t#j|jkt#j|k�}|�%|||��&t'd	���(d$��)�}	ng}	t*t��r�d%nd&}
d'd(�|	D�}	d)�+d*�}|	D]#}|ddk�r�|�d
d�}
|D]	}|
�,|d�}
�q�|
�+d*�|d
<�q�t-|
|	t.d+�S),Nrtrur9r/r{z
Note added�titler�r�z	Added by �user�content�content_urlT�mms�message)�else_�receivedzMessage received�sentz
Messsage sentz by �callr�z
Call received�outboundz	Call madezReceived by z
Called by zCalled by  r��	completedr3zForm lead submittedzSubmitted using rzmobile/timeline_ios.jinja2zmobile/timeline.jinja2cSsg|]}|���qSrU)�_asdict)r��rowrUrUrV�
<listcomp>sz$contact_timeline.<locals>.<listcomp>z	",{,},[,]�,)�	timelinesr�)/rr�r�r)r1r�r?r�concatrzrr!r�r"r0r@rrFr,r�r)rr.r{r��message_source�	body_text�	media_urlr,�	call_typer��source_name�agent_full_namer�rr&rCrr�rr�r�r*�splitr�rr�)r)rtr9r�r�r��messages�calls�
form_leads�
time_linesr��	char_list�timeline�media_string�charrUrUrV�contact_timeline�s�



�
�������


���
�� ��

������

�%
��,



�
���
��
��ru)d�loggingr��sysr�binasciirr�&cryptography.hazmat.primitives.ciphersrrr�cryptography.hazmat.backendsrrr	�dateutilr
�pytzr�flaskrr
rrrrrr�flask_babelrr�flask_loginrr�
sqlalchemyrrrr�sqlalchemy.sqlrrrr�r�$buyercall.blueprints.contacts.modelsr r!r"r#r$�buyercall.blueprints.filtersr%�&buyercall.blueprints.form_leads.modelsr&�"buyercall.blueprints.mobile.modelsr'r(�!buyercall.blueprints.mobile.utilsr)r*r+�(buyercall.blueprints.phonenumbers.modelsr,r-�buyercall.blueprints.sms.modelsr.�$buyercall.blueprints.user.decoratorsr/�buyercall.extensionsr0r1�buyercall.lib.util_wtformsr2�buyercall.lib.util_twilior3rH�__name__r5�	getLoggerrMr�rJrnrp�route�exemptr�r�r
rr(r*r.r:r<r>rQrSrurUrUrUrV�<module>s�(
s?"E$
5E