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

we}P�@s�ddlZddlmZddlmZmZmZddlm	Z	ddl
mZddlm
Z
ddlmZmZddlmZmZmZdd	lmZdd
lmZddlmZmZddlmZdd
lmZddl m!Z!ddl"m#Z#ddl$m%Z%ddl&m'Z'ddl(m)Z)ddl(m*Z*ede+dd�Z,e�-e+�Z.Gdd�de	e)�Z/e!dd�dd��Z0e!dd�dd��Z1e!dd�dd ��Z2e!dd�d!d"��Z3e!dd�d#d$��Z4e!dd�d%d&��Z5e!dd�d'd(��Z6e!dd�d)d*��Z7dS)+�N)�	parseaddr)�	Blueprint�request�current_app)�
MethodView)�current_user)�func)�Channel�ChannelType)�ChannelOutMiniSchema�ChannelTypeInSchema�ChannelTypeOutSchema)�
EmailIdentity)�AddEmailIdentity)�Partnership�PartnershipAccount)�Phone)�Source)�api_role_required)�User)�Widget)�
ses_client)�BlueprintMixin)�api_jsonify�channelsapiz
/api/channels)�
url_prefixc@sReZdZdeieed�eed�eed�d�ZdgiZddd�Zdd	�Zd
d�Z	dS)
�ChannelTypeApi�out)�inr)�get�post�put�patchrNcCsZ|stj��}|jddd�}d}ntj�tj|k���}|jdd�}d}t|�|�|d�S)NTr)�many�keyz#Channel types fetched successfully.�r$z"Channel type fetched successfully.)�data�message)	r
�query�all�get_serializer_class�filter�sid�firstr�dump)�self�channel_type_id�queryset�
serializerr'�r3�I/home/arjun/projects/buyercall/buyercall/blueprints/channels/endpoints.pyr1s
zChannelTypeApi.getcCs@|jdd�}|�t���}tjdi|��d}d}tg||d�S)Nrr%z"Channel type created successfully.i.)r&r'�status_coder3)r*�loadr�get_jsonr
�creater)r/r2r&r'r5r3r3r4r =szChannelTypeApi.postcCs�|jdd�}|�t���}t�|�}|jdddi|��}|r0d}|jdd�}|�|�}d}	d}
nd}i}d	}	d
}
t|||	|
d�S)
Nrr%�
return_objectTz"Channel type updated successfully.r��zChannel type update failure.��F)r&r'r5�successr3)	r*r6rr7r
�
get_by_sidr!r.r)r/r0�
serializer_inr&�channel_type�
updated_ctyper'�serializer_out�responser5r<r3r3r4r!Es

zChannelTypeApi.put)N)
�__name__�
__module__�__qualname__r
r�serializers�permission_classesrr r!r3r3r3r4rs$������
r�admin�partnerc	Cs�tj�tjtjk���}|stj�d�}|j}t	j
�dd�}|r/t	j
�dd�r/|�d|��}n|�d|��}dt|�dv}t�
�}|rO||dvrOd}d}n	|sTd	}nd
}d}t|d|id�S)
N��TEST_SERVER_DOMAIN�DEBUGF�@r&TzEmail address is validzInvalid email formatzEmail already exists�isValid)r'r&)rr(r+�idr�partnership_idr-r�partner_urlr�configrr�list_email_identitiesr)	�email_prefix�partnershiprQ�test_server_domain�
email_address�is_valid�email_identites�is_email_validr'r3r3r4rZXs$rZc
Cstj�tj|k���}i}|r�t�|j�}|j|d<|j|d<|j	|d<t
�|j�}t
�|j
�}|r;|j�d|j��nd|d<|rJ|j�d|j��nd|d<|rS|jnd|d<|r\|jnd|d<|jrit�|j�nd|d	<|jrvt�|j�nd|d
<|jr�t�|j�nd|d<|jr�t�|j�nd|d<|jr�t�|j�nd|d
<|j|d<|j|d<g}|jD]}|�|j�q�||d<|dkr�t�|j�}|r�|jr�dnd|d<|j r�|j nd|d<|j|d<n|dkr�t!�|j�}	|	r�|	j"|d<|	j#|d<d}
d}d}nd}
d}d}t$||
||d �S)!NrO�
updated_at�
created_at� �
created_by�
updated_by�created_by_agent_id�updated_by_agent_idrP�partnership_account_id�partnershipName�partnershipAccountname�sourceId�name�description�widget�phone-number�Local�	Toll Free�
numberType�provisionedPhoneNumber�provisionedPhoneNumberId�email�
partnerDomain�emailprefixzChannel fetched successfully r:TzChannel does not existr;F�r'r5r<)%r	r(r+r,r-r
�get_name_by_id�type�
updated_on�
created_onr�	get_by_idr^r_�	firstname�lastnamerPr�get_sid_from_idrbr�get_name�sourcerrfrg�widgets�append�guidr�
related_id�local�phonenumberr�domain�usernamer)
�cid�channel�_chr?r^r_�_widgets�widg�_phone�_emailr'r5r<r3r3r4�get_channel_by_id�sj


������



�

r�cCst��}tj�tj|k���}|r�d}d}d}tj�|j	�}g}d|�
�vr2|�dd�}|r0dnd}d|�
�vrc|�dg�}	t|	t�sF|	g}	|	rc|rc|rc|	D]}
t
j�t
j|
k���}|rb|�|�qNd|�
�vrxt�|�dd��}|rvdnd}|r�|r�|r�|�dd�}|�dd�}
|�dd�}|�dd�}|�dd�}|r�||_|
r�|
|_|r�||_|r�d|vr�|n|j|_tj|_||_|r�t�|�d��}|r�||_|��d	}t|d
�Sd}d}|s�d}|s�|r�d
|��nd}|s�|r�d|��nd}d}d}nd}d}d}t|||d�S)NTrfFrhr|rg�content�	is_activezChannel updated successfully)r'�zChannel name cannot be nullzChannel type cannot be null, zChannel type cannot be nullzSource does not exist, zSource does not exist�zChannel not found�rr)rr7r	r(r+r,r-r
rrt�keys�
isinstance�listrrr~r�get_id_from_sidrfrgr�r�rrOr_r}r|�saver)r��receivedr��name_status�type_status�
source_statusr?�filtered_widgetsrf�
widget_ids�	widget_idrh�	source_idrgr�r�r|r'�keywordr5r<r3r3r4�update_channel�sz

�
r�cCsLd}d}d}z�|rMz-t�|�}|r/tjpd}tj�tj|ktj|jk��	tj
��tj���}nd}d}d}Wnt
yL}z
t|�WYd}~nd}~wwg}|D]�}	t�|	j�}
t�|	j�}|	j|	j
|	j|
rp|
j�d|
j��nd|r||j�d|j��nd|
r�|
jnd|r�|jnd|	jr�t�|	j�nd|	jr�t�|	j�nd|	jr�t�|	j�nd|	jr�t�|	j�nd|	jr�t�|	j�nd|	j|	jd	�}|d
kr�t�|	j �}
|
r�|
j!r�dnd|d
<|
j"r�|
j"nd|d<|
j|d<n|dkr�t#�|	j �}|r�|j$|d<|j%|d<|�&|�qQWnt
�y}zg}t|�WYd}~nd}~wwt'||||d�S)NTzChannels fetched successfully!r:rJFzInvalid channel typer�r])rOr[r\r^r_r`rarPrbrcrdrerfrgrirjrkrlrmrnrorprq�r'r<r5)(r
�get_by_namerrbr	r(r+rtrO�order_byru�descrv�	Exception�printrrwr^r_r,rxryrPrrzrr{r|rrfrgrr�r�r�rr�r�r~r)r?r<r'r5�
_channel_typerb�channels�e�
channels_listr�r^r_r�r�r�r3r3r4�get_channels_by_type4s�


�������������
�

���r�c
Cs�d}tjpd}g}ztj�tj|k���}tdd�}Wnty:}zt|�t	t
|�ddd�WYd}~Sd}~wwt	|�|�|�S)Nz&Account channels fetched successfully!rJT�r#r;Frr)rrbr	r(r+r)rr�r�r�strr.)r'rbr2r�r�r3r3r4�get_channelsos 
����r�cCs4d}d}d}tj��}tdd�}t|�|�|||�S)NTz#Channel types fetched successfully!r:r�)r
r(r)r
rr.)r<r'r5r1r2r3r3r4�get_channel_typess

r�c
Cs�d}d}d}i}z1tj�tj��tjt�tj	���
tjtjktj
tj
k��tj���}|D]
}|d||d<q-WntyS}zd}t|�}d}WYd}~nd}~wwt||||d�S)	NTz*Channel meta details fetched successfully!r:rJrFr;r�)r	r(�joinr?�
with_entitiesr
rfr�countrtr+rPrrb�group_byr)r�r�r)r<r'r5r&r�r�r�r3r3r4�get_channel_type_count�s.
�����r�c
Cs~t��}|�dd�}|�dd�}|�dd�}t�|�}t�|�dd��}d}g}|D]'}|r7|r7t�|j	|�nd}|rFt
j�t
j
|k���nd}	|	rQ|sQ|�|	�q*|r�|r�|r�d}
|dkr�|�dd�}|r�tj�tj	tjk���}|sztj�d	�}t��||�}
|
�d
d�r�tj�dd�r�tj�dd�r�tj�dd�}n|j}||tjp�d	tjp�d	d
�}tjd"i|��}
ntidd|
�dd�d�S||�dd�|j	|�di�|tjp�d	tjp�d	tj	|d�	}|
r�|
j	|d<tjd"i|��d}d}d}nCd}d}d}d}|�sd}|�s|�rd|��nd}|�s|�r|�d�nd}|�r#|�d�}|�r7|�r1|�d|�d �nd!|�d �}ti|||d�S)#Nrfrtrhr|Fro�emailPrefixr�rJ�statusrKrL)r�r�rbrPr;r')r5r<r'rgr�)	rfrgrtr�r|rPrbr^r}r�r:TzChannel added successfully.r�zChannel typezChannel name, zChannel namez and Sourcerz is requiredz. Widget with the z channel type already exists.zWidget with the r3)rr7rr
r�rr�r	�is_widget_channel_type_existrOrr(r+rr-r~rrrPr�addrrRrQrbrr8r)r�rf�	type_namer��type_r�r�r�r�rhr�r�rU�respr��
email_datar&r5r<r'r�r3r3r4�create_channels�sz

��
�

"r�)8�logging�log�email.utilsr�flaskrrr�flask.viewsr�flask_loginr�
sqlalchemyr�$buyercall.blueprints.channels.modelsr	r
�)buyercall.blueprints.channels.serializersrrr
�!buyercall.blueprints.email.modelsr�3buyercall.blueprints.email.utils.add_email_identityr�'buyercall.blueprints.partnership.modelsrr�(buyercall.blueprints.phonenumbers.modelsr�#buyercall.blueprints.sources.modelsr�$buyercall.blueprints.user.decoratorsr� buyercall.blueprints.user.modelsr�#buyercall.blueprints.widgets.modelsr�buyercall.extensionsr�buyercall.lib.util_restrrrC�channels_api�	getLogger�loggerrrZr�r�r�r�r�r�r�r3r3r3r4�<module>sL
=
Q
5
S
: