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

�we���@s�ddlZddlZddlmZmZmZmZmZm	Z	m
Z
mZddlm
Z
mZddlmZddlmZddlmZddlmZddlmZdd	lmZdd
lmZddlmZddl m!Z!m"Z"dd
l#m$Z$ddl%m&Z&ddl'm(Z(ddl)m*Z*ddl+m,Z,ddl%m-Z-m.Z.m/Z/m0Z0ddl1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=ddl>m?Z?m@Z@ddlAmBZBddlAmCZCddlDmEZEmFZFedeGddd�ZHeHjIe
edddd�dd ����ZIeH�Jd!�d"d#��ZKeHjJd$d%d&id'�eH�Jd(�ed�d)d*����ZLeH�Jd+�eCjMe
ed�d,d-�����ZNeHjJd.d/d0gd1�eddd�d2d3���ZOeHjJd4d5gd1�e
ed�d6d7����ZPeHjJd8d0gd1�ed�d9d:���ZQeHjJd;d%d&id'�d<d=��ZReH�Jd>�d?d@��ZSeHjJdAd/d0gd1�dBdC��ZTeHjJdDd0gd1�dEdF��ZUeHjJdGd%d&id'�ed�dHdI���ZVeH�JdJ�ed�dKdL���ZWeHjJdMd/d0gd1�e(ed�dNdO����ZXeHjJdPd0d5gd1�e(ed�dQdR����ZYeH�JdS�edd�dTdU���ZZeH�JdV�edd�dWdX���Z[eHjJdYd0d/gd1�edd�dZd[���Z\eHjJd\d0d/gd1�edd�d]d^���Z]eHjJd_d0d/gd1�edd�d`da���Z^eHjJdbd/d0gd1�eCjMedd�dcdd����Z_eHjJded0d/gd1�edd�dfdg���Z`eHjJdhd0d/gd1�edd�didj���Zadkdl�ZbdS)m�N)�	Blueprint�current_app�redirect�request�flash�url_for�jsonify�render_template)�login_required�current_user)�gettext)�and_)�text)�InvalidRequestError)�	AESCipher)�	Dashboard)�
role_required)�Agent)�User�UserExternalApiAutoPostTie)�Issue)�Partnership)�handle_stripe_exceptions)�Coupon)�Subscription)�PartnershipAccountCreditTie�PartnershipAccount�0ExternalApiServiceProvidersPartnershipAccountTie�ExternalApiServiceProviders)�
SearchForm�BulkDeleteForm�UserForm�UserCancelSubscriptionForm�	IssueForm�IssueContactForm�
CouponForm�SevenHundredCreditForm�SevenHundredPrequalifyForm�FinservPrequalifyForm�AMSEvolutionForm�
NeoVerifyForm)�Report�
ReportUserTie)�db)�csrf)�
DataTables�ColumnDT�admin�	templatesz/admin)�template_folder�
url_prefix�partner�sysadmin�
limitsysadmincCsdS)z/ We are protecting all of our admin endpoints. N�r8r8r8�B/home/arjun/projects/buyercall/buyercall/blueprints/admin/views.py�before_request+sr:�cCs�td�}tj}tj}|rtj}tjdkrtj|k}tjdkr,ttj|ktj�	gd���}tjdvr6t
�t�nt�dd�}tjdkrEt
�
�nd}t
�ttj|�}t
�t�}td||||d	�S)
N�1 = 1r5r1)r6r7r5r)�query�totalr6zadmin/page/dashboard.jinja2)�group_and_count_plans�group_and_count_coupons�group_and_count_users�group_and_count_issues)rr�partnership_account_id�is_viewing_partnership�'get_user_viewing_partnership_account_id�roler�partnership_idr
�notin_rr?�listr@�group_and_countrBr	)�
filter_exprC�!partnership_account_group_viewingr?r@rArBr8r8r9�	dashboard4s0



�

�
�
�rMz/users�page�)�defaultsz/users/page/<int:page>cCs�t�}t�}tj}tj}|rtj}t�tj	�
dd�tj	�
dd��}d�|d|d�}tj�
tj|ktjdk��
tj�d���
t�tj	�
d	d
����tj��t|���|dd�}td
|||d�S)N�sort�name�	direction�ascz{0} {1}rrOF�qr;�Tzadmin/user/index.jinja2)�form�	bulk_form�users)rr rrCrDrEr�sort_byr�args�get�formatr=�filterrG�is_deactivated�is_�search�order_byrF�descr�paginater	)rN�search_formrXrCrLrZ�order_values�paginated_usersr8r8r9rYUs*�
��rYz
/user-datacCs�tj}tj}|rtj}	ttj�ttj�ttj�ttj	�ttj
�ttj�ttj�g}|r8t
tj|ktjdk�}ntjtjkt
tj|ktjdk�B}tj���t��|��tj�d��}ttj||�}t|���S)Nr1F)rrCrDrEr0r�id�	firstname�lastname�email�phonenumber�last_sign_in_on�
sign_in_countr
rFr-�sessionr=�select_fromr^r_r`r/rr[r�
output_result)rCrL�columns�	filter_byr=�	row_tabler8r8r9�datats*�
�$ruz/users/edit/<int:id>�GET�POST)�methodscCs�tj�|�}t|d�}g|j_dd�tj��D�}|D]
}|dkr(|jj�|�qt	j
}t	jdkr7ddg|j_dd	lm
}d
}|�|d�}|r^d}t�||d�}	|	rZ|	jrZd|j_nd
|j_d
}
|�|d
�}|rd}
t�||d
�}|r{|jr{d|j_nd
|j_d
}
|�|d�}|r�d}
t�||d�}|r�|jr�d|j_nd
|j_|���rNt�|tj�d�tj�d��r�ttd�d�ttd��S|�|�|jdkr�d|_|� �tj�d�}d
}|r�|dkr�d}t�!||d|�tj�d�}d
}|r�|dkr�d}t�!||d
|�tj�d�}d
}|�r|dk�rd}t�!||d|�t"�|_#|jjD]}t$�}||_%|j&|_'|j
|_(t)j*�+|��q$t)j*�,�ttd�d�ttd��S|j�-dd�|j#D��t.d||||
|
d�S)N��objcSsg|]}|j|jf�qSr8)rhrR)�.0�reportr8r8r9�
<listcomp>�szusers_edit.<locals>.<listcomp>)�zPartner Channel Account Reportr1)r1�Admin)�agentr�)rFzAMS 2000T�
AMS Evolution�
NEO VerifyrF�activez+You are the last admin, you cannot do that.�danger�admin.usersr;�ams_2000�y�
ams_evolution�
neo_verifyz!User has been saved successfully.�successcSsg|]}|jj�qSr8)r|rh)r{�linkr8r8r9r}szadmin/user/edit.jinja2)rW�user�ams_2000_provider_exists�ams_evo_provider_exists�neo_verify_provider_exists)/rr=r\r!�reports_list�choicesr+�all�appendrrCrF�partnership.modelsr�exists_for_service_providerr�!get_service_provider_access_state�
is_allowedr�rur�r��validate_on_submit�
is_last_adminrrWr�_rr�populate_obj�username�save�!set_service_provider_access_staterI�reportsr,�	report_idrh�user_id�partnership_accounts_idr-ro�add�commit�process_datar	)rhr�rWr��rrCr�ams_2000_account_tie�!partnership_account_ams_2000_ties�ams_2000_exists�ams_evo_account_tie� partnership_account_ams_evo_ties�ams_evolution_user_tie_exists�neo_verify_account_tie�#partnership_account_neo_verify_ties�neo_verify_user_tie_existsr��ams_2000_resultr��ams_evolution_resultr��neo_verify_resultr�r8r8r9�
users_edit�s�
�
��

��

��




��


�r�z/users/delete/<int:id>�DELETEcCst�|�}t|d�S)N)r�)r�deactivate_userr)rh�resultr8r8r9�user_deletes

r�z/users/cancel_subscriptioncCsft�}|��r-tj�tj�d��}|r&|j}|�|�r%t	t
d|jd�d�nt	t
d�d�tt
d��S)Nrhz-Subscription has been cancelled for %(user)s.)r�r�z4No subscription was cancelled, something went wrong.r�r�)r"r�rr=r\rrW�subscription�cancelrr�rRrr)rWr�r�r8r8r9�users_cancel_subscriptions 
����r�z/issuescC�td�S)Nzadmin/issue/index.jinja2�r	�rNr8r8r9�issues*sr�z/issues-datacCsXtj}tj}|rtj}ttj�ttj�tt	j�ttj
�ttj�ttj�ttj
�g}|tjk|tjk@}tjr>|r>|tjk}nLtjdkrutjru|suddlm}tj�|j��|jtjk���}|durot|�dkrotj�|�}n|tjk}ntjdkr�tjtjk}n	tjdvr�td�}t�d�|��tj���ttt	��|�}t t!j"||�}t#|�$��S)	�Return server side data.r1r)�PartnershipAccountGroupTieNr5)r6r7r<z	every: {})%rrCrDrEr0rrhrrRr�status�label�
created_onrkrG�is_admin_user_with_groupsrF�'buyercall.blueprints.partnership.modelsr�r-ror=r^�partnership_account_group_idr��len�in_r�log�errorr]rpr/rr[rrq)rCrLrrrsr��groupsr=rtr8r8r9�issues_data0sP�	�
��
��

r�z/issues/edit/<int:id>cCs�tj�|�}tjdkr|r|jdkrt�|�}t|d�}td|j	|j
d�}d}d�|j�}td||d	�}t
|j||d
�}|��rW|�|�|��ttd�d�ttd
��Std|||d�S)Nrv�unreadryz$[BuyerCall issue] Re: %(issue_type)s)�
issue_typez 

You opened an issue regarding:z

---
{0}
---

z.Hello,%(body)s:%(issue)s

Thanks,
Support team)�body�issue)rk�subject�messagez"Issue has been saved successfully.r��admin.issueszadmin/issue/edit.jinja2)rW�contact_formr�)rr=r\r�methodr��unread_to_openr#r��LABELr�r]�questionr$rkr�r�r�rrrr	)rhr�rWr��body_string�issue_stringr�r�r8r8r9�issues_ediths.


���
�r�z/issues/contact/<int:id>cCsntj�|�}|r*ddlm}|�|tj�d�tj�d��t�|�t	t
d�d�nt	t
d�d�ttd	��S)
Nr)�deliver_support_emailr�r�z1The person who sent the issue has been contacted.r�z+Issue no longer exists, no e-mail was sent.r�r�)
rr=r\� buyercall.blueprints.admin.tasksr��delayrrW�set_as_contactedrr�rr)rhr�r�r8r8r9�issues_contact�s

�
�r�z/couponscCr�)Nzadmin/coupon/index.jinja2r�r�r8r8r9�coupons�sr�z
/coupons-datac
Cs�ttjdd�ttjdd�ttj�ttjdd�ttjdd�ttjdd�ttjdd�ttj	dd�ttj
dd�ttjdd�g
}tj
���t�}ttj||�}t|���S)r��none)�
search_method)r0rrhr��code�duration�	redeem_by�times_redeemed�
amount_off�percent_off�duration_in_months�max_redemptionsr-ror=rpr/rr[rrq)rrr=rtr8r8r9�coupons_data�s�
r�z/coupons/newc
Cs�t�}t|d�}|��rT|�|�|j|j|j|j|j|j	|j
|jd�}zt�|�r8t
td�d�ttd��WSWntyS}zt
t|j�d�WYd}~nd}~wwtd||d�S)	Nry)r�r�r�r��currencyr�r�r�z%Coupon has been created successfully.r��
admin.couponsr�zadmin/coupon/new.jinja2)rW�coupon)rr%r�r�r�r�r�r�r�r�r�r��createrr�rrr�_messager	)r�rW�params�er8r8r9�coupons_new�s.

�

���r�z/coupons/delete/<int:id>cCs tj�|�}|��ttd��S)Nr�)rr=r\�deleterr)rhr�r8r8r9�coupons_delete�sr�z
/integrationscCstjdkrttd��Std�S)Nr��
user.settingsz&admin/integrations/integrations.jinja2)rrFrrr	r8r8r8r9�integrations�s
r�z/compliance_dashboardcCsxtjdks
tjdkrttd��Stj}d}tj}t�|d�}ddl	m
}|r2|tjd�}|j��}nd}t
d|||d	�S)
Nr��
automotiver��creditr)�seven_hundred_credit_clientr;z.admin/integrations/compliance_dashboard.jinja2)r��credit_credentials�url)rrF�
business_typerrrhrCr�)partner_account_seven_hundred_credit_info�!buyercall.lib.util_credit_reportsr��
credit_report�get_compliance_dashboardr	)r�r��partner_accountr��clientr�r8r8r9�compliance_dashboard�s �rz2/integrations/<int:paid>/seven hundred_full_creditc	Cs,t�}t|d�}|}d}d}tj�ttj|ktj|ktj|k����}|du�r	|jdk�r	t	j
d}t|�}|jdurH|jdurH|�
|j�}	nd}	|jdur[|jdur[|�
|j�}
nd}
|jdurn|jdurn|�
|j�}nd}t|j|
|	||j|j|jd�}|���rt|�}zg|jj|_|jjdur�|jjdur�|�|jj�|_|jjdur�|jjdur�|�|jj�|_|jjdur�|jjdur�|�|jj�|_|jj|_|jj|_|jj|_|��tj��ttd�d�ttd	��WSt� t!�"��tj�#�ttd
�d�Ynnt$||||�t%d|d
�S)Nry�	700Creditr��CRYPTO_SECRET_KEYr;�r��api_account�api_username�api_password�experian_enabled�transunion_enabled�equifax_enabled�>The 700 Credit API Credentials have been updated successfully.r��admin.integrations�eAn error occurred while saving the 700 Credit API Credentials. Please contact support for assistance.r�zHadmin/integrations/seven_hundred_credit/seven_hundred_full_credit.jinja2�rW)&rr&r=r^r
�service_provider�product_typerC�firstr�configrr�decryptr
rr�r
rrr�ru�encryptr�r-ror�rr�rrr�r��	traceback�
format_exc�rollback�new_credit_credentials_setr	��paid�
credit_objectrW�partner_account_id�provider�product�credit_profile�encrypt_key�cipher�decrypted_username�decrypted_account�decrypted_passwordr8r8r9�seven_hundred_full_credits|
���
�






���r*z8/integrations/<int:paid>/seven hundred_prequalify_creditc	Cs6t�}t|d�}|}d}d}tj�ttj|ktj|ktj|k����}|du�r|jdk�rt	j
d}t|�}|jdurH|jdurH|�
|j�}	nd}	|jdur[|jdur[|�
|j�}
nd}
|jdurn|jdurn|�
|j�}nd}t|j|
|	||j|j|jd�}|���r
t|�}zg|jj|_|jjdur�|jjdur�|�|jj�|_|jjdur�|jjdur�|�|jj�|_|jjdur�|jjdur�|�|jj�|_|jj|_|jj|_|jj|_|��tj��ttd�d�ttd	��WSt�yt �!t"�#��tj�$�ttd
�d�Yn	wnt%||||�t&d|d
�S)Nryr�
prequalifyrr;r	rr�rrr�zNadmin/integrations/seven_hundred_credit/seven_hundred_prequalify_credit.jinja2r)'rr'r=r^r
rrrCrrrrrrr
rr�r
rrr�rurr�r-ror�rr�rr�	Exceptionr�r�rrrrr	rr8r8r9�seven_hundred_prequalify_creditJs~
���
�






����r-z2/integrations/<int:paid>/finserv_prequalify_creditcCst�}t|d�}|}d}d}tj�ttj|ktj|ktj|k����}|dur�|jdkr�t	j
d}t|�}|jdurF|jdurF|�
|j�}	nd}	|jdurY|jdurY|�
|j�}
nd}
|jdurl|jdurl|�
|j�}nd}t|j|	|
|d�}|��r�t|�}z[|jj|_|jjdur�|jjdur�|�|jj�|_|jjdur�|jjdur�|�|jj�|_|jjdur�|jjdur�|�|jj�|_d|_|��tj��ttd�d	�ttd
��WSt�t� ��tj�!�ttd�d�Ynnt"||||�t#d
|d�S)Nry�Finservr+rr;)r�rrr
T�;The Finserv API Credentials have been updated successfully.r�rzbAn error occurred while saving the Finserv API Credentials. Please contact support for assistance.r�z;admin/integrations/finserv/finserv_prequalify_credit.jinja2r)$rr(r=r^r
rrrCrrrrrrrr
r�r�rurr
r�r-ror�rr�rrr�r�rrrrr	)rr rWr!r"r#r$r%r&r'r)r(r8r8r9�finserv_prequalify_credit�sr
���
�


���r0z/integrations/adf_email_importcCs�d}tj}tj}|r
tj}tj�tj|k���}|ra|j	dur"|j	}t
jdkra|j	dura|j�
dd��
dd��
dd�}d�dd�|D��}d	�|dt|j����}||_	tj��ttd
�d�td|d
�S)Nr;rw� �.r��-css�|]	}|��r|VqdS)N)�isalnum)r{r�r8r8r9�	<genexpr>�s�z#adf_email_import.<locals>.<genexpr>z{}{}@inbound.buyercall.comz#ADF import email address generated.r�z;admin/integrations/adf_email_import/adf_email_import.jinja2)�adf_assigned_email)rrCrDrErr=r^rhrr6rr�rR�replace�joinr]�str�lowerr-ror�rr�r	)�	adf_emailrCrLr�name_before_format�name_after_formatr8r8r9�adf_email_import�s0�



�r>z*/integrations/<int:paid>/ams_evolution_dmsc
Cs(tjd}t|�}t�}t|d�}|}d}tj�tj|k��	�}|�rtj�tj
|jktj|k��	�}|du�r=|j
durI|j
dkrI|�|j
�}	nd}	|jdur\|jdkr\|�|j�}
nd}
|jduro|jdkro|�|j�}nd}|jdur|jdkr|j}nd}|jdur�|jdkr�|�|j�}
nd}
t|j||	|
||
d�}|���r<z|jj|_|jjdur�|jjdur�|�|jj�|_|jjdur�|jjdur�|�|jj�|_
|jjdur�|jjdur�|�|jj�|_|jjdur�|jjdur�|�|jj�|_|jjdu�r
|jjdu�r
|jj|_|��tj��t t!d�d�t"t#d��WSt$�%t&�'��tj�(�t t!d	�d
�Yn�n�z�|���r�|�r�|jj|_||_|j|_
|jjdu�rh|jjdu�rh|�|jj�|_|jjdu�r~|jjdu�r~|�|jj�|_
|jjdu�r�|jjdu�r�|�|jj�|_|jjdu�r�|jjdu�r�|�|jj�|_|jjdu�r�|jjdu�r�|jj|_|��tj��t t!d�d�t"t#d��WSWn+t)�y}zt$�%t&�'��t$�%|�tj�(�t t!d�d
�WYd}~nd}~wwt*d|d
�St t!d�d�t"t#d��S)Nrryr�r;)r�r
rr�api_url�
api_secretzAThe AMS Evolution API Credentials have been updated successfully.r�rzdAn error occurred while saving the AMS Evolution Credentials. Please contact support for assistance.r�zcAn error occurred while saving the AMS Evolution Credentials. Please contact supportfor assistance.z/admin/integrations/ams/ams_evolution_dms.jinja2r�HA service provider was not found. Please contact support for assistance.)+rrrrr)rr=r^rRr� external_api_service_provider_idrhrCr�r�password�	client_idr��secretr�r�rur
rrrr@r?r�r-ror�rr�rrr�r�rrrr,r	)rr%r&�
dms_objectrWr!r"r�partner_service_providerr'r)r(r��decrypted_secretr�r8r8r9�ams_evolution_dms�s�

���
�




��



�

����rIz'/integrations/<int:paid>/neo_verify_cmsc
Cs�tjd}t|�}t�}t|d�}|}d}tj�tj|k��	�}|�rEtj�tj
|jktj|k��	�}|dur�|j
durE|j
dkrE|j
}	nd}	|jdurX|jdkrX|�|j�}
nd}
t|j|	|
d�}|��r�zA|jj|_|jjdur�|jjdur�|�|jj�|_|jjdur�|jjdur�|jj|_
|��tj��ttd�d�ttd��WSt� t!�"��tj�#�ttd	�d
�Ynn~zR|���r|�r|jj|_||_|j|_
|jjdur�|jjdur�|�|jj�|_|jjdur�|jjdur�|jj|_
|��tj��ttd�d�ttd��WSWn+t$�y>}zt� t!�"��t� |�tj�#�ttd�d
�WYd}~nd}~wwt%d|d
�Sttd�d�ttd��S)Nrryr�r;)r�r?r@z>The NEO Verify API Credentials have been updated successfully.r�rzaAn error occurred while saving the NEO Verify Credentials. Please contact support for assistance.r�z`An error occurred while saving the NEO Verify Credentials. Please contact supportfor assistance.z,admin/integrations/neo/neo_verify_cms.jinja2rrA)&rrrrr*rr=r^rRrrBrhrCr�rErr)r�r�rur@rr?r�r-ror�rr�rrr�r�rrrr,r	)rr%r&rFrWr!r"rrGr�rHr�r8r8r9�neo_verify_cmsis�

����



��



�

����rJc
CsDtjd}|��dkr|dkrt|d�}n-|��dkr%|dkr%t|d�}n|��dkr5|dkr5t|d�}n
ttd�d�tt	d	��S|dkr�z{|�
�r�t|�}||_|j
j|_
||_||_|jjdurq|jjd
urq|�|jj�|_|jjdur�|jjd
ur�|�|jj�|_|jjdur�|jjd
ur�|�|jj�|_|jj|_|jj|_|jj|_|��tj��ttd�d�tt	d	��WSWdSty�}zt�t� ��t�|�tj�!�ttd
�d�WYd}~dSd}~ww|dk�r�zv|�
��rft|�}||_|j
j|_
||_||_|jjdu�r |jjd
u�r |�|jj�|_|jjdu�r6|jjd
u�r6|�|jj�|_|jjdu�rL|jjd
u�rL|�|jj�|_d|_|��tj��ttd�d�tt	d	��WSWdSt�y�}zt�t� ��t�|�tj�!�ttd�d�WYd}~dSd}~wwttd�d�tt	d	��S)Nrr�rryr+r.z>The product type and credit provider mapping is not available.r�rr;rr�z`An error occurred while saving the 700 Credit Credentials. Please contact supportfor assistance.Tr/z]An error occurred while saving the Finserv Credentials. Please contact supportfor assistance.rA)"rrr:r&r'r(rr�rrr�rrr�rurCrr
rrrr
rrr�r-ror�r,r�r�rrr)r r"rrr%rWr&r�r8r8r9r�s�





�

���



�

���r)c�loggingr�r�flaskrrrrrrrr	�flask_loginr
r�flask_babelrr��
sqlalchemyr
�sqlalchemy.sqlr�stripe.errorr�buyercall.lib.util_cryptor�!buyercall.blueprints.admin.modelsr�$buyercall.blueprints.user.decoratorsr�"buyercall.blueprints.agents.modelsr� buyercall.blueprints.user.modelsrr�!buyercall.blueprints.issue.modelsrr�r�'buyercall.blueprints.billing.decoratorsr�*buyercall.blueprints.billing.models.couponr�0buyercall.blueprints.billing.models.subscriptionrrrrr� buyercall.blueprints.admin.formsrr r!r"r#r$r%r&r'r(r)r*�#buyercall.blueprints.reports.modelsr+r,�buyercall.extensionsr-r.�
datatablesr/r0�__name__r1r:�routerMrY�exemptrur�r�r�r�r�r�r�r�r�r�r�r�rr*r-r0r>rIrJrr8r8r8r9�<module>s�(	8�
 %
m

7

CC=#sU