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/email/__pycache__/endpoints.cpython-310.pyc
o

weh^�@s
ddlZddlZddlmZmZmZddlmZddl	m
Z
ddlmZm
Z
ddlmZmZddlmZddlmZdd	lmZdd
lmZmZddlmZddlmZdd
lmZm Z ddl!m"Z"m#Z#m$Z$ddl%m&Z&m'Z'ddl(m)Z)m*Z*ddl+m,Z,ddl-m.Z.ddl/m0Z0ede1dd�Z2e�3e1�Z4ed�dd��Z5dd�Z6dd�Z7d d!�Z8d"d#�Z9d$d%�Z:d&d'�Z;d(d)�Z<edd*�d+d,��Z=edd*�d-d.��Z>edd*�d/d0��Z?edd*�d1d2��Z@edd*�d3d4��ZAedd*d5�d6d7��ZBedd*d5�d8d9��ZCedd*d5�d:d;��ZDdS)<�N)�	Blueprint�request�current_app)�current_user)�and_)�Channel�ChannelType)�Contact�ContactChannelTie)�
EmailTemplate)�EmailTemplateSchema)�EmailValidator)�PartnershipAccount�Partnership)�Source)�api_role_required)�
ses_client�
sns_client)�
create_bucket�upload_file_object�
download_file)�api_jsonify�jsonify�)�Email�
EmailIdentity)�RequestDispatcher)�UrlCollector�)�InteractionManager�	email_apiz
/api/email)�
url_prefix�adminc
Cs�t��}d}d}d}i}|r�|�dd�}|�dd�}|�dd�}|r�|r�|r�tj�tj|k���}tj�t	tj|ktj
|jk����}	|�dd�}
tj
�d	d�}|r\tj
�d
d�r\|}n	|�dd�pd|j}|
�d
|��}
t|
���}t�|
�}|	r�|r�|r�|
||j|	jd�}tjdi|��}t�d�}|r�t�|�}|�d�s�|�dd�}d}d}n@tj|�dd�|�dd�|j|jt�|�|j|	jtjd�}n"d}d}d}nd}d}d}nd}d}d}n
d}d}d}nd}d}d}t||||�S)NTz!Email Channel added successfully!���partnership_id�partnership_account_id�source�username��TEST_SERVER_DOMAIN�DEBUGF�domain�@)r'r+r$r%�email�status�messagezSomething went wrong��zEmail channel name�descriptionzEmail channel description)�namer1�type�
related_idr&r$r%�
created_by�zEmail address already existszInvalid email addresszPartnership account not found!��Invalid parameters!�)r�get_json�getr�query�filter�sid�firstrrr$�idr�config�partner_urlr
�validater�	is_exists�creater�get_by_namer�verify_email_identityrr�get_id_from_sidrr)�received�successr/�status_code�data�partnership_sid�partnership_account_sid�
source_sid�partnership�partnership_accountr'�test_server_domainr+�email_�is_email_valid�is_email_exists�paramsr-�channel_type�email_add_resp�channelr9r9�F/home/arjun/projects/buyercall/buyercall/blueprints/email/endpoints.py�create_email_channels�
��
�




��r[c(Cs�tj}t�|�p	i}t|��z:|�dd��rD|�dd�}|dkr3|�d�}|�d�}t�||��n|dk�r?t|�\}}|d}|d}|�d�}	|�d	�}
|d
kr�|	r�|	�	d�d}t
�|�}t�
|	�}
d}|d
D]}|ddkry|d}qm|�dd�}tj|	|jd�}d}d}|r�t�|j|j�}|r�|jnd}nd}|s�d}tj|	|
|||||
||dd�
}�n�|dvr�t�|�}|r�|�|�}�n�td|��nz|dk�r9d}|
�r8t�
|
d�}|s�td�tddi�WSt
�|j�}|s�td�tddi�WSt�|j�}
|
�s't�|j�}|�rt�|j�nd}
|
�s'td�tddi�WSddlm}d|j�d |��}t j!�d!�}t"||�}|�sHt#d"��|��$|�}|�d#d�}|�d$d%�}|�d&d%�}|�d'd%�}	d}|�r�t�|j|j�}|�ry|jnd}|j%�s�dd(l&m'}t j!�d!d�}d|j�d |��}|�(||��r�d|_%|�)�td)|
d�n
td*|
d�nd}|�s�d} n|j} tj|	|
||�p�||| |
||dd�
}|�r4d}!t*�+|	�}"|"�r�d+|"_,|"�)�|"�s�d}!t*�-|	|
j�}"|�r3t.�}#| |#_/|"j|#_0|j|#_1||#_|#�)�dd,l2m3}$t4|j��d-�}%|$j5||
|%||t j!�d.�d/�t6��7d0|"||!d1|i|
j�}&ntd2�ntd3|�n	td4�nt|�Wnt#�y`}'z
t|'�WYd}'~'nd}'~'wwtddi�S)5N�Type�SubscriptionConfirmation�Token�TopicArn�Notification�mail�	messageIdr&�destination�Sendr,r�headersr2�Subject�value�content)r$F)
�
from_email�
recipients�subject�bodyr&rYrQr.�
message_id�
is_inbound)�Bounce�Open�Click�DeliveryzNo email with message id : �ReceivedTrzNo email identityrJzNo partnershipz%Email is not regitered in any channel��EmailParserzemails/�/�EMAIL_BUCKETzEmail file download failedrk�plainr(�html�from)�
EmailVerifierzEmail verified successfully - zEmail verification failed - �new)�send_generic_mailz-config_set�SES_EMAIL_SOURCE)rkrj�config_set_name�textry�senderr-r/z
Invalid emailzUnidentified email type : zEvent type not found)8rrL�json�loads�printr;r�confirm_subscription�get_email_type�splitr�get_by_partner_urlr�get_by_emailr�get_by_usernamer@r�get_by_related_idr&r�create_from_raw�get_by_message�
update_statusr�	get_by_idr$r%�get_by_email_identity�-buyercall.blueprints.email.utils.email_parserrur>rrAr�	Exception�parse�is_verified�6buyercall.blueprints.email.utils.verify_email_identityr{�verify�saver	�findr.�create_from_mailr
�
channel_id�contactr-�buyercall.blueprints.user.tasksr}�str�delayr�run)(�raw_datarL�
event_type�token�	topic_arn�
email_typer/�mail_contentrmrirjr+rPrQrk�hrl�email_identityrY�	source_idr-�
is_valid_mail�
email_channelru�	email_key�bucket�
email_file�parsed_data�
plain_textryr{�email_bucketr��is_existing_contactr��contact_channel_tier}r�assigned_agents_ids�er9r9rZ�aws_ses_webhookns






�
��


�
�

����
���r�c
Csvdg}d}d}d}d}tj�d�}d}tj||||d�}tj�d	d�}|�d
�}	tj|||||||	|d�}
t	d|i�S)
N�help@baloud.com�This is a test mailz	Test mailz$66e3c8d6-b164-4054-a431-cad6a00a3f35�Test Subjectrrd)rj�pidr�ryr~�	MessageId)rirjrkrlrQr.rm�rawrJ)
rr<r;r�
send_emailrrArr�r)rj�
plain_body�	html_bodyr�rkrQr��	mail_resprirmr-r9r9rZ�test_send_mail
s
�r�c

Cs�i}zStj�dd�}d}ddlm}ddlm}|||�}|��|�}t�	|�dd��}d	d
�|D�}|rLt
j|dd�}|�dd
�rQtd�Wt|�SWt|�SWt|�St
yo}	ztd|	�WYd}	~	t|�Sd}	~	ww)Nrwz
ses-buyercall�(30d44pov8ujfcsc92n8q97a1ihqsk822iopa17g1r)rrtrxr(cSsg|]}d|vr|�qS)zemail-verificationr9)�.0�urlr9r9rZ�
<listcomp>(szparse_email.<locals>.<listcomp>)r�rJFzEmail verifiedzError: )rrAr;�buyercall.lib.util_boto3_s3rr�rur�r�collect_urlsr�
request_retryr�r�r)
r��bucket_namer�rrur��urls�verification_url�responser�r9r9rZ�parse_emails0

�����r�c
Cs�d}z?tjd�d�}tj�d�}tj�dd�}dg}d}d}d}t�||||||�}td	|�tj	||||�
�d
�}|�d�}	WntyX}
ztd|
�WYd}
~
nd}
~
wwtd
|i�S)N�MAIL_CONFIG_PREFIXz-config-set�attachmentsr~r�r�r�z�
            <!DOCTYPE html>
            <html>
                <head></head>
                <body>
                    <h1>HTML body</h1>
                    <p>Hello there</p>
                </body>
            </html>
        zmultiplart msg : )r�rj�
config_setrhr�zError : rJ)
rrAr�files�getlistr;r�create_multipart_messager��
send_raw_mail�	as_stringr�r)r�r�r�r�rj�titler�ry�msgrmr�r9r9rZ�test_send_raw_mail3s(

���r�cCst�}t|dd�S)NrJ�rLr/)rr)r�r9r9rZ�create_s3_bucketUsr�cCs*t�|�dd��}|�d|�dd��|fS)N�Messagez{}�notificationType�	eventType)r�r�r;r�r9r9rZr�Zsr�cCs|�dd�S)Nr�)r;)rLr9r9rZ�get_email_message_id_sr��partnerc
	CsDd}d}d}tj�dd�}tj�di�}d}|r&zt�|�}Wni}Y|�dd�}|�dd�}|rd|rd|�dd�|�dd�|�d	d�|�d
i�|�dd�|�dd
�tjtjd�}t	j
di|��}nd
}d}d}|r�|r�|j�d�d}	d|j
�d|	��}
t|tjd|
�}|r�tjd�d|
��}||_|��t|||d�S)Nz$Email template created successfully!r#T�imagerLr�r(rkr1rh�isActive�isPlainEmailF)r�rkr1rh�	is_active�is_plaintextr$r%z6Invalid request. Email template create request failed.i��.����email/template_images/�EMAIL_TEMPLATE_BUCKET�::)r/rJrKr9)rr�r;�formr�r�rr$r%rrE�filenamer�r>rrrAr�r�r)
r/rKrJ�template_image�
template_data�templater�rkrL�	image_ext�key�resp�	image_keyr9r9rZ�create_email_templatecsH





�
r�c
Csrzd}i}tj�tjtjk���}|rtdd��|�}Wnty2}z
t	|�WYd}~nd}~wwt
||d�S)Nz%Email templates fetched successfully!T)�manyr�)rr<r=r%r�allr�dumpr�r�r)r/rL�	templatesr�r9r9rZ�get_email_templates�s 
�����r�c
Cs�d}d}i}d}z�tj�dd�}tj�dd�}|r'zt�|�}Wni}Y|r�tj�tj	|k��
�}|r�|�dd�|�dd�|�d	d�|�d
d�d�}|��D]\}	}
|
r_t||	||	�qQ|�dd�|_
|�d
d�|_|��|r�|j�d�d}d|j	�d|��}	t|tjd|	�}|r�tjd�d|	��}
|
|_|��n
d}d}d}nd}d}d}Wnty�}z
t|�WYd}~nd}~wwt||||d�S)Nr#Tz$Email template updated successfully!r�rLr�r(rkr1rh)r�rkr1rhr�r�r�r�r�r�r��Email template doesn't exists!r6Fr8r7�rLr/rKrJ)rr�r;r�r�r�rr<r=r>r?�items�setattrr�r�r�r�r�rrrAr�r�r�r)�template_idrKrJrLr/r�r�r��
received_datar�rgr�r�r�r�r9r9rZ�update_email_template�s`



������r�cCsTd}d}d}i}tj�tj|k���}|sd}d}d}nt��|�}t||||d�S)Nz$Email template fetched successfully!r#Tr�r6Fr�)rr<r=r>r?rr�r)r�r/rKrJrLr�r9r9rZ�get_email_template_by_id�sr�cCsJd}d}d}tj�tj|k���}|sd}d}d}n|��}t|||d�S)Nz$Email template deleted successfully!��Tr�r6F)r/rKrJ)rr<r=r>r?�deleter)r�r/rKrJr�rLr9r9rZ�delete_email_template�sr�sysadmincC�>t��}|dr
d}d}nd}|d}t|d||d|d�S)Nr.r#z"Successfully fetched the identitesr0r/rL�rLrKrJr/)r�list_all_identitiesr��
identitiesrKr/r9r9rZ�list_all_identites��r	cCr)Nr.r#z(Successfully fetched the email identitesr0r/rLr)r�list_email_identitiesrrr9r9rZr�r
rcCr)Nr.r#z)Successfully fetched the domain identitesr0r/rLr)r�list_domain_identitiesrrr9r9rZr	r
r)Er��logging�log�flaskrrr�flask_loginr�
sqlalchemyr�$buyercall.blueprints.channels.modelsrr�$buyercall.blueprints.contacts.modelsr	r
�!buyercall.blueprints.email.modelsr�&buyercall.blueprints.email.serializersr�)buyercall.blueprints.email.utils.validater
�'buyercall.blueprints.partnership.modelsrr�#buyercall.blueprints.sources.modelsr�$buyercall.blueprints.user.decoratorsr�buyercall.extensionsrrr�rrr�buyercall.lib.util_restrr�modelsrr�utils.request_dispatcherr� utils.urls_collector_from_stringr�!widgets.utils.interaction_managerr�__name__r �	getLogger�loggerr[r�r�r�r�r�r�r�r�r�r�r�rr	rrr9r9r9rZ�<module>s`

Q"
+

4