U
    |%d                     @   s  d dl mZ d dlmZmZmZ ddlmZmZm	Z	m
Z
mZmZmZmZmZ d dlmZ d dlmZ d dl mZ ddlmZ d dlmZ d d	lZd d	lZd d
lmZ ddlmZ d dlmZ d d	l Z d dl!m"Z" e"e#$ j%j%Z&dZ'dZ(dZ)dZ*da+dZ,dd Z-dd Z.edd Z/eedd Z0dd Z1dd Z2edd  Z3d!d" Z4ed#d$ Z5d5d%d&Z6d6d'd(Z7d7d)d*Z8d8d+d,Z9ed-d. Z:ed/d0 Z;d1d2 Z<d9d3d4Z=d	S ):    render)JsonResponseHttpResponseHttpResponseRedirect   )	customerMatressPhysical_Age_FieldPhysical_Age_ValuesAge_analyzeHeight_analyzeWeight_analyze	installerSender)date)csrf_exempt)Email)configN)xframe_options_exempt)
Assets_Api)settings)PathZ 2bea07cbbdad54e61b2bc97336154ee8Z 864c0ec4d01c24eef80f4712fcfb6bffz2023-01matress.3iwebexperts.com c                 C   s
   t | dS )N
login.htmlr   request r   !/var/www/Matress/matress/views.pylogin!   s    r    c                 C   s6   d| d }t t| d}tj||d}t|j}|S )z GENERATE ACCESS_TOKEN https://z/admin/oauth/access_token)Z	client_idZclient_secretcode)urljson)API_KEYSHARED_SECRETrequestspostr$   loadstext)r"   shopursrxr   r   r   token&   s    r0   c                 C   sx   |  d}d|ksd|krF|}t}d||tf }| d}t| }n.d| }t}d||tf }| d}t| }|S )N/r!   http://b%s/admin/oauth/authorize?client_id=%s&redirect_uri=https://%s/final&scope=read_themes,write_themes)stripr%   APP_URLr   )r#   s_urlf_urlapi_keylinkliredirectr   r   r   get_installation4   s    



r<   c                 C   s   d}| j dkr| jd}|d}d|ks4d|kr`|}t}d||tf }|d}t| }n.d| }t}d||tf }|d}t| }|S )Nr   POSTr+   r1   r!   r2   r3   )methodr=   getr4   r%   r5   r   )r   r;   r#   r6   r7   r8   r9   r:   r   r   r   installationG   s     




r@   c                 C   s2   | j dd k	r.| j d}td| d d}|S )Nr+   r!   z/admin/apps/sleepzee-custom-app)redirect_to)GETr?   r   )r   r+   Zredirr   r   r   r;   _   s    r;   c           	      C   s   t tdkrtjjtd}|r4|d j}|d j}ntd dt d }|d|ttd}ddd	t	d
dd ddi}t
j|||d}t|j}tt|ddS d S )Nr   r+   zInvalid shop detailr!   z /admin/api/2020-07/webhooks.jsonzapp/uninstalled)zX-Shopify-Access-TokenzX-Shopify-TopiczX-Shopify-Hmac-Sha256zX-Shopify-Shop-DomainzX-Shopify-API-Versionwebhookzhttps://%s/uninstallZtunnelr   )defaultr$   )Ztopicaddressformat)r#   r$   headerszapplication/json)content_type)lenr+   r   objectsfilteraccess_tokenhmacr   API_VERSIONr   r'   r(   r$   r)   r*   dumps)	r   Zwebrecr0   Z	hmac_datar#   rH   myr.   cr   r   r   unistaller_secondg   s,    
	rS   c                 C   s|  | j dd k	rn| j d}| j d}| j da| j dd k	r | j d}t|dkrltjjtd}|r|d ja|d j}t| dS t	|td}t
jt|d	 d
}d|kr|d }ntdS t }t|_||_||_||_||_|d	 |_|  t| d t| dS t| dS nLtjjtd}|rd|d j}	|d j}
|d j}t| d|
|dS ttS n
t| dS d S )NrN   hostr+   r"   r   rC   r   )r"   r+   rM   r+   r0   Zowner_emailzDidn't Fecthed Owner Emailz
index.html)r+   rT   r   )rB   r?   r+   rJ   r   rK   rL   rM   r;   r0   r   Z	get_emailr   r"   rN   rT   admin_emailsaverS   r   r<   )r   rN   rT   r"   recordget_tknZaccesstokenZget_owner_emailZrecZ	getaccessZgetshopZgethostr   r   r   final   sH    










rZ   c                 C   sz   | j dkrv| jd}t| tjj|d}t| |rntj|d j	|d j
d}t|d  td|d iS tdS d S )NrB   r+   rC   r   rU   themesshop invalid)r>   rB   r?   printr   rK   rL   r   	get_themer+   rM   r   r   )r   r+   
check_shopdatar   r   r   	theme_api   s    
ra   c              	   C   s<  | j dkr8| jd}| jd}| j}ttd d<}t|d|d t|d|d t|d|d td	|d W 5 Q R X | jd
}tjj	|d}t| |r0t
j|d j|d jd}t|d d d d t
j|d j|d j|d t
j|d j|d j|d t
j|d j|d j|d tdhS tdS d S )Nr=   r+   print_output.txtazall_data ....183filezshop ....184zshop_get...185z------------------------theme_idrC   r   rU   r[   r   id)r+   r0   rf   zstatus:successr\   )r>   r=   r?   rB   openBASE_DIRr]   r   rK   rL   r   r^   r+   rM   Zset_cssZset_jsZ
set_liquidr   r   )r   r+   Zshop_getall_datafrf   r_   r`   r   r   r   theme_integration   s(    
rl   c                 C   sh  i }t jj| d}|r\|dkrg }d}|d k	rDtj j|d}ntj j|d jd}|D ]8}|j|j|j|j	|j
|j|j|j|jd	}|| q`||d< |d j|d< qd|dkrFg }	d}
|d k	rtj j|d}
ntj j|d jd}
|
D ],}|j|j|j|j|j|jd	}|	| q|	|d< |d j|d< qdg }d}|d k	rltj j|d}ntj j|d jd}|D ]}d}d}d}d}d}tjj|jd
}|r|d j}|d j}|d j}|d j}|d j}nd}d}d}d}d}|j|j|j|j	|j
|j|j|j|j|j|||||d}|| q||d< |d j|d< nd|d< |S )NrC   Zcustomerdatar   rg   r   )	rg   namecontactNumbercityemailagegenderheightweightr+   matress)rg   
matressforgetting_out_of_bed#driving_and_sitting_in_a_car_or_busclimbing_15_to_20_stairs lifting_and_carrying_bag_luggage)customer_id)rg   rn   ro   rp   rq   rs   rr   rt   ru   r   rx   ry   rz   r{   rw   r   zInvalid Shop Detailmessage)r   rK   rL   r   allrg   pkrn   contact_numberrp   rq   rr   rs   rt   ru   appendr+   r	   rw   rx   ry   rz   r{   r   )r+   typerg   Z	data_dictr_   Z	user_listZalluserr/   Zsub_user_dictmatress_listZ
allmatressZsub_matress_dictZcustomer_listZallcustomerrw   rx   ry   rz   r{   Zmatress_detailZsub_customer_dictr   r   r   get_data   s    






r   c                 C   s<   | j dkr8| jd}| jd}t|||d}t|S d S NrB   r+   r   r+   r   rg   )r>   rB   r?   r   r   r   rg   r+   r   r`   r   r   r   get_customer_internalX  s
    
r   c                 C   s  i }t jj| d}|rv|dkrg }d}|d k	rDtj j|d}ntj j|d jd}|D ]h}|j|j|j|j	|j
|j|j|j|j|j|j|j|j|j|j|j|j|j|j|j|jd}|| q`||d< |d j|d< ng }	tj }
|
D ]h}|j|j|j|j	|j
|j|j|j|j|j|j|j|j|j|j|j|j|j|j|j|jd}|	| q||d< |d j|d< nd	|d
< |S )NrC   Zsmtpdetailsr   rm   r   )	smtp_shop	smtp_host	smtp_portsmtp_usernamesmtp_passworduse_tlsspine_soft_template_userspine_soft_subject_userspine_medium_template_userspine_medium_subject_userspine_firm_template_userspine_firm_subject_userspine_xfirm_template_userspine_xfirm_subject_userspine_soft_template_adminspine_soft_subject_adminspine_medium_template_adminspine_medium_subject_adminspine_firm_template_adminspine_firm_subject_adminspine_xfirm_template_adminspine_xfirm_subject_adminr+   zInvalid smtp detailsr}   )r   rK   rL   r   r~   rg   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r+   )r+   r   rg   Z	smtp_dictr_   Z	smtp_listZallsmtpr/   Zsub_smtp_dictZsmtp_d_listZallsmtpdetailsZsmtp_sub_dictr   r   r   	smtp_dataa  s    
r   c                 C   s<   | j dkr8| jd}| jd}t|||d}t|S d S r   )r>   rB   r?   r   r   r   r   r   r   get_smtp_details  s
    
r   c                 C   s  | j dkrp| jd}| j}ttd d.}td|d t|d|d t|d|d W 5 Q R X tjj|d	}|rf| jd
}| jd}| jd}| jd}| jd}	| jd}
| jd}| jd}| jd}| jd}| jd}| jd}| jd}| jd}| jd}| jd}| jd}| jd}| jd}| jd}| jd}t	jj|d j
d }|rt	jj|d j
d j|||||	|
|||||||||||||||d!}td"S t	|||||	|d j
|
|||||||||||||||d#}|  ttd d0}td|d t|d$|d t|jd%|d W 5 Q R X td&S ntd'S n| jd}t| d(d|iS d S ))Nr=   r+   rb   rc   /...............................................rd   zall_data ....404zshop ....405rC   ZsmtpHostZsmtpPortZsmtpUserZsmtpPasswordZ
smtpUseTLSZsoftTemplateUserZsoftSubjectUserZmediumTemplateUserZmediumSubjectUserZfirmTemplateUserZfirmSubjectUserZxFirmTemplateUserZxFirmSubjectUserZsoftTemplateAdminZsoftSubjectAdminZmediumTemplateAdminZmediumSubjectAdminZfirmTemplateAdminZfirmSubjectAdminZxFirmTemplateAdminZxFirmSubjectAdminr   smtp_shop_idr   z$Sender details update  successfully!)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   zsender ....436zsender ....437z"Sender details saved successfully!zShop not found!z	smtp.html)r>   r=   r?   rh   ri   r]   r   rK   rL   r   rg   updater   rW   r   rB   r   )r   r+   rj   rk   r_   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zchengesenderr   r   r   save_smtp_details  sX    D:

r   c           G      C   s  t td dB}td|d t| jd|d t| jd|d t| jd|d W 5 Q R X | jdkr| jd	}tjj	|d
}|r| jd}| jd}| jd}| jd}| jd}| jd}	| jd}
| jd}| jd}| jd}| jd}| jd}| jd}t
||||||	|
|t|d jd
}|  |rlt||||||j|d jd}|  g }i }g }i }|j}|rt|d jd|d}|| nt|d jdd}|| |r|D ]}|}|d }g }g }g }g }|d d dk rdn
|d d }
tjj|
d j} tjj|
d j}!tjj|
d j}"tjj|
d j}#| rj||  |!rz||! |"r||" |#r||# |d d d!k rd!n
|d d }	tjj|	d"j}$tjj|	d"j}%tjj|	d"j}&tjj|	d"j}'|$r||$ |%r||% |&r,||& |'r<||' |d d d#k rRd#n
|d d }tjj|d$j}(tjj|d$j})tjj|d$j}*tjj|d$j}+|(r||( |)r||) |*r||* |+r||+ g },g }-g }.g }/tjjd|d d d%j}0tjj|0d&j}1tjj|0d&j}2tjj|0d&j}3tjj|0d&j}4|1r\|,t|1 |2rl|-|2 |3r||.|3 |4r|/|4 tjjd|d d d%j}5tjj|5d&j}6tjj|5d&j}7tjj|5d&j}8tjj|5d&j}9|6r|,t|6 |7r
|-|7 |8r|.|8 |9r*|/|9 tjjd|d d d%j}:tjj|:d&j};tjj|:d&j}<tjj|:d&j}=tjj|:d&j}>|;r|,t|; |<r|-|< |=r|.|= |>r|/|> tjjd|d d d%j}?tjj|?d&j}@tjj|?d&j}Atjj|?d&j}Btjj|?d&j}C|@r6|,t|@ |ArF|-|A |BrV|.|B |Crf|/|C |tt|,d' |tt|-d' |tt|.d' |tt|/d' tt|d'|d(< tt|d'|d)< tt|d'|d*< tt|d'|d+< ||d d,< |D ]v}D|Dd- |Dd |Dd |Dd |Dd |Dd |Dd |Dd |Dd |Dd. |Dd |Dd |Dd |Dd |Dd |Dd, d/}E||E qq||d< t||jd0}Ft td d,}td|d t|d1|d td2|d W 5 Q R X tj ||||Fd3 tj!|||Fd4 t"|S nt#d5S d S )6Nrb   rc   r   rd   zrequest.method ....zrequest.POST ....zrequest.GET ....r=   r+   rC   rn   ro   rp   rq   rs   rr   rt   ru   rx   ry   rz   r{   rw   r   )
rn   r   rp   rq   rs   rr   rt   ru   r   shop_id)rw   rx   ry   rz   r{   r|   r   Z
submissionr   )r+   r   r   n   )rt      )Age(   )ru   )
field_namefield_value)Physical_Age_Field_id   
spine_softspine_medium
spine_firmspine_xfirmresultrg   r   )rg   rn   ro   rp   rq   rs   rr   rt   ru   r   rx   ry   rz   r{   rw   r   )keyzresult_dict ....zresult_dict  ....)r   tor+   
max_result)r   r+   r   zshop is not available)$rh   ri   r]   r>   r=   rB   r?   r   rK   rL   r   r   rg   rW   r	   r   r+   r   r   r   r   r   r   r   r   r
   r   floatroundAveragemaxr   
email_userZemail_adminr   r   )Gr   rk   r+   r_   rn   r   rp   rq   rs   rr   rt   ru   rx   ry   rz   r{   rw   Zcustomer_dataZmatress_datar   Z
avg_resultZfinal_resultZresult_dictrg   r`   itemZ	item_dictZ
c_customerr   r   r   r   Zheight_avg_ssZheight_avg_smZheight_avg_sfZheight_avg_sxZ
age_avg_ssZ
age_avg_smZ
age_avg_sfZ
age_avg_sxZweight_avg_ssZweight_avg_smZweight_avg_sfZweight_avg_sxZ
phy_age_ssZ
phy_age_smZ
phy_age_sfZ
phy_age_sxZphy_age_g_idZphy_age_g_value_ssZphy_age_g_value_smZphy_age_g_value_sfZphy_age_g_value_sxZphy_age_d_idZphy_age_d_value_ssZphy_age_d_value_smZphy_age_d_value_sfZphy_age_d_value_sxZphy_age_c_idZphy_age_c_value_ssZphy_age_c_value_smZphy_age_c_value_sfZphy_age_c_value_sxZphy_age_l_idZphy_age_l_value_ssZphy_age_l_value_smZphy_age_l_value_sfZphy_age_l_value_sxr/   Zsub_dictZmax_keyr   r   r   matress_details  s   	

"



"



"
















r   c                 C   s   t | t|  S )N)sumrJ   )lstr   r   r   r     s    r   c                 C   sL  | j dkr| jd}d}d}d}d}d}d}d}	d}
d}d}d}d}d}d}d}d}d}d}d}d}d}tjj|d}|g kr|d k	r>d}ztjj|d}tj|dd}|	}	tj|
dd}
|}tj|dd}|}tj|dd}|}tj|dd}|}tj|dd}|}tj|dd}|}tj|dd}|}W n6 tj	k
rj   t
j}t
j}t
j}t
j}t
j}Y nX |j}|j}|j}|j}|j}tj|jdd}|j}	tj|jdd}
|j}tj|jdd}|j}tj|jdd}|j}tj|jdd}|j}tj|jdd}|j }tj|j!dd}|j"}tj|j#dd}|j$}qd}ztjj|d j%d	}tj|dd}|	}	tj|
dd}
|}tj|dd}|}tj|dd}|}tj|dd}|}tj|dd}|}tj|dd}|}tj|dd}|}W n6 tj	k
r    t
j}t
j}t
j}t
j}t
j}Y nX |j}|j}|j}|j}|j}tj|jdd}|j}	tj|jdd}
|j}tj|jdd}|j}tj|jdd}|j}tj|jdd}|j}tj|jdd}|j }tj|j!dd}|j"}tj|j#dd}|j$}nt
j}t
j}t
j}t
j}t
j}t&|d j'|||||||	|
|||||||||||||d
S )NrB   r+   r   rC   )r   T)quoter   r   )r+   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )(r>   rB   r?   r   rK   rL   r   htmlescapeDoesNotExistr   
EMAIL_HOST
EMAIL_PORTEMAIL_HOST_USEREMAIL_HOST_PASSWORDEMAIL_USE_TLSr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rg   r   r+   )r   Z	sender_idr+   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r_   r   r   r   r   email_configs  s    


r   )N)N)N)N)N)>Zdjango.shortcutsr   django.httpr   r   r   modelsr   r	   r
   r   r   r   r   r   r   datetimer   django.views.decorators.csrfr   rq   r   Zdecoupler   r'   r$   Z$django.views.decorators.clickjackingr   Z
ShopifyApir   django.confr   r   pathlibr   __file__resolveparentri   r%   r&   rO   r5   r+   rY   r    r0   r<   r@   r;   rS   rZ   ra   rl   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s\   ,
!
=

e
	
H

2
 p