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/widgets/__pycache__/tasks.cpython-310.pyc
o

wey'�@s ddlZddlZddlZddlZddlZddlmZmZddl	m
Z
ddlmZddl
mZmZmZddlmZddlZddlmZddlmZdd	lmZmZdd
lmZddlmZdZe
e�Z e �!�d
d��Z"e j!dd��Z#e j!dd��Z$e j!dd��Z%e j!dd��Z&e j!ddd��Z'dS)�N)�url_for�current_app)�create_celery_app)�db)�CallStorage�InboundCallState�subaccount_client)�Key)�Lead)�Agent)�PartnershipAccount�Partnership)�Contact)�
ses_clienti�Qc
Kstjtjdtjdd�}ddlm}m}t�d�t	j
�t	j��t
j��t	j|k���}|s9t�d�|��dSt
j
�t
j|jk���}tj
�tj|jk���}|jj}|s\|jjj}|jrjt�d�|j��dS|jd	vrvt�d
�dSt||j�}	|	��d|	_dd�t|jj d
d�d�D�}
|
s�t�d�dSd|_|j!d7_!t"j#�$�|jj%dr�t&|j�dS|jj%dr�t'�(|
�|j)}t*||j�}||�}
z|
�+|
|j|�WdSt,�y}zt�-t.�/��d|_t"j#�$�|||j�WYd}~dSd}~ww)N�REDIS_CONFIG_URL�REDIS_CONFIG_PORT��host�port�)�Routing�after_call_eventszTrying to call lead again...zLead {} not available.z0Partnership account {} has exceeded their quota.)�ringing�	completedz!Lead is currently in another callcSsg|]	}|jjr|j�qS�)�agent�
available_now�agent_id)�.0�asgrr�D/home/arjun/projects/buyercall/buyercall/blueprints/widgets/tasks.py�
<listcomp>Hs��zcall_again.<locals>.<listcomp>cSs|jS�N)�order)�xrrr �<lambda>Jszcall_again.<locals>.<lambda>)�keyz*No agents were configured for this widget.r�routeSimultaneously�
routeRandomly�missed)0�redis�StrictRedis�celery�conf�routingrr�log�infor
�query�join�partnership_accountr�partnership�filter�id�first�warning�format�partnership_account_idr
�partnership_id�subscription�usage_over_limit�status�debugr�inc_callback_cntr�sorted�widget�assignments�
call_countr�session�commit�options�
call_parallel�random�shuffle�twilio_subaccount_sidr�route_sequential�	Exception�error�	traceback�
format_exc)�lead_id�kwargs�redis_dbrr�lead�partner_account�partnerr<�storage�	agent_ids�subaccount_sid�client�r�errr �
call_againsf
&�
�

�




��r]cKs�tjtjdtjdd�}ddlm}m}m}t�	d�t
j�t
j
��t
j|k���}tj�tj|jk���}tj�tj|jk���}|j
}	||	�}
td�|
��|
sjt�d�|	j��d	|_tj��|||j
�t||�}tj|_ |�!�d
�|�}d�|�}
d�|�}|�"|
d
t#d�|�"|d
t#d�t$j�t$j�%|
���&�}t�	d�t'|���d}|	j(j)}|s�|	j(j*j)}|j+}t,||j�}||�}|D]h}zC|�-|||	�}|�.��-|j/r�|j/t0|j�kr�|�1�	Wd�WnA|�2|d�|j|j3��Wd�n	1�s	wYWq�t4�y2}zt�t5�6��t�d�|j��WYd}~q�d}~ww|du�s>|j3du�rO|�"|d
t#d�d	|_tj��|�7|d
t#�dS)Nrrrr)rr�get_available_agent_idszParallel call task started.z
Agent ids: {}z&No agents are available for widget {}.r)zLIST{}zSUCC{}z	CONNECT{}��0zCalling {} agents...z{}_{}zError calling agent {}...z-1)8r*r+r,r-r.rrr^r/r0r
r1r2rBr5r6�onerr:r7r
r;�printr9r8r>rrErFr�State�NEW�state�clear_retry_cnt�setex�DAYSr�in_�all�lenr3r<r4rKr�call_agent_parallel�lockr�str�hangup�lpush�sidrMrOrP�expire)rQrRrSrrr^rTrUrVrBrXrW�called_agents_key�lead_capture_key�connect_key�agents�callr<rYrZr[rr\rrr rHkst
�






�������
rHc

Ks�tj�tj��tj|k���}tj�tj|jk��	�}t
j�t
j|jk��	�}|j}|jj
}|s5|jjj
}|j}t||j�}	|	jj|jj|jtd|j|ddd�td|jddd�d�dS)Nztwilio_api.lead_greetingT�https)rQr�	_external�_schemez$twilio_api.lead_outbound_call_status)rQryrz)�from_�to�url�status_callback)r
r1r2rBr5r6rarr:r7r
r;r3r<r4rKr�calls�create�inbound�phonenumberr)
rQrrRrTrUrVrBr<rYrZrrr �	call_lead�s8�
��
�r�c	Ks@tj�tj|k��tj�����}t�	d�
|��tj�tj|jk��tj
|k���}|rat�	d�
|j��|j|_|jdkrB||_|jdkrJ||_|jdkrR||_t�	d�
|j��tj��nt|||||d�}tj�|�tj��t�	d�tj�tj|jk��tj
|k���}|r�|j|_tj��dSt�	d�dS)Nzlatest lead: {}za lead exist with number {}�zThe updated date is: {})�	firstname�lastname�
phonenumber_1�emailr:zThe contact has been addedzno lead contact exist)r
r1r5r��order_by�
created_on�descr7r/r0r9rr�r:�
updated_onr�r�r�rrErF�addr6�
contact_id)	r�r�r�r�r:rR�latest_lead�contact�new_contactrrr �add_contact�sF"�


�

�r�c	Ks�zd�||d||�}t�d�|��Wt�d�nt�d�wt|d��6}t�tjdtjd�}|�tjd�}	t	|	�}
||
_
|
�|�|
�d	�t�
d
�|
j
��Wd�n1s]wYt�|�|
jdd
d�}|S)z, Upload the given MMS Image file to S3.
    z
{}_{}/{}_{}{}�widget_imagezThe widget image key is {}z&Could not set key for widget image url�rb�AMAZON_ACCESS_KEY�AMAZON_SECRET_KEY�
WIDGET_BUCKETzpublic-readzUploaded file {}NrF)�
expires_in�
query_auth)r9r/r?�open�boto�
connect_s3r,r-�
get_bucketr	r&�set_contents_from_file�set_aclr0�os�remove�generate_url)�partner_namer:�	file_name�	file_path�file_extrRr&�f�conn�bucket�k�
widget_urlrrr �upload_widget_images(
��

�
r�cOst�|||||�}|Sr")r�
send_email)�
recipients�subject�data�sender�argsrR�mail_statusrrr r�+sr�r")(r��loggingr/rIrOr*�flaskrr�
buyercall.appr�buyercall.extensionsr�buyercall.lib.util_twiliorrrcr�boto.s3.keyr	r��!buyercall.blueprints.leads.modelsr
�"buyercall.blueprints.agents.modelsr�'buyercall.blueprints.partnership.modelsrr
�$buyercall.blueprints.contacts.modelsrrrhr,�taskr]rHr�r�r�r�rrrr �<module>s<
L
R
$
+