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__/views.cpython-310.pyc
o

:�e���@sddlZddlZddlZddlZddlmZddlZddlZddlmZddlm	Z	m
Z
mZmZm
Z
mZmZmZmZddlmZmZmZddlmZddlmZmZmZmZddlmZdd	l m!Z!dd
l"m#Z#ddl$m%Z%ddlm&Z&dd
l'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5ddl6m7Z7m8Z8ddl9m:Z:ddl;m<Z<ddl=m>Z>ddl?Tddl?m@Z@ddlAmBZBmZCmZDmZEddl=mFZFddlGmHZHddlImJZJddlKmLZLmMZMe�NeO�ZPe	deOdd�ZQe!eQ�gd�ZRdd�ZSeQjTdd d!gd"�e&�d#d$���ZUeQjTd%d d!gd"�e&�d&d'���ZVeQjTd(d d!gd"�d)d*��ZWeQjTd+d d!gd"�d,d-��ZXeQjTd.d d!gd"�d/d0��ZYeQjTd1d!d gd"�d2d3��ZZeQjTd4d gd"�d5d6��Z[eQjTd7d!gd"�d8d9��Z\eQjTd:d!gd"�d;d<��Z]eQ�Td=�ed>d?���Z^eQjTd@d d!gd"�e&�dAdB���Z_eQjTdCd d!gd"�e&�dDdE���Z`eQjTdFd d!gd"�e&�dGdH���ZaeQjTdId d!gd"�e&�dJdK���ZbeQjTdLd d!gd"�edMdN���ZceQjTdOd d!gd"�edPdQ���ZdeQ�TdR�edSdT���ZeeQjTdUd d!gd"�edVdW���ZfeQjTdXd d!gd"�edYdZ���ZgeQjTd[d d!gd"�ed\d]���ZheQjTd^d d!gd"�ed_d`���ZieQjTdad gd"�eedbdc�ddde����ZjeQjTdad!gd"�eedbdc�dfdg����ZkeQjTdhd gd"�eeEdidj����ZleQjmdkdl��ZmeQjTdmd gd"�edndo���ZneQ�Tdp�edqdr���ZoeQjTdsd gd"�eedbdc�dtdu����ZpdS)v�N)�datetime)�func)	�	Blueprint�redirect�request�flash�url_for�render_template�current_app�session�g)�ActivityType�ActivityName�ActivityLogs)�
role_required)�login_required�
login_user�current_user�logout_user)�gettext)�CORS)�
safe_next_url)�send_verification_code)�anonymous_required)�	LoginForm�TwoFactorAuthForm�BeginPasswordResetForm�PasswordResetForm�
SignupForm�UpdateCredentials�UpdatePersonalDetails�UpdateLocale�UpdatePhoneNumber�UpdateSecurity�PersonalInformationForm�SecurtyInformationForm�UpdateSecurityForm�ThemeSettingsForm)�bcrypt�db)�Agent)�Widget)�format_phone_number)�*)�Partnership)�current_supervisor_userrrr)�format_phone_number_bracket)�UTC)�send_notifications)�refresh_presigned_url�generate_presigned_file_url�user�	templates)�template_folder)�jpg�jpeg�pngcCsBdtvrdtjvrtj�tjtjdk���}|r|Stj�d�S)N�request_config�partner_url�)rr;r.�query�filterr<�first�get)�partnership�rC�A/home/arjun/projects/buyercall/buyercall/blueprints/user/views.py�get_partnershipHs
rEz/login�GET�POST)�methodsc
Cs�tj�dd�}d}tj�tjdk���}|j}|j	}|j
}|j}tj�tj�
d����}|D],}|j
rZ|jdkrZ|j
�dd��dd�}	|	|krZ|	}d}|jrQ|j}|jrW|j}|j	}q.ttj�d�d�}
tj�d�}tj�d	d�}|d
krxd}nd}t�}
|
j}d|vr�|�d�\}}t||�}|
���rrt�tj�d����}z�|�r:|jtj�d
�d��r:|js�ttd|j||d��WS|j r�t!|j"�}t#�$d�%|��|jdd|j&�d|j'��|
j
�d�d�}t(d$i|��}ttd|j||d��WS|j�r2t)||d��r2|�*tj+�|jd|j&�d|j'��d|
j
�d�d�}t(d$i|��}|�r+tt,|��WSttd��WSt-t.d�d�nt-t.d�d�Wn/t/�yq}z"t0d|�t#�1t2�3��t#�$d �%|j4��t-t.d!�d�WYd}~nd}~wwt5d"|
|
|d#�S)%N�www�Fr=T�https://�next�rL�remember�y�::�identity�password�rR�(user.additional_user_security_onboarding��user_sid�urlrN�the verification code is: {}�TWO_FACTOR_AUTH_REQUEST�You've� z
/dashboard��user_id�notify_message_type�user_related_entities�other_user_related_entities�	hyperlink�user.two_factor_auth�rN�	LOGGED_IN)r]r^r`r_ra�dashboard.user_dashboard�This account has been disabled.�danger�Email or password is incorrect.�Error : �0There is an issue with the password for user: {}z�There is a problem with your password. Please reset your password by clicking on the forget your password? link below the submit button.zuser/login.jinja2��formrB�partnership_logorC)6r�host�replacer.r>r?�idr@�logo�namer<�
custom_styles�active�is_�allr�argsrArlrE�alternative_logo�splitr4�validate_on_submit�User�find_by_identity�lower�
authenticated�two_factor_auth_onboardrr�sid�two_factor_authr�phonenumber�log�info�format�	firstname�lastnamer2r�update_activity_tracking�remote_addrrr�_�	Exception�print�error�	traceback�
format_exc�emailr	)�domain�white_label�primary_partner�partner_logo�partner_namer<�partner_custom_styles�partners�partner�partner_domainrl�next_urlrNrBrm�bucket_name�key�u�code�data�response�erCrCrD�loginRs��



�

�
�
��
���r�z
/login-oldc
CsVttj�d�d�}tj�d�}tj�dd�}|dkrd}nd}|���r�t�tj�d����}�z<|�rV|j	tj�d�d	��rV|j
sNttd
|j
||d��WS|jr�t�|j
tjtjt�|jdurfd}d}n|jj}|jj}tt|j�||�}t�d
�|��ttd|j
||d��WS|js�t�|j
tjtjt�ttd|j
||d��WS|j�rCt ||d��rCt�|j
tjtjt�|�!tj"�|r�tt#|��WSt$j%dvr�t$j&s�ttd��WSt$j%dvr�t$j&r�t$j'r�t$j(dkr�ttd��WSt$j%dv�rt$j&�rt$j'�rt$j(dk�rttd��WSt$j&�rttd��WSt$j%dv�r*t$j)j*dk�r*ttd��WSt$j)�r<t$j)j*dk�r<ttd��WSttd��WSt�|j
tjtj+t�t,t-d�d�n|�rdt�|j
tjtj+t�t,t-d�d�Wn8t.�y�}z+t�/t0�1��|�r�t�d�|j2��t�|j
tjtj+t�t,t-d�d�WYd}~nd}~wwt3d|d �S)!NrLrMrNFrOTrQrRrSrT�r]rWrNrJrXrb�user.tos_getrc��sysadmin�
limitsysadminr��admin.dashboard)�admin�partnershipsingle�dashboard.user_dashboard_old�contacts.contact_listzpartnership.company_accounts��agent�
user.settingsrfrgrhrjz�There is a problem with your password. Please reset your password by clicking on the 'forget your password?' link below the submit button.zuser/login_old.jinja2�rl)4rrrwrArlrzr{r|r}r~rrrrpr�r�add_logr
�
AUTHORIZATIONr�
LOGIN_SUCCESSrBrr�operational_numberrr,r�r�r�r��
tos_agreementrtrr�r�rr�role�is_admin_user_with_groups�is_viewing_partnership�6get_user_viewing_partnership_account_subscription_plan�subscription�plan�LOGIN_FAILEDrr�r�r�r�r�r�r	)rlr�rNr��p_name�p_nor�r�rCrCrD�	login_old�s�

�

�
��
�����r�z)/additional_user_security/<uuid:user_sid>cCs~tj�dd�}tj�tjdk���}|j}|j	}|j
}tj�tj�d���
�}|D]$}|jrM|jdkrM|j�dd��dd�}||krM|}|j	rJ|j	}|j
}q)tj�tj|ktj�d����}	t|	jd�}
tj�d�}tj�d	�}|d
krwd}nd}t�}
|
j}d|vr�|�d�\}}t||�}|
��r�tj�d�|	_d|	_d|	_tj��t t!d
�d�t"t#d��St$d|
|	||||||d�	S)NrIrJr=TrKF)r�rWrN�TruerPr�z�Great. Two step verification has been enabled on your account. After logging in you will be asked to verify your account through a verification code.�success�
user.loginz&user/two_factor_auth_onboarding.jinja2)rlr5r�rNr�r<r�rm)%rrnror.r>r?rpr@r<rsrrrtrurvr{r��is_deactivatedr"r�rwrArErxryr4rzrlrr�r)r�commitrr�rrr	)rVr�r�r<r�r�r�r�r��active_userrlr�rNrBrmr�r�rCrCrD�#additional_user_security_onboarding9sZ� 

��r�z+/decline_additional_securty/<uuid:user_sid>cCs�tj�tj|ktj�d����}tj�	d�}tj�	d�}|dkr#d}nd}tj
dkr�d|_d|_t
td�d�|jrJ|jdurJttd	|j||d
��S|jr�t||d�r�t�tjtjtjt�|�tj�tj�tj|jk���}|sxtj�	d�}|r�tt |��S|j!d
vr�ttd��S|j!dvr�tj"j#dkr�ttd��S|j"r�|j"j#dkr�ttd��Sttd��St�tjtjtj$t�t
td�d�ttd��SdS)NFrWrNr�TrGz�You have opted out of two step verification. You can enable it at any time under your account settings. two step verification will help keep your account extra secure.�warningr�r�rcr=r�r�r�r�r�r�rerfrgr�)%r{r>r?r�r�rur@rrwrA�methodrr�rr�rtr�rrrprrr�rr
r�rr�r�r�r.�partnership_idrr�r�r�r��rVr�r�rNrBrCrCrD�decline_additional_security|sJ 
��
�r�z)/skip_additional_security/<uuid:user_sid>cCs�tj�tj|ktj�d����}tj�	d�}tj�	d�}|dkr#d}nd}d|_
d|_tt
d�d�|jrE|jdurEttd|j||d	��S|jr�t||d
�r�t�tjtjtjt�|�tj�tj�tj|jk���}|sstj�	d�}|r{tt|��S|j dvr�ttd
��S|j dvr�tj!j"dkr�ttd��S|j!j"dkr�ttd��Sttd��St�tjtjtj#t�tt
d�d�ttd��S)NFrWrNr�TzjYou have opted to skip the two step verification setup for now. We will ask you again next time you login.r�r�r�rcr=r�r�r�r�r�r�rerfrgr�)$r{r>r?r�r�rur@rrwrArr�rr�rtr�rrrprrr�rr
r�rr�r�r�r.r�rr�r�r�r�r�rCrCrD�skip_additional_security�sF ��
r�z/verification/<uuid:user_sid>cCs�tj�dd�}tj�tjdk���}|j}|j	}tj�tj
�d����}|D]!}|jrG|jdkrG|j�dd��dd�}||krG|}|j	rG|j	}q&t
j�t
j|kt
j�d����}tj�tjdk���}|j}	tj�tj|jk���}
|
dury|
j}	tj�d�}tj�d�}t�}
|
j}d	|vr�|�d	�\}}t||�}|d
kr�d}nd}t
j�t
j|kt
j�d����}t|j�}t�d�|��t�}|���r|tjdt d
k�r_t!�"|jt#j$t%j&t�|j
r�|j'dur�t(t)d|j||d��S|j
�rRt*||d��rR|�+tj,�tj�tj|jk���}
|
�stj�d�}
|�r t(t-|��St.j/dv�r,t(t)d��St.j/dv�r?t.j0j1dk�r?t(t)d��St.j0j1dk�rLt(t)d��St(t)d��St2t3d�d�t(t)d��St!�"|jt#j$t%j4t�t2t3d�d�t(t)d|j||d��St�5d|j6���tj7dk�r�d tjv�r�tjd d k�r�z t8|j�t2t3d!�d"�t�d#�|��t(t)d|j||d��WSt9�y�}zt�:d$�|j��WYd}~nd}~wwt;d%|	||||||||d&�
S)'NrIrJr=TrKFrWrNrPr�zthe number is {}r��verification_coder�r�rcr�r�r�r�r�r�rerfrgr�zBYou have entered an incorrect verification code. Please try again.rbrUzForm error: rG�btn_resend_codezCode sent successfully.r�zThe remember me value is {}z@There was a problem sending a verification code for user sid: {}zuser/two_factor_auth.jinja2)	r�rlr5�user_numberr�rNr�r<rm)<rrnror.r>r?rpr@r<rsrtrurvr{r�r�rrr�rwrArErxryr4r0r�r�r�r�rrzrlrrr�r
r�r�TWOFACTAUTH_SUCCESSr�rrrr�r�rrr�r�r�rr��TWOFACTAUTH_FAILEDr��errorsr�rr��debugr	)rVr�r�r<r�r�r�r�r�r��user_partnershipr�rNrBrmr�r�r�rlr�rCrCrDr��s�� 
 

��

�
����r�z/tos/<int:user_id>cCs8tj�dd�}tj�tjdk���}|j}|j	}tj�tj
�d����}|D]!}|jrG|jdkrG|j�dd��dd�}||krG|}|j	rG|j	}q&t
j�t
j|kt
j�d����}tj�tjdk���}|j}	tj�tj|jk���}
|
dury|
j}	|r�|jdur�ttd�d�ttd	��Std
|	|||d�Sttd	��S)NrIrJr=TrKFrfrgr�zuser/tos.jinja2)r�r5r<r�)rrnror.r>r?rpr@r<rsrtrurvr{r�rrr�rr�rrr	)r]r�r�r<r�r�r�r�r�r�r�rCrCrD�tos_getOs<� 
�r�z/tos_agree/<int:user_id>cCs:tj�d�}tj�d�}|dkrd}nd}tj�tj|ktj�d���	�}|r�d|_
t�|jt
jtjt�tj��|jrt||d�r|�tj�|rQtt|��Stjdvr\ttd��Stjd	vrmtjjd
krmttd��Stjjd
kryttd��Sttd
��Stt d�d�t�|jt
jtj!t�ttd��Sttd��S)NrWrNr�TFrcr�r�r�r�r�r�rerfrgr�)"rrwrAr{r>r?rpr�rur@r�rr�r
r�r�LOGIN_ACCEPTTERMSr)rr�rtrr�r�rrrr�rr�r�rr�r�)r]r�rNr�rCrCrD�tos_agree_postrs2 

r�z/tos_disagree/<int:user_id>cCsbtj�tj|ktj�d����}|r+d|_t�	|jt
jtj
t�tj��ttd��Sttd��S)NFr�)r{r>r?rpr�rur@r�rr�r
r�r�LOGIN_DECLINETERMSrr)rr�rr)r]r�rCrCrD�tos_disagree_post�s 
r�z/logoutcCsBtjrt�t�tjtjt	j
t�t�t
td�d�ttd��S)NzYou have been logged out.r�r�)r/�is_authenticated�supervisor_logout_userrr�rrpr
r�r�LOGOUTrrrr�rrrCrCrCrD�logout�sr�z/account/begin_password_resetc	CsBtj�dd�}d}tj�tjdk���}|j}|j	}|j
}tj�tj�d���
�}|D]&}|j	rQ|jdkrQ|j	�dd��dd�}||krQ|}d}|j
rN|j
}|j}q+t�}	t�}
|
j}d|vrk|�d�\}}
t|
|�}|	��r�tj�d�}t�|���}t�d	�|����ttd
|jd�d�tt d
��St!d|	|||||d�S)NrIrJFr=TrKrPrQz1The user email requesting a password reset is: {}z$An email has been sent to %(email)s.)r�r�r�z user/begin_password_reset.jinja2)rlr�r�r<r�rm)"rrnror.r>r?rpr@rrr<rsrtrurvrrErxryr4rzrlrAr{�initialize_password_resetr}r�r�r�rr�r�rrr	)r�r�r�r�r<r�r�r�r�rlrBrmr�r��
user_emailr�rCrCrD�begin_password_reset�sJ�
���r�z/account/password_resetcCs�tj�dd�}d}tj�tjdk���}|j}|j	}|j
}tj�tj�d���
�}|D]&}|j	rQ|jdkrQ|j	�dd��dd�}||krQ|}d}|j
rN|j
}|j}q+ttj�d�d�}	t�}
|
j}d	|vrq|�d	�\}}
t|
|�}|	��r�t�tj�d��}|s�ttd
�d�ttd��S|	�|�t�tj�d
d��|_|� �tj�tj|j!k���}
|
s�tj�d�}
|j"dd|j#�d|j$��|
j	�d�d�}t%di|��}t&|�r�ttd�d�ttd��St'd|	|
|d�S)NrIrJFr=TrK�reset_token�r�rP�2Your reset token has expired or was tampered with.rg�user.begin_password_resetrR�PASSWORD_RESETrZr[�	/settingsr\�Your password has been reset.r�r��user/password_reset.jinja2rkrC)(rrnror.r>r?rpr@rrr<rsrtrurvrrwrArErxryr4rzr{�deserialize_tokenrlrr�rr�populate_obj�encrypt_passwordrR�saver�r�r�r�r2rr	)r�r�r�r�r<r�r�r�r�rlrBrmr�r�r��es_datar�rCrCrD�password_reset�s^�
�

�r�z/account/password_reset_oldcCs�ttj�d�d�}|��rLt�tj�d��}|dur'tt	d�d�t
td��S|�|�t�
tj�dd��|_|��t|�rLtt	d�d�t
td	��Std
|d�S)Nr�r�r�rgr�rRr�r�r�r�r�)rrrwrArzr{r�rlrr�rrr�r�rRr�rr	)rlr�rCrCrD�password_reset_olds�
r�z/signupcCs��z�tjdtjd<tjdtjd<tj�dd�}d}tj�tjdk��	�}|j
}|j}|j}tj�tj
�d	����}|D]&}|jrc|jdkrc|j�d
d��dd�}||krc|}d	}|jr`|j}|j
}q=t�}	tj�dd�}
tj�dd�}d}tj�tj|
k��	�}
|
s�t�d
�ttd��WS|
j}d|vr�|�d�\}}t||�}d}|
r�t�|
�}|s�ttd�d�td|	|
|d�WS|r�t�|�}|s�ttd�d�td|	|
|d�WS|	� ��r�tj!�d��"�}t#j�t$�"t#j%�|k��	�}d}|�r|j&�s	dh|	j%_'td|	|
|d�WS|j&�rd	}d|_&d|_(t)j*�+�n{t#�}|	�,|�t#�-tj!�dd��|_.|
j|_/tj!�d��"�|_%|�rEd|_0d|_1n
|�rO|j|_1d|_0|�2�t3|j|j4|j5|j%|j6�pad|j7�pfd|j8d|j9�pnd|j1d�
}t)j*�:|�t)j*�+�|j;d|j%�|j%�|
j�d�d�}t<d$i|��}t=|��r�|�r�ttd�d�td �WSttd!��WSWnt>�y�}zt?d"|�d}t�}	WYd}~nd}~wwtd|	|
|||||d#�S)%N�RC_SITE_KEY�RECAPTCHA_PUBLIC_KEY�
RC_SECRET_KEY�RECAPTCHA_PRIVATE_KEYrIrJFr=TrKrB�accountzLNo partnership found. Most likely because no partnership token was provided.z	page.homerPz#Invalid partnership invitation url.rgzuser/signup.jinja2rkzInvalid account invitation url.r�zAlready existsrRr�r�)
r]r�r�r��title�
departmentr��mobile�	extension�partnership_account_id�USER_CREATEDr�r\z"Your account has been reactivated!r��user/settings.jinja2reri)rlrBr�r�r<r�rmrC)@r
�configrrnror.r>r?rpr@rrr<rsrtrurvrrwrA�account_invitation_url_tokenr�r�rrrxryr4�get_by_invitation_tokenrr�r	�PartnershipAccountrzrlr}r{rr�r�r��deactivated_onr)rr�r�r�rRr�r�r�r�r*r�r�r�r�r�r��addr�r2rr�r�)r�r�r�r�r<r�r�r�r�rl�partnership_token�
account_token�partnership_rBrmr�r�r��
form_emailr��was_deactivatedr�r�r�r�rCrCrD�signup0s���




�

�



�

�

�
���rz/welcomecCsJtj�tjtjk���}|r!ttj�}tt	d�d�t
d||d�St
d�S)Nz'Great, you have signed up successfully!r�zuser/welcome.jinja2�r�r�r�)r*r>r?r�rr@r,r�rr�r	rrCrCrD�welcome�s�
r	r�cCst�}t�}t�}t�}t�}tjd}tjtj	tj
tjtjd�}t
j�t
jtjk���}|s5t
j�d�}tjdvr>td�StjdkrLtjrLttd��S|jsUt
j�d�}tj�tj�}tjdd	d
gtj�dtj��dg|j�d
�d�}td$i|��}	�za|jj �r|�!��rt"j#d}
|
r�ddl$m%}m&}|
j'�(d�d}
|
t)vr�t
j�tj�}|j*�d|j�dtj�d|
��}|�+dd�}||
tjd|�}tjd�d|��|_,|�-�nt.t/d�d�ttd��WS|j0j |_|j1j |_|j2j |_3|j4j |_4|j5j |j6_5|j7j |_7|�-�t.t/d�d�ttd��WS|jj �r+t.t/|j8�d�ttd��WS|�!��r^|j9j �r^|j:j |_;|j<j |_=|j>j �rLt�?|j>j �|_>|�-�t.t/d�d�ttd��WS|j9j �rrt.t/|j8�d�ttd��WS|�!��r�|j@j �r�|jAj |_A|�-�t.t/d�d�ttd��WS|j@j �r�t.t/|j8�d�ttd��WS|�!��r�|jBj �r�|jCj |_C|�-�t.t/d�d�ttd��WS|jBj �r�t.t/|j8�d�ttd��WSWntD�y�}ztEd |�tF�Gd!�WYd}~nd}~wwtd"||||||||d#�	S)%N�	LANGUAGES)�
sign_in_count�current_sign_in_on�current_sign_in_ip�last_sign_in_on�last_sign_in_ipr=)r�r�zsysadmin/settings.jinja2r�re�PROFILE_SETTINGS_VIEWEDrZ�yourr[�hisr�r\�avatarr)r4�upload_file_object�.���r�z/avatar_�USER_AVATAR_BUCKETrPz+Unsupported image format for profile avatarr�r�z/Successfully updated your personal informationsr�z/Successfully updated your security informationsz/Successfully updated two factor authentication.z$Successfully updated theme settings.zException : zError getting user settings. r�)r5rB�profile_form�security_info_form�two_factor_auth_form�theme_settings_form�login_access_info�	languagesrC)HrEr$r%r&r'r
r�rrrr
rrr.r>r?rpr�r@rAr�r	r�rrr<r{r�r�r�r2�btn_profile_formr�rzr�files�buyercall.lib.util_boto3_s3r4r�filenamery�ALLOWED_EXTENSIONSrrro�user_avatarr�rr��
first_name�	last_name�	job_titler�r��timezoner��localer��btn_security_info_form�
email_addressr��phone_numberr�rRr��btn_two_factor_auth_formr��btn_theme_settings_form�	dark_moder�r�r�r�)rBrrrrrrr5r�r�rr4r�
avatar_extr��respr�rCrCrD�settings�s�
�

�
 














�
���r1z
/settings-oldcCs6tjdkr	td�Stjdkrtjrttd��Std�S)Nr�zsysadmin/settings_old.jinja2r�r�zuser/settings_old.jinja2)rr�r	r�rrrCrCrCrD�settings_old^s

r2z/settings/update_credentialscCsptttjd�}|��r2tj�dd�}tj�d�t_|r!t�	|�t_
t��tt
d�d�ttd��Std|d	�S)
N��uidrRrJr�z(Your sign in settings have been updated.r�r�zuser/update_credentials.jinja2r�)rrrprzrrlrAr�r{r�rRr�rr�rrr	)rl�new_passwordrCrCrD�update_credentialsisr6z /settings/update_personaldetailscCsNtttjd�}|��r!|�t�t��ttd�d�tt	d��St
d|d�S)Nr3z(Your personal details have been updated.r�r�z"user/update_personaldetails.jinja2r�)r rrprzr�r�rr�rrr	r�rCrCrD�update_personaldetails~s
r7z/settings/update_localecC�Lttjd�}|��r |�t�t��ttd�d�tt	d��St
d|d�S)N)r(z'Your locale settings have been updated.r�r�zuser/update_locale.jinja2r�)r!rr(rzr�r�rr�rrr	r�rCrCrD�
update_locale��
r9z/settings/update_securitycCr8)N)r�z)Your security settings have been updated.r�r�zuser/update_security.jinja2r�)r#rr�rzr�r�rr�rrr	r�rCrCrD�update_security�r:r;z/settings/rest_apir�r�cCs6d}tjrtjjrd}n	tjrtjjrd}td|d�S)N)FrJT�user/rest_api.jinja2��	generated)r�is_partnership_account_user�partnership_account�api_token_hash�is_partnership_userrBr	r=rCrCrD�
rest_api_view�s�rCcCsRd}tjrtj}tj}|rtj}tj�|�}ntjr"tj�tjj	�}t
dd|d�S)NrJr<T)r>�token)rr?r�r��'get_user_viewing_partnership_account_idr@�regenerate_api_tokenrBrBrpr	)rDr��!partnership_account_group_viewingrCrCrD�rest_api_update�s�rHz/user/switch_backcCs4t�t�}t}t�t|ddd�t�ttd��S)NT)rN�forcer�)	�copy�deepcopyr/rrrr�rr)�target_userr�rCrCrD�switch_back�s
rMcCs�tj}t�|�}|j}|j}|j}|dd�dkr|dd�}|dkr%d}d}|r.|�d�}|r:||�d|��7}n||�7}d|it_dS)a
    The URL that user visits is stored to a global variable partner_url in request_config
    This global variable can be accessed from anywhere in this user app
    Subdomains containing www is removed.
    Request protocol isn't stored because it will be either http or https
    The only things that affects identifying the partner are subdomain, domain and suffix(or tld)

    Possible formats:
        subdomain.domain.tld
        domain.tld
        subdomain.domain (To support sub.localhost)
        domain (To support localhost)

    N�zwwww.rIrJrr<)	r�host_url�
tldextract�extract�	subdomainr��suffixrr;)rWrQrRr�rSr<rCrCrD�before_request�s 


rTz/elasticsearchc	Cs�z	g}|d}WdStyg}zR	tj�tj�}|s!tj�d�}tj�tj�}|r.|j}nd}i}t	j
D]}t|�q5dt	jt	j
tjtd�t	jdddd�t	jd	d	t��tj|j|d
�}WYd}~dSd}~ww)Nr=zNO-PARTNERSHIP-ACCOUNT�DEVELOPMENT)�tzFrr�Jay)r��valuei�)�environment�hostname�ip�createdr��is_api�paramsrW�status_code�status_code_root�error_detailr]r��
account_id)r�r.r>rArr�r�r�r�rrwr�rnr�r�nowr1r�rOr�r�)	�a�br�rBr@rbr^�pr�rCrCrD�test_elasticsearchsH
%�


����rgz/pushcCs�tj�tj�}|stj�d�}tjddgtj�dtj��gdd�}td
i|��}d}t	dtt
j|jd	�}d
}ddl
m}||||�}|S)Nr=�DASHBOARD_VIEWEDrZr[zhttp://localhost:8000/settingsr\zYou've a new notificationzuser/mail/notification.jinja2)r5r�rqznamaste@ecosustain.inr)�send_notification_mailrC)r.r>rArr�r�r�r�r2r	r
r�rq�buyercall.blueprints.user.tasksri)rBr�r��mail_subject�	mail_data�
recipientsri�mail_statusrCrCrD�test_notify9s$��roz/user-managementcCstd�S)Nzuser/user_management.jinja2)r	rCrCrCrD�userManagementVsrp)qrJ�uuid�loggingr�rrP�
sqlalchemyr�flaskrrrrrr	r
rr�$buyercall.blueprints.activity.modelsr
rr�$buyercall.blueprints.user.decoratorsr�flask_loginrrrr�flask_babelrr��
flask_corsr�buyercall.lib.safe_next_urlr�"buyercall.lib.util_two_factor_authrr�buyercall.blueprints.user.formsrrrrrrr r!r"r#r$r%r&r'�buyercall.extensionsr(r)�"buyercall.blueprints.agents.modelsr*�#buyercall.blueprints.widgets.modelsr+�buyercall.blueprints.filtersr,�'buyercall.blueprints.partnership.modelsr.� buyercall.lib.supervisor_managerr/�supervisor_login_userr��supervisor_login_requiredr0�dateutil.tzr1�+buyercall.blueprints.notification.utilitiesr2r r3r4�	getLogger�__name__r�r5r"rE�router�r�r�r�r�r�r�r�r�r�r�r�r�rr	r1r2r6r7r9r;rCrHrMrTrgrorprCrCrCrD�<module>s�,
@

~e
B
-
-
v
"
$
*9 
{	



&+