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

z�e��@s ddlZddlmZddlmZddlZddlZddlm	Z	ddl
mZmZddl
mZmZddlmZddlmZdd	lmZmZdd
lmZddlmZmZddlmZmZdd
lm Z m!Z!ddl"m#Z#ddl$m%Z%ddl&m'Z'ddl(m)Z)ddl*m+Z+m,Z,ddlm Z ddl-m.Z.ddl-m/Z/ede0dd�Z1e�2e0�Z3ed�dd��Z4edddd�dd ��Z5edddd�d!d"��Z6ed#d$��Z7ed%d&��Z8ed'd(��Z9ed)d*��Z:ed+d,��Z;d-d.�Z<ed/d0��Z=ed1d2��Z>d3d4�Z?ed�d5d6��Z@ed�d7d8��ZAed�d9d:��ZBed�d;d<��ZCdS)=�N)�partnerships)�NotificationSettings)�tza_to_datetime)�	Blueprint�jsonify)�current_app�request)�current_user)�login_required)�api_jsonify�api_login_required)�
role_required)�User�UserExternalApiAutoPostTie)�Partnership�PartnershipAccount)�format_phone_number�format_phone_number_bracket)�generate_presigned_file_url)�send_notifications)�text)�db)�Report�
ReportUserTie)r)�
AgentSchedule)�Agent�userapiz/api)�
url_prefix�sysadminc	
Cs�z#d}d}d}g}tj��D]\}}i}||d<||d<|�|�qWnty=}zd}d}d}g}WYd	}~nd	}~wwt||||d
��}|S)z
    Get all user roles
    ��Tz User roles fetched successfully!�label�value��Fz!Partnership List Fetching Failed!N��
statusCode�success�message�data)r	�ROLE�items�append�	Exceptionr)	�status_coder%r&r'�k�v�_role�e�response�r2�E/home/arjun/projects/buyercall/buyercall/blueprints/user/endpoints.py�roless2����r4�partner�admin�agentc	
C�z%d}d}d}g}tjd��D]\}}i}||d<||d<|�|�qWnty?}zd}d}d	}g}WYd
}~nd
}~wwt||||d��}|S)z 
    Get all user timezones
    rTzTimezones fetched successfully!�	TIMEZONESr r!r"FzTimezones Fetching Failed!Nr#�r�configr)r*r+r)	r,r%r&r'r-r.�_tzr0r1r2r2r3�	timezones=�2����r=c	
Cr8)z 
    Get all user languages
    rTzLanguages fetched successfully!�	LANGUAGESr r!r"FzLanguages Fetching Failed!Nr#r:)	r,r%r&r'r-r.�_lnr0r1r2r2r3�	languages\r>rAc
Cs��z!d}d}d}g}d}t}d}d}dtjvr(z
t�tjd�}Wni}Y|rz|�dd�}|�dd�}	|�d	d�}
|�d
d�}|�dd�}|�d
d�}
|�dd�}|rY||_|	r^|	|_|
re|
d|_|
rp|j	rp|
d|j	_
||_||_|�
�dtjvr�tjd}|r�|s�ddlm}m}gd�}|j�d�d}||vr�tj�tj|jk���}|s�tj�d�}|j�d|j�d|j�d|��}|�dd�}||tjd|�}tjd�d|��|_nd}d}d}g}n|r�d|_|�
�tj�tj|jk���}|�stj�d�}|jdd |j�d|j��|j �d!�d"�}t!d'i|��}Wn&t"�yH}zt#�$d#|���d$}d}d%|��}g}WYd}~nd}~wwt%||||d&��}|S)(z+
    Save all user profile information
    rTz)Profile information successfully updated!NFr'�	firstName�lastName�
timeZoneId�jobTitle��
department�
languageId�isImageDeletedr!r �filer)r�upload_file_object)�jpg�jpeg�png�.�����_z/avatar_� �USER_AVATAR_BUCKET�::�z,Unsupported image format for profile avatar!�PERSONAL_SETTINGS_EDITED�You've�	/settings��user_id�notify_message_type�user_related_entities�other_user_related_entities�	hyperlinkz"POST(/profile/information) Error: r"z%Profile information update failed! - r#r2)&r	r�form�json�loads�get�	firstname�lastname�localer7�timezone�titlerG�save�files�buyercall.lib.util_boto3_s3rrK�filename�splitr�query�filter�id�partnership_id�first�name�sid�replacerr;�user_avatar�partner_urlrr+�logger�errorr)r,r%r&r'�avatar�user�is_image_deleted�_data�
first_name�	last_namerg�	job_titlerGrfrrK�ALLOWED_EXTENSIONS�
avatar_ext�partnership�key�resp�es_data�es_responser0r1r2r2r3�profile_information{s�




 
�
���r�c
Cs�z�d}d}d}g}d}t}t�|j�}|st�d�}tjdd�}|�dd�r2|�d�}|jd|d	�}|r{|�d
d�rYtj	�
tj|�d
�k���}	|	tkrSd}d}d}n|�d
�|_|�d
d�rgt
|�d
��|_|�dd�rvt�|�d��|_|��nd}d}d}|jdd|j�d|j��|j�d�d�}
tdi|
��}Wnty�}ztd|�d}d}d}g}WYd}~nd}~wwt||||d�}
|
S)z+
    Save profile security information
    rTz2Profile security information successfully updated!FrQ��silent�passwordN)�
with_passwordr��emailrVz)A user with entered email already exists!�mobileNumber�newpasswordz(You've entered a wrong current password!�SECURITY_INFO_EDITEDrXrSrYrZzE : r"z-Profile security information updation failed!)r,r%r&r'r2)r	r�	get_by_idrqr�get_jsonrc�
authenticatedrrnror�rrr�phonenumber�encrypt_passwordr�rirtrdrerwrr+�printr)r,r%r&r'�is_password_matchr{r��	form_data�current_password�
existing_userr�r�r0r1r2r2r3�profile_security_information�sh



�
���r�c
Cs�zNd}d}d}g}t}tj�tj|jk���}|stj�d�}tjdd�}d|vrM|d|_	|�
�|jdd|j�d	|j
��|j�d
�d�}tdi|��}Wntyh}	zd}d
}d}g}WYd}	~	nd}	~	wwt||||d��}
|
S)zA
    Save the two-factor authentication settings of the user
    rTz/Two factor authentication successfully updated!rQr��	twoFactor�2FA_SETTINGS_EDITEDrXrSrYrZr"Fz*Two factor authentication updation failed!Nr#r2)r	rrnrorprrrcrr��two_factor_authrirtrdrerwrr+r)r,r%r&r'r{r�r�r�r�r0r1r2r2r3�profile_2fasF

�����r�c
CszZd}d}d}g}tj}tjdd�}tj�tjtjk���}|s&tj�	d�}|rY|�	dd�}t
|t�rY||krY|t_t��tj
dd	tj�d
tj��|j�d�d�}tdi|��}	Wntyt}
zd
}d}d}g}WYd}
~
nd}
~
wwt||||d��}|S)z)
    Save the profile theme settings
    rTz$Theme settings successfully updated!r�rQ�darkModeF�THEME_SETTINGS_EDITEDrXrSrYrZr"zTheme settings updation failed!Nr#r2)r	�	dark_moderr�rrnrorprrrc�
isinstance�boolrirtrdrerwrr+r)r,r%r&r'�is_dark_mode_nowr�r��is_dark_moder�r�r0r1r2r2r3�profile_theme_settingsMsL

�����r�c
Cs�z�d}d}d}i}t}|jr|jjr|jj}nd}nd}t�|jp"d�}t�|j�}|j|d<||d<||d<|j	|d	<|j
|d
<||d<|j|d<|j|d
<|j
|d<z|j�d�\}}	t|	|�}
Wntyw}zd}
WYd}~nd}~ww|
|d<|j|d<t|j�|d<|j|d<|j|d<|j|d<|j|d<|jt|j�|jt|j�|jd�}||d<Wnty�}zd}d}d|��}g}WYd}~nd}~wwt||||d��}
|
S)z&
    Get the user profile details
    rTz"Profile info fetched successfully!�
US/EasternrQ�userSid�partnershipSid�partnershipAccountSidrBrCrDrErGrHrUrFN�profileImager�r�r�r��isSubscribed�role)�signInCount�currentSignInOn�currentSignInIP�lastSignInDate�lastSignInIP�	loginInfor"Fz%Profile info fetching failed! Error: r#) r	r7rgr�get_sid_from_idrqr�partnership_account_idrtrdrerhrGrfrvrmrr+r�rr�r�r��push_notification_subscriptionr��
sign_in_countr�current_sign_in_on�current_sign_in_ip�last_sign_in_on�last_sign_in_ipr)r,r%r&r'r{�user_tz�partnership_sid�partnership_account_sid�bucket_namer��
profile_imager0r�r1r2r2r3�profile~sr






��




�
���r�c
Cs�z"d}d}d}g}tj�tj|k���}|r|��}nd}d}d}Wn!tyC}zt�|��d}d}d|��}WYd}~nd}~ww||||d	�}t	|�S)
NrTzUser info fetched successfully!�FzUser not found!r"zError: r#)
rrnrortrr�to_dictr+�logryr)rtr,r%r&r'r{�exr1r2r2r3�get_user�s2
����r�c
Cs�z�tjdkr%d}d}d}tjtjd�}|j|j|j|j	|j
|j|jd�}n�tjtjd�}t
j�t
jtjk���}|s@t
j�d�}t��}|r�d|vrQ|�dd	�|_d
|vr\|�d
d	�|_d|vrg|�dd	�|_d|vrr|�dd	�|_	d
|vr}|�d
d	�|_
d|vr�|�dd	�|_d|vr�|�dd	�|_|��tjddtj�dtj��|j�d�d�}tdi|��}d}d}d}g}Wnty�}	zd}d	}dt|	���}g}WYd}	~	nd}	~	wwt||||d��}
|
S)N�GETrTz2In-app notification settings fetched successfully!�r[)�
IanNewLead�IanNewTasks�IanAllTasks�IanAccountActivity�IanAccountSecurity�
IanPromotions�PushNotificationrQr�Fr�r�r�r�r�r��INAPP_NOTIFY_SETTINGS_EDITEDrXrSrYrZz2In-app notification settings updated successfully!r"zIn-app notification settings: r#r2)r�methodr�
get_or_creater	rp�ian_on_new_lead�ian_on_task_assign�
ian_all_tasks�ian_on_account_activity�ian_on_account_security�ian_on_promo�push_notificationrrnrorrrcr�rirtrdrerwrr+�strr�r,r%r&�notification_settingsr'r��notification_datar�r�r0r1r2r2r3�in_app_notification_settings�sz
�

�����r�c
Cs�z�tjdkr#d}d}d}tjtjd�}|j|j|j|j	|j
|jd�}n�tjtjd�}tj
�tjtjk���}|s>tj
�d�}t��}|r�d|vrO|�dd	�|_d
|vrZ|�d
d	�|_d|vre|�dd	�|_d|vrp|�dd	�|_	d
|vr{|�d
d	�|_
d|vr�|�dd	�|_|��tjddtj�dtj��|j�d�d�}tdi|��}d}d}d}g}Wnty�}	zd}d	}dt|	���}g}WYd}	~	nd}	~	wwt||||d��}
|
S)Nr�rTz1Email notification settings fetched successfully!r�)�
EmnNewLead�EmnNewTasks�EmnAllTasks�EmnAccountActivity�EmnAccountSecurity�
EmnPromotionsrQr�Fr�r�r�r�r��EMAIL_NOTIFY_SETTINGS_EDITEDrXrSrYrZz1Email notification settings updated successfully!r"zEmail notification settings: r#r2)rr�rr�r	rp�emn_on_new_lead�emn_on_new_task�
emn_all_tasks�emn_on_account_activity�emn_on_account_security�emn_on_promorrnrorrrcr�rirtrdrerwrr+r�rr�r2r2r3�email_notification_settings/st
�	
�����r�cCs i}ttj�|d<t|ddd�S)Nr'r�SuccessT)r�r�__dict__r)�contextr2r2r3�get_request_detailsvsr�c
Cs@z�tj}tj}|rtj}tj�tjtjtj	tj
tjtjtj
tj��tj|ktjdk��tj�d��}g}t}d}|jre|jjre|jjdkrHd}n|jjdkrQd}n|jjdkrZd}n|jjdkrcd	}nd}|D]+}|j|j|j
t|j�|j	|j
|jd
�}|jdur�t|j��d|��|d<|�|�qgd
d�tj��D�}g}tjd��D]\}	}
i}|
|d<|	|d<|�|�q�ddlm}d}
|�|d�}|r�d}
d}|�|d�}|r�d}d}|�|d�}|r�d}d}d}d}||||
||d�}Wn t �y}zd}d}dt!|���}i}WYd}~nd}~wwt"||||d��}|S)NFr��ESTz
US/Central�CSTzUS/Mountain�MSTz
US/Pacific�PST)rprdrer�r�r�rtrSr�cSsg|]	}|j|jd��qS)�rprsr�)�.0�reportr2r2r3�
<listcomp>�sz'get_user_management.<locals>.<listcomp>r?r r!���0ExternalApiServiceProvidersPartnershipAccountTie�AMS 2000T�
AMS Evolution�
NEO VerifyrzUser Management List!)�reports�preferred_languages�users�ams_2000�ams_evo�
neo_verifyr"zUser Management List: r#)#r	r��is_viewing_partnership�'get_user_viewing_partnership_account_idrrn�
with_entitiesrprdr�rer�r�r�rtrorq�is_deactivated�is_r7rgrrr*r�allrr;r)�partnership.modelsr��exists_for_service_providerr+r�r)r��!partnership_account_group_viewingr�
users_listr{r!�	user_datarrr-r.r@r�r�!partnership_account_ams_2000_tiesr� partnership_account_ams_evo_tiesr�#partnership_account_neo_verify_tiesr,r%r&r'r0r1r2r2r3�get_user_management|s�$��
���
�	���rc Cs�zUt��}gd�}|D]
}||vrtd|����q|d��}tj�tj|k���}|r1td��t	j
}t	j}t	j}t|d|d|d|d|d	||d
|d|t	j
|�dd
�d|dd�
}tj�|�tj��|�dg�}	|	D]}
t|
|j|d�}|j�|�qs|�d�}d}
|r�|dkr�d}
t�|j|d|
�|�d�}d}|r�|dkr�d}t�|j|d|�|�d�}d}|r�|dkr�d}t�|j|d|�|ddv�r1t�}tj�t	jtjk���}d}t	jr�t	jjr�t	jj}|j|d|dd||d	|d	|d|j|d
||dd�
}t�|�}t d�D]}t!|d d!|d"k�o$|d#k||d$�}tj�|��qtj��|}t�"|���}t#�$d%�%|����d&}d}d'|�d(�}i}Wn)t&�y}zt'|�d)}tj�(�d}d*t)|���}i}WYd}~nd}~wwt*||||d+��}|S),N)
rhrdre�	extensionr�r�rGr�rAr�Missing required field: r��9Email is already in use. Please choose a different email.rhrdrerr�rGr�rA�enFr�)
rhrdrerr�r�rGr�r�rqrf�
tos_agreementr�r��	report_idr[�partnership_accounts_idr�yTr��
ams_evolutionr�rr��r6r7r�rF)
r[rdrerhr�r��mobiler�descriptionrGrgr��	all_hours��08:00 AM�17:00 PMr���day�available_from�available_to�	is_activer��agent_idz1The user email requesting a password reset is: {}��z9User created successfully!, And a email has been sent to z to set password.r"zFailed to create user: r#)+rr��
ValueError�lowerrrnror�rrr	r��is_admin_user_with_groupsrrqrcr�session�add�commitrrprr*r�!set_service_provider_access_staterr[�countr7rgr!�create�ranger�initialize_password_resetr��info�formatr+r��rollbackr�r) r'�required_fields�field�input_emailr�r��is_admin_in_group�viewing_partnership_account�new_user�reports_datar�
report_tier�ams_2000_resultr�ams_evolution_resultr�neo_verify_resultr7�total_agentsr��params�resultr(�schedule�
user_email�ur,r%r&r0r1r2r2r3�add_user_management�s��
�
�


�
�

���rMc%Cs��zBtj�|�}tj}tj�tj|ktj|k���}|s&d}d}d}i}�nt	j
dkr�d}d}d}|��}|jr>|j�
d�nd|d	<d
dlm}d}	|�|d�}
|
rpd}	t�|j|d�}|ri|jri|�d
di�n|�d
di�d}|�|d�}
|
r�d}t�|j|d�}|r�|jr�|�ddi�n|�ddi�d}|�|d�}|r�d}t�|j|d�}|r�|jr�|�ddi��n�|�ddi��nt	j
dk�r:t	��}gd�}|D]
}||vr�td|����q�|d|_|d|_|d|_|d|_|d|_|d|_|d|_|d|_|�dd�|_ |j!�"�|ddv�r�|�swd }tj#�r.tj#j$�r.tj#j$}t|j|d|d!�%�|d|d|d|d||d"�	}t&j'�(|�t&j'�)�|j}t*d#�D]}t+|d$d%|d&k�oj|d'k||d(�}t&j'�(|��q\|d|_|d|_|d|_|d|_|d|_d|_,n
|�r�t�-|j|�|�d)g�}|D]}t.||j|jd*�}|j!�/|��q�|�d
�}d}|�r�|d+k�r�d}t�0||d|�|�d�}d}|�r�|d+k�r�d}t�0||d|�|�d�}d} |�r�|d+k�r�d} t�0||d| �d!|v�r,|d!�%�}!|!|j1�%�k�r,tj�tj1|!k���}"|"�r)td,��|!|_1t&j'�)�d}d}d-}i}nd.}d}d/}i}Wn%t2�yh}#zt3|#d0�d1}d}d2t4|#���}i}WYd}#~#nd}#~#wwt5||||d3��}$|$S)4Nr�FzUser not foundr�rTz#User details retrieved successfullyz%Y-%m-%d %H:%M:%S�
updated_onr�r�r�rr�rr�r�PUT)rhrdrerr�rGr�rrrhrdrerr�rGr�r�rArrr�r�)	r[rdr�rerr�rGrgr�r#r$r%rr&r'rrrrzUser updated successfully!rVzInvalid request methodz=====r"zFailed to edit user: r#)6rrnrcr	r�rror[rrrr�r�rN�strftimerr�r
r�!get_service_provider_access_staterp�
is_allowed�updater�r.rhrdrerr�rGr�r�rfr�clearr7rgr/rr1r2r3r7rr	�
deactivaterr*r4r�r+r�r�r)%r[�user_to_editr��
agent_to_editr,r%r&r'r��ams_2000_account_tier�ams_2000_exists�ams_evo_account_tier�ams_evolution_user_tie_exists�neo_verify_account_tier�neo_verify_user_tie_existsr<r=r�r,r(rJrBrrCrrDrrErrFr>r�r0r1r2r2r3�edit_user_managementpsL��
��
��
��
��









�
�




�




�
���r^c

Cs�z*t�|�}tj}tj�tj|ktj|k���}|r!t�	|j
|�d}d}d}i}WntyI}zd}d}dt|���}i}WYd}~nd}~wwt
||||d��}	|	S)Nr-TzUser deactivated successfullyr"FzFailed to delete user: r#)r�deactivate_userr	r�rrnror[rrrUrpr+r�r)
r[rIr��agent_to_deactivater,r%r&r'r0r1r2r2r3�delete_user_managementAs8
�����ra)D�ast�'buyercall.blueprints.sysadmin.endpointsr�(buyercall.blueprints.notification.modelsrra�loggingr��buyercall.lib.util_datetimer�flaskrr�
flask.globalsrr�flask_loginr	�flask_login.utilsr
�buyercall.lib.util_restrr�$buyercall.blueprints.user.decoratorsr
� buyercall.blueprints.user.modelsrr�'buyercall.blueprints.partnership.modelsrr�buyercall.blueprints.filtersrrrkr�+buyercall.blueprints.notification.utilitiesr�sqlalchemy.sqlr�buyercall.extensionsr�#buyercall.blueprints.reports.modelsrr�"buyercall.blueprints.agents.modelsrr�__name__�user_api�	getLoggerrxr4r=rAr�r�r�r�r�r�r�r�r�rrMr^rar2r2r2r3�<module>sr




c
?
-
0
H
H
F
h

Q