U
    g                    @   s
  d dl Z d dlmZ d dlmZ d dlmZ d dlmZmZ d dl	m
Z
 d dlmZ d dlZd dlmZ d d	lmZ d dl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mZmZ d dlZd dl Z!d dl"Z"d dl#m$Z$m%Z% d dl&m'Z' d dl(m)Z)m*Z*m+Z+ zd dl,m-Z- W n" e.k
rB   d dl/m-Z- Y nX d dl0m1Z1 d dl2m3Z3m4Z4m5Z5 d dl6m7Z7m8Z8m9Z9 d dl:m;Z;m<Z<m=Z= d dl>m?Z? d dl@mAZAmBZBmCZC d dlDmEZEmFZF d dlGmHZH d dlImJZJmKZKmLZLmMZMmNZNmOZOmPZP d dlQmJZRmKZSmLZTmMZUmOZVmPZW d dlXmZ d dlmYZY d dlZZZd dl[m\Z\m]Z] d d l^m_Z_m`Z` d d!lambZb d d"lcmdZdmeZemfZfmgZgmhZhmiZimjZjmkZkmlZlmmZmmnZnmoZompZpmqZqmrZrmsZsmtZt d d#lumvZvmwZwmxZxmyZy d d$lzmvZ{mwZ| d d%l}m~Z~mZmZmZ d dl:m;Z;m<Z<m=Z= d dl>m?Z? d d&l}m~Z~mZmZmZmZ d d'lmZ d d(lmZmZ d d)lmZ d d*lmZmZmZ d d+lmZ d dlZd dlZd d,lmZ d dlmZ d d-lmZ d d.lmZmZmZmZmZ d d/l6m7Z7m9Z9m8Z8 d d0lmZ d d1lmZ d dlmZ d d2lmZ d d3lmZ d d4lmZ d5d6 Z7d7d8 Zd9d: Zd;d< Zd=d> Zdd?d@ZeddAdBZddCdDZddEdFZddGdHZe;dIdJge<eefeddKdLZe;dIdJge<eefedMdN ZdOdP ZdQdR ZdSdT Ze;dIdJge<eefedUdV Ze;dIdJge<eefedWdX Ze;dIdJge<eefedYdZ Ze;dIdJge<eefed[d\ Ze;dIdJge<eefed]d^ Ze;dIdJge<eefed_d` Zdadb Zdcdd Zdedf Ze;dIdJge<eefedgdh Ze;dIdJge<eefedidj Zdkdl Ze;dIdJge<eefedmdn Ze;dIdJge<eefedodp ZeF dqdr Zee;dJge=eYjfdsdt Zee;dJge=eYjfdudv ZeF dwdx ZeF dydz Zee;dJge=eYjfd{d| Ze;dIdJge<eefed}d~ Ze;dIdJge<eefedd Ze;dIdJge<eefedd Zdd Zdd Ze;dIdJge<eefedd Zdd Ze;dIdJge<eefedd Ze;dIdJge<eefedd Ze;dIdJge<eefedd Ze;dIdJge<eefedd Ze;dIdJge<eefedd Ze;dIdJge<eefedd Ze;dIdJge<eefedd Ze;dIdJge<eefedd Zedd Ze;dIdJge<eefedd Ze;dIdJge<eefedd Ze;dIdJge<eefedd Zd dlmZ edd Ze;dIdJge<eefedd Ze;dIdJge<eefedd Ze;dIdJge<eefedd Ze;dIdJge<eefedd Ze;dIdJge<eefedd Ze;dIdJge<eefedd Ze;dIdJge<eefedd Ze;dIdJge<eefedddZe;dIdJge<eefedd Zedd Ze;dIdJge<eefedd Ze;dIdJge<eefedd Ze;dIdJge<eefedd Ze;dIdJge<eefedd Ze;dIdJge<eefeddÄ Ze;dIdJge<eefeddń Ze;dIdJge<eefeddǄ Ze;dIdJge<eefeddɄ Ze;dIdJge<eefedd˄ Ze;dIdJge<eefedd̈́ Ze;dIdJge<eefeddτ Zddф Ze;dIdJge<eefeddӄ Ze;dIdJge<eefeddՄ Zddׄ Ze;dIdJge<eefeddل Zddۄ Zdd݄ Zdd߄ Zdd Ze;dIdJge<eefedd Zedd Ze;dIdJgedd ZdS )    N)datetime)	MIMEImage)redirect)IntegrityError
connection)F)settings)	exceptionchoice)	parse_qsl)get_templatestatus)csrf_exempt)logout)make_passwordcheck_password)cachescache)model_to_dict)RequestContextContextloader)logger)ObjectDoesNotExist)JsonResponseHttpResponseRedirectHttpResponse)	send_mailEmailMessageEmailMultiAlternatives)api_viewauthentication_classespermission_classes)Response)OAuth1OAuth1SessionOAuth2)load_backendpsa)	_do_login)Plan
PlanRatingDraftedPlan
PlanVideosPlanSession	PlanGoalsSelectedAbilities)r,   r-   r.   r/   r1   r2   )permissions)BASE_DIRPAGING_ROWS)OrganizationCampainUrls)AuthResponseSerializer)UserUserAddress	UserPhotoFitnessProfiletrainerProfiletrainerVideosgoals
UserfollowInvitationsSocialProfileAccountDetailsUserReferral	UserLikesUserPlateWeightUsersValidSessionsCampaignDetailsNews_letter)UserPlanUserTestPlanUserSetsUserExercise)rJ   rK   )StartFitAuthenticationSessionAuthenticationStartFitSessionUtilAuthResponse)rN   rO   rP   rQ   IsAuthenticated)never_cache)render_to_stringr   )date)r   	timedeltatime)relativedelta)rV   )CampaignFeed)CountryPriceMappingPriceConversion
AppVersion
TmaxLookup)r   r!   r    )MIMEMultipart)MIMEText)
officeMail)timezone)GeoIP2c                 C   s8   d}d}d}d}t ||||g}||d |  d S )NException Detailszadmin@stratfit.netzsoubhik.g@stratfit.coz<p>,dfgkdfj slkjg dlfgj gj</p>z	text/html)r!   attach_alternativesend)requestsubject
from_emailto_emailmessagemsg rm   */var/www/html/services/Subscriber/views.pyr   P   s    r   c                 C   sZ   t | d t |d t | t | d}d}||| |t d}td|}t||| d S )Nz+++++z============rd   zerrors@stratfit.co)URLRequestZUserIDErrorTimezexceptiondetails.html)printr   nowrT   ra   )userrequrlerrrh   rj   ctxrk   rm   rm   rn   exceptionMailY   s    


rz   c              
      s  zi }g  t jd}tjj|d d rBtdddW S  fdd}fd	d
}|d }t	j
 }|||}| }W 5 Q R X tj|||fd}	|	  tdd|d  d dW S  tk
r }
 z"td tdt|
i W Y S d }
~
X Y nX d S )Nutf-8emailr|   F'Account with this E-Mail already existssuccessrk   c                    s  d}d| krz| d dkrz| d }t | tjdddj|d}| rt|D ]$}|d }|d }||krL|}d}qLq~d}nd}|dkrtdd	d
S tjj| d d rtddd
S d| kr| d }nd}d| kr| d }	nd}	tjjd| d | d | d |d}
d| kr*| d dkr*| d |
_	nd|
_	d| krP| d dkrPd|
_
nd|
_
d| krx| d dkrx| d |
_|	dkr|	|
_d| kr| d dkr| d |
_d| kr| d dkr| d |
_|
  |
j}||
_||
_|
  ddd tdD }t|}d}tjj|d }|j}|rHtjj||jd!}|  ntjj|d"d!}|  tjj|
jd }| rtjj|d#}d$|_|  dd%d tdD }t|}tjj||dd&}|  |
}|} |  |  S d S )'NTreferalcode iduser_idreferralCode)r   FzInvalid Referral Coder   r|   r}   r~   password123abcphone   fname)userType
first_namer|   usernamereferUser_idcurrencytypeUSDcompanyZpink   lnameip
deviceTypec                 s   s   | ]}t d V  qdS 
0123456789Nr
   .0irm   rm   rn   	<genexpr>   s     z*register.<locals>.store.<locals>.<genexpr>   Indianamer   country   r      c                 s   s   | ]}t d V  qdS r   r
   r   rm   rm   rn   r      s     r   r   r   )rs   rD   objectsvaluesfilterexistsr   r9   createcurrencyType
company_id	last_namer   r   r   saver   createdBy_idmodifiedBy_idjoinrangestrrZ   getdialCoder:   rA   r|   r   append)userObjDataZ
referalMsgr   refdtZrcodeZruseridZrefferedUseridpasswdr   userDatauserId
randomCoderandr   	countryIDcounrtycodeuserCountryZinvitedUsersZ
updateUserrandomCode1	randcode1userrefvidatarandnumdatarm   rn   storet   s    










zregister.<locals>.storec                    s   t d | d }| d }tjj|jd}|jd t| d  }t|	d} j
d }d| d	 | }d
}	|j}
|j||d}td|}t|	||
 ||_t||_| d |_d|_|  tjj|jd}|j}|S )NZasdfghjr   r   r   #ascii	HTTP_HOSThttp://zE/services/services/stratservices/subscriber/accountValidateNew1?code=zAccount Activationr   linkr   zemailverfication.htmlr   )rs   r9   r   r   r   r|   r   base64	b64encodeencodeMETAr   rT   ra   
secretCoder   r   otp	is_activer   r<   r   )r   r   cr   instanceSubsecret_code_plainsecret_code_encodevalidateLinkr   rh   rj   ry   rk   fitnessprofiler   rg   rm   rn   mail   s4    




zregister.<locals>.mailr   targetargsTz; Account Created successfully, please check your mail. Use r   zas OTPsomething wrongrl   )jsonloadsbodydecoder9   r   r   r   r   
concurrentfuturesThreadPoolExecutorsubmitresult	threadingThreadstart	Exceptionr   r	   r   )rg   r   r   r   r   r   executorfuturecidt2erm   )r   rg   rn   registerl   s$    k)
r   c              
   C   s  dd l }zt| jd}tjj|d d}|r|j}|	dd }|	dd }t
t|  d }dt| d }|t| | }	|	|_|  |j}
tjj|
d	 }td
|	iW S W nB tk
r  } z"td tdt|i W Y S d }~X Y nX d S )Nr   r{   r|   r}   @r   i  .r   rk   r   rl   )rW   r   r   r   r   r9   r   r   r|   splitintroundr   r   r   rB   r   deleter   r   r   r	   )rg   rW   r   r   r|   Z	New_emailZnewemailZ	milli_secZ
append_strZMailIDsocialr   rm   rm   rn   New_Mail  s&    
r   c              
   C   s   t | jd}t| zdtjj|d d}| rltjj	|d |d d}d|_
|  tddd	W S td
dd	W S W nB tk
r } z$td td
t|d	 W Y S d }~X Y nX d S )Nr{   r   r   r|   )r   r|   r   TValid Emailr   FInvalid OTPProblem with Update User)r   r   r   r   rs   r9   r   r   r   r   r   r   r   r	   r   errorr   )rg   r   instancer   r   rm   rm   rn   validateOTP/  s    
r  c              
   C   s   | j dkrtddiS | j dkrt| jd}zNtjj|d dj|d d	}|	 rltd
dddW S tddddW S W q t
k
r } z$td tdt|d W Y S d }~X Y qX ntddiS d S )NGETrk   6Please use POST with applicable JSON for login servicePOSTr{   r|   r}   coder   Tz	valid otpr   )r   rk   r   Fr  r   zProblem with ionic otpr   )methodr   r   r   r   r   r9   r   r   r   r	   r   r  r   )rg   formatr   r  r   rm   rm   rn   ionicotpvalidateA  s    


*r  c                 C   s   | j d }t| tjj|dddd}| r|D ]z}|d }|d }|dkr^td  S tjj|d}d|_	|
  d	}|j}	d
|ji}
td|
}t|||	 td  S q6ntddiS d S )Nr
  r}   r   r   r   r   zhttp://stratfit.net/pkWelcome to StratFitr   welcome.htmlMessagez"Please Provide a valid Information)r  rs   r9   r   r   r   r   r   r   r   r   r|   r   rT   ra   r   )rg   r  r   r   r   useridZactiveStatus
updateuserrh   rj   ry   rk   rm   rm   rn   accountValidateNewR  s*    
 
r  c           
   
   C   sf  d}t }| jdkrtddiS | jdkrVt| jd}zzt|d  t	  W n& t
jk
r|   tdd	d
 Y W S X t|d d}|dd}t jj|d dj|d d}|  rt jj|d d}d|_|  tdd|d dW S tddd
W S W nD tk
rR }	 z$td tdt|	d
 W Y S d }	~	X Y nX ntddiS d S )Nr|   r  rk   r  r	  r{   r
  Fz
Wrong Coder   r   r   r   r   r}   r   Tr  r   rk   r|   6Sorry, This is not a valid information, contact admin.r  )r9   r  r   r   r   r   r   r   	b64decoders   binasciirq   r   r   r   r   r   r   r   r	   r   r  r   )
rg   r  lookup_fieldmodelr   
codeDecodecodeDecodeSplitr  r   r   rm   rm   rn   accountValidatel  s2    



*r  c                 C   s  d}t }| jdkrtddiS | jdkrt| jd}zt jj|d dj|d d	}|	 rt jj
|d d}d
|_td |  t }||j}|}	t|	 zt jj
|d d}
|
j}t|
j |
jd k	r`d| jd< |
j| jd< |
j| jd< |
j| jd< |
j| jd< tddg g g g dddd|d |d |
j||
j|
j|
j|
j|
jdW W S W nZ tk
r } z:tddd t }d|_d|_tdt|d W Y W S d }~X Y nX ntdddW S W nD tk
r } z$td tdt|d W Y S d }~X Y nX d S )Nr|   r  rk   r  r	  r{   r}   r
  r   r   zhere IamTloggedInr   r   is_superuserLogged In successfullyFsessiontoken)r   rk   profiler?   tmaxplansisProfileSet	isGoalSet	isPlanSet	isTmaxSetr
  r#  userDetailsr   r   r!  r   r   r   Login attempt failed with usersafe  Invalid_Credentialsr   r  r  )r9   r  r   r   r   r   r   r   r   r   r   r   rs   r   rN   authenticater|   r   sessionr   r!  r   r   rQ   r
  rk   r   r	   r   r  )rg   r  r  r  r   r  r   stratauthenticationloginResponseuserDataObjquerysetr   r   authResponserm   rm   rn   accountValidateOTP  sL    



L,
r8  c              	      s"  d}t }| jdkrtddiS | jdkrt| jd}t jj|d dj	}g   fdd	}d
d }t
j }|||}	|	 }
W 5 Q R X tj||
fd}|  |
d }t jj|d d}| rt jj|d d}t|d |_d|_|  td|dS tdddS d S )Nr|   r  rk   r  r	  r{   r}   c                    s   j dkrfd}tjj| d}d}|j}d|ji}td|} |  |  |  |  S d}tjj| d}d}|j}d|ji}td	|} |  |  |  |  S d S )
Nr   z>Your Password Changed Successfully,LogIn with your credentialsr   zChange Passwordr   zchangepassword.htmlz:Your Password Set Successfully,LogIn with your credentialsr  r  )r   r9   r   r   r|   r   rT   r   )r  pwdMsgZuserdetrh   rj   ry   rk   subdeatailsZmailinfoZsubscriberPwdrm   rn   store3  s6    
 




 




zresetPwd.<locals>.store3c                 S   s0   | d }| d }| d }t d t||| d S )Nr   r   r   Zhherrefdvvvvvdghhhhbv)rs   ra   )inforh   rk   rj   rm   rm   rn   mail3  s
    zresetPwd.<locals>.mail3r   r   r   r   Tr   FzNo Valid Email)r9   r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )rg   r  r  r  r   r  r<  r>  r   r   r=  r   r9  subscriberExistr  rm   r;  rn   resetPwd  s2    
!
r@  r  r	  c              
   C   sj  t  }|| }|d }d}d}z|d k rd}t}| jdkrLtddiW S | jdkrt| jd}	tj	j
|	d	 d
}
|
 rtj	j|	d	 d
}t|	d |jrt|	d |_|  tdddW S tdddW S ntdddW S ntddiW S ntdddW S W nT tk
rd } z4td t|||t| tdt|i W Y S d }~X Y nX d S )Nr   r  zThttp://alpha.stratfit.net/services/services/stratservices/subscriber/changePassword/r|   rk   r  r	  r{   r   r   ZoldPasswordZnewPasswordTz&Password has been changed successfullyr   FzYour old password is incorrectzUser not foundUser logged outr   rl   )rP   get_user_insessionr9   r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	   rz   r   )rg   r  stratsessionutilr   ru   rv   rw   r  r  r   r?  r  r   rm   rm   rn   changePassword  s8    




rD  c                 C   s
  zt | jd}t }| jdd k	r|| }|d }tj	j|d}|j
}tj	dj|jdddd	d
ddddd	}d}i }	i }
i }| r|D ]:}t|}
|
d d kr|
d |
d< |
d d|
d< d}qtj	j|jd }d}| rd}|D ]}t|}	qtj	j|jdjddgd }d}d}d}g }g }tj	j|jd}|j}| rd}d}|D ]}t|}tj	dddj|d dddddd d!d"d#d$d%d&d'd(d)d*d+}|D ]}t|}|d' d,ks|d' d-kr4tj	j|d( d}t|d% d. tt|j
d/ t|j  d0 |d%< nFtj	j|d) d}t|d% d. tt|j
d/ t|j  d0 |d%< q||d1< || qrtj	j|jdd2d3d4d5ddd6d7d8d9d:d;d<d=}| rd}|D ] }t| t|}|| qt|j |jd k	rd| jd>< |j| jd< |j| jd:< |j
| jd?< |j | jd@< t!ddA|
|	|||||||dB |||j
|j|j |j"|j|j#|j|j$|j%|j&|j'|||j|j(|j)dCW S nt!ddDdEW S W nB t*k
r } z"t+,dF t!dGt|i W Y S d }~X Y nX d S )HNr{   HTTP_AUTHORIZATIONr|   r}   User__idr   genderdobheight
heightUnitweight
weightUnituser_id__iduser_id__emailuser_id__first_nameFdob1%Y/%m/%dTru   r   r   
status__inr   	Goals__idProgramType__idplan_idr   planName	planPhotocreatedBy__first_namecreatedBy__last_namepriceduration_weeksabilityplanGoal__goalNameplanDescriptionprogramType__programTypeNamelicencePolicyr   originalPlanner_idiosPrice	iosStatus3White-Label<br><h6>Copyright &copy; 2017  . All rights reserved.</h6>r=  createdDateexerciseId_idexerciseId_id__exerciseNameexerciseNamer%  
updateTmax
updateTypeupdatedDater   userplan_id
workWeightworkoutTestDater   r   r!  r"  Zutokken)r   rk   r$  r?   r%  r&  r'  r(  r)  r*  r#  r+  r   r   r   r!  r   r   r   orgIdavatarr   r   r   orgNameisFreeTrailr|   	phonecode
coverImagerA  r   r   rl   )-r   r   r   r   rP   r   r   rB  r9   r   r   r<   select_relatedr   r   r   r   dictstrftimer?   rJ   r6   organization_idgymNamer,   r   r   r   rK   rs   r|   r2  r!  r   r   r   rv  r   r   r   	phoneCode	userCoverr   r   r	   )rg   Z	usertokenrC  ru   Zuemailr6  r   fitProQuerySetr'  dataGoalObj
dataFitObjdataTmaxObjr   goalDetailsr(  PlanDetailsr)  r*  rx  r&  tmaxArr	orgValuesrw  planObj	planInfosdtpplanInfopartnerName	coachNametmaxDetailsr   rm   rm   rn   ionicloginchecking,  s    
,
 

@680


h
r  c           F   2   C   s:  t | }| jdkr6zt| jd}| jdd |d< tj	jdd}|j
}d|krtd d	|kr|d	 dkrtd
 tj	j|d d}td d|_|  t }||}|}
z|d dkrd|krtdd|d dW W S ntd|d dW W S 
nFtj	j|d d d}	|	j}
|	jdks<|	jd krfd|krf|d dkrf|d |	_|	  tj	jdd}tj	jdd}tj	dj|	jddddddd d!d"d#d$
}d}i }i }i }| r|D ]>}t|}|d d kr
d%}|d |d&< |d d'|d< qtj	j|	jd( }d}| rXd%}|D ]}t| t|}t| q8tj	j|	jd(jdd)gd* }tj	j|	jd}d}d}g }g }d%}| rd}d%}|D ]}t|}tj	j|d+ d, }t j	d-d.dj|d+ dd/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdF}t|j! | rR|D ]}t|} t"j	dGj| d/ d,dH}!d}"|!D ]}#t|#}$|"dI|$dH  7 }"qr|"dkr|"dd  }%nd}%t#j	dJj| d/ d,dK}&d}'|&D ]}#t|#}$|'dI|$dK  7 }'q|'dkr|'dd  }(nd}(|(| dL< |%| dM< |(| d5< |%| d<< | dB dNksL| dB dOkrtj	j| d@ d})t$| d7 dP t$t$|)jdQ t$|)j%  dR | d7< nFtj	j| dA d}*t$| d7 dP t$t$|*jdQ t$|*j%  dR | d7< dS| dT< dU| dV< || dW< t|dX d|kr,|d dYkr,|j&dZkr|d d[ d\krX| dE | d3< | dE | d]< | dE | dC< n| dC | d3< | dC | d]< t'| d3 dkrd^| d3< n|d d[ d\krt(j	 j| dE d_}+nt(j	 j| dC d_}+|+D ]},t|,}-|-d` }.q|.| d3< |d d[ d\kr| dE | dC< t'| d3 dkr(d^| d3< nt'| d3 dkrHd^| d3< n|j&dZkr|d d[ d\kr| dF | d3< | dF | d]< | dE | dC< n| d3 | d3< | d3 | d]< n||d d[ d\krt(j	j| dE d_}+| dF | d3< | dF | d]< |+j)| dC< n4t(j	j| dC d_}+|+j)| dC< | d3 | d3< | d3 | d]< t*| d3 dkr<d^| d3< q>| |da< |+| qt,j	j|	jd(dbdcddded/d+dfdgdhdidjdkdldm}/|/ rd%}|/D ] }t| t|}|+| qt|	j- t.j	j|	j/d}0|0j0}1t1j	j|	jd }2|2 rD|2D ]D}3t|3}4|4dn }5t23|5 t1j	j|4d/ d}6|do |6_4|6  qnt1j	j5|	j|do dp}7|7  t67 }8dq}9|88|9 t9|8}:g };|:D ]}<t|<}=|;+|= qt|	j t:|	j|;}>tdr |>g k	r |;D ]P}?|?d/ }@d}A|>D ]8}B|Bds |@k	r|Bdt |?du< d%}An|Adk	rd|?du< qq|	j-d k	rNd%| j;dv< |	j-| j;d< |	j| j;dj< |	j| j;dw< |	j<| j;dx< t|;d%dy|||||||||dz |do |d d |
|	j|	j=|	j%|	j<|	j|d d/ |	j>|	j/|	j?|	j@|1||d d{ |d d| |	j-|d d} |d d~ |jA|jAddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddg
ddiddiddiddiddiddiddiddiddig	dddddddddddddd)ddddddgdddddddddd)dddd)dddd)ddddddddddgdd%W W S W nt tBk
r }C zTtdt$|Ci W Y >W S tddd tC }Dd|D_Dd|D_Etddd W Y W S W 5 d }C~CX Y nX n.tF }E|E| }
|
d k	rd}nd}tG|W S W n< tBk
r4 }C ztdt$|Ci W Y S W 5 d }C~CX Y nX d S )Nr	  r{   REMOTE_ADDR	remote_ipr   r   r|   	CAME HEREskip
CAME HERE1r}   
CAME HERE2r   Falser   Fr   rk   r   r   rk   r   r+  r   r   r   rF  r   rG  rH  rI  rJ  rK  rL  rM  rN  rO  trainingLevelTrP  rQ  rR  r   rS  rW  rW  rU  rV  r   rX  rZ  r[  r\  r]  r^  r_  r`  ra  
planStatusnum_of_periodsnum_of_sessionsr?   rY  programType_idcreatedBy__avatarr   rc  rb  rd  re  indianIosPriceindianPricePlanPurposesplanGoal_id__GoalName, PlanAbilitiesability_id__abilityplanPurpose
plan_goalsrf  rg  rh  ri  rj  ztxEOSIcMc4genWarmupVideo2esZzqjO5CccooldownVideo	planUsersuserDataOBJiosINRr   X   	planPriceFreeinrusdr=  rk  rl  rm  rn  r%  ro  rp  rq  r   rr  rs  rt  sessionTokenr#  r   r  a:  SELECT *,uae.id AS advexId,ue.id as id,uv.videoLink as video_id__videoLink FROM `utility_exercise` ue LEFT JOIN `utility_advexercises` uae ON ue.id = uae.exercise_id LEFT JOIN `utility_videos` uv ON uv.id = ue.video_id WHERE ue.id IS NOT NULL AND ue.accessLevel = 0 AND ue.exerciseStatus =1 ORDER BY ue.exOrder ASCz	Here I AMexIdtmaxValdefaultTmaxr   r   r!  r"  r
  r   r   r  r  Hip Circles   Not ApplicableBothNameRepsZExTimeZ	DirectionZ	EquipmentKnee Circles
   Standing lower back release
Roll oversFire Hydrant CirclesEach leg / DirectionFoam Rolling - Back   Foam RollerIT BandEach leg	Adductors!Ball Rolling (Cricket / Baseball)30	Each sideCricket / BaseballArm Swings - Over underr   FLoor Quadraceps StretchFloor Glute Stretch!Neck, Back, and Hamstring StretchClassic Hamstring StretchShoulders and Biceps StretchLower Back StretchFrog StretchCat StretchTriceps and Lat Reach Stretch2   ZSetsr  	intensity   <   r   F   P   Z   ZstrengthZ	explosive)%	Exercisesr   rk   r$  r?   r%  r&  r'  r(  r)  r*  r
  r#  r+  r   r   privacyr   r!  r   r   r   ru  rv  r   rw  rx  r   r   r|   ry  rz  androidVersion
iosVersiongeneralWarmupCooldownexerciseWarmuprl   r,  r-  r/  r0  Invalid Username Or Password{"result":"success"}{"result":"failure"})Hr   r  r   r   r   r   r   r   r\   r   inrValuers   r9   r   r   rN   r1  r   r   r   r]   r<   r{  r   r   r   r   r|  r}  r?   rJ   countr,   queryr1   r2   r   r   r   r   r[   r  floatr   rK   r|   r6   r~  r  rG   r   r   r  r   r   cursorexecutedictfetchalldefaultTmaxValuesr2  r!  userPrivacyr   rv  r   versionr   rQ   r
  rk   rO   r%   )Frg   contextjsonDcurrencyValuesr  r  r3  r4  r5  r6  r   androidversion
iosversionr  r'  r  r  r  r   r  r(  r  userCurrencyr)  r*  r&  r  rx  r  downloadUsersr  r  r  planPurposesValpurposesvalvalObj	planGoalsplanAbilityValabilitieslistsplanAbilitiesr  r  usdValuer  usdObj	dollarValr  r  rw  usersessionssesssessObjsessKeyupdatesessioncreateUserSessxallExecDetailsresultQueryPlanExercisesdt7	dataExObjr  ex1r  	firstTempdexr   r7  sessionAuthenticationrm   rm   rn   	userLogin}  s   


.

 

P




64



0









 ,

r  c           :   0   C   s
  t | }| jdk
r
zBt| jd}| jdd |d< tj	jdd}|j
}d|k
r(td d	|kr|d	 dkrtd
 tj	j|d d}td d|_|  t }t|d ||}t|d |}z|d dkrd|krtdd|d dW W S ntd|d dW W S ntj	j|d d d}	|	j}
|	jdksR|	jd kr|d|kr||d dkr||d |	_|	  tj	jdd}tj	jdd}tj	dj|	jddddd d!d"d#d$d%d&
}d}i }i }i }| r$|D ]>}t|}|d d kr d'}|d |d(< |d d)|d< qtj	j|	jd* }d}| rnd'}|D ]}t| t|}t| qNtj	j|	jd*jdd+gd, }tj	j|	jd}d}d}g }g }d'}| rfd}d'}|D ]}t|}tj	j|d- d. }t j	d/d0dj|d- dd1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdH}t|j! i }|D ]} t| }t"j	dIj|d1 d.dJ}!d}"|!D ]}#t|#}$|"dK|$dJ  7 }"q|"dkr|"dd  }%nd}%t#j	dLj|d1 d.dM}&d}'|&D ]}#t|#}$|'dK|$dM  7 }'q|'dkr|'dd  }(nd}(|(|dN< |%|dO< |(|d7< |%|d>< |dD dPks\|dD dQkrtj	j|dB d})t$|d9 dR t$t$|)jdS t$|)j%  dT |d9< nFtj	j|dC d}*t$|d9 dR t$t$|*jdS t$|*j%  dT |d9< dU|dV< dW|dX< ||dY< t|dZ d|kr<|d d[kr<|j&d\kr|d d] d^krh|dG |d5< |dG |d_< |dG |dE< n|dE |d5< |dE |d_< t'|d5 dkrd`|d5< n|d d] d^krt(j	 j|dG da}+nt(j	 j|dE da}+|+D ]},t|,}-|-db }.q|.|d5< |d d] d^kr|dG |dE< t'|d5 dkr8d`|d5< nt'|d5 dkrXd`|d5< n|j&d\kr|d d] d^kr|dH |d5< |dH |d_< |dG |dE< n|d5 |d5< |d5 |d_< n||d d] d^krt(j	j|dG da}+|dH |d5< |dH |d_< |+j)|dE< n4t(j	j|dE da}+|+j)|dE< |d5 |d5< |d5 |d_< t*|d5 dkrLd`|d5< qN||dc< |+| qt,j	j|	j-d}/|/j.}0t/j	j|	jd }1|1 r|1D ]D}2t|2}3|3dd }4t01|4 t/j	j|3d1 d}5|de |5_2|5  qnt/j	j3|	j|de df}6|6  |	j4d k		rd'| j5dg< |	j4| j5d< |	j| j5dh< |	j| j5di< |	j6| j5dj< td'dk||||||||dl |de |d d |
|	j|	j7|	j%|	j6|	j|d d1 |	j8|	j-|	j9|	j:|0||d dm |d dn |	j4|d do |d dp |j;|j;dqdrdsdtdsdudvdwdsdtdsdudxdwdsdsdsdudydwdsdsdsdudzdwdsd{dsdud|d}dsdsd~dudd}dsdd~dudd}dsdd~dudddddduddwdsdsdsdug
ddiddiddiddiddiddiddiddiddig	d"W W S W nt t<k

r$ }7 zTtdt$|7i W Y >W S tddd t= }8d|8_>d|8_?tddd W Y W S W 5 d }7~7X Y nX n.t@ }9|9| }
|
d k	
rHd}nd}tA|W S W n< t<k

r }7 ztdt$|7i W Y S W 5 d }7~7X Y nX d S )Nr	  r{   r  r  r   r   r|   r  r  r  r}   r  Z-hddddddddddddddddddddddddddddddddddddddddddddZ[kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkiiiiiiiiiiiiiiiiiiiiiiir   r  r   Fr   rk   r  r   r+  r   r   r   rF  r   rG  rH  rI  rJ  rK  rL  rM  rN  rO  r  TrP  rQ  rR  r   rS  rW  r  rU  rV  r   rX  rZ  r[  r\  r]  r^  r_  r`  ra  r  r  r  r?   rY  r  r  r   rc  rb  rd  re  r  r  r  r  r  r  r  r  r  rf  rg  rh  ri  rj  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   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  r  r  r  r  r  r  r  r  )"r   rk   r$  r?   r&  r'  r(  r)  r*  r
  r#  r+  r   r   r  r   r!  r   r   r   ru  rv  r   rw  rx  r   r   r|   ry  rz  r  r  r  r  rl   r,  r-  r/  r0  r  r  r  )Br   r  r   r   r   r   r   r   r\   r   r  rs   r9   r   r   rN   r1  r   r   r   r]   r<   r{  r   r   r   r   r|  r}  r?   ProgramUserPlanr  ProgramPlanr  ProgramPlanGoalsProgramSelectedAbilitiesr   r   r   r   r[   r  r  r   r6   r~  r  rG   r   r   r  r   r|   r2  r!  r  r   rv  r   r  r   rQ   r
  rk   rO   r%   ):rg   r  r  r  r  r  r3  r4  r5  r6  r   r  r  r  r'  r  r  r  r   r  r(  r  r   r)  r*  r&  r  rx  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r
  r  r  r  r  rw  r  r  r  r  r  r  r   r7  r  rm   rm   rn   userLoginNewj  sl   





.

 

P



64







 i,

r"  c              
   C   s  t | }| jdkrzt| jd}| jdd |d< tj	jdd}|j
}d|krtj	j|d d}t| t|d	krtd
 i }d|d< d|d< d|d< |W S tj	j|d d}t| tj	j|jd}ddd tdD }	t|	}
|
}||_|  zb|d kr$tdddW W S d|j d |j d }d}|j}t||| tdd	ddW W S W n: tk
r } ztdt|i W Y W S d }~X Y nX n.t }|| }|d k	rd$}nd%}t|W S W n8 tk
r } ztdt|i W Y S d }~X Y nX d S )&Nr	  r{   r  r  r   r   r|   r}   r   12345   r
  r  r   zNo Such Mail Id Foundrk   r   c                 s   s   | ]}t d V  qdS r   r
   r   rm   rm   rn   r   s  s     z!userLoginByOTP.<locals>.<genexpr>r   Fzinvalid credentialsr   <p>Dear ,</p><br/> <p>The OTP is: </p>Welcome To StratFitzOTP Sentr  rl   r,  r-  r/  r0  r  r  r  ) r   r  r   r   r   r   r   r   r\   r   r  r9   r   rs   lenr   r   r   r   r   r   r   r   r|   ra   r   rQ   r
  rk   rO   r1  r%   )rg   r  r  r  r  Z	loginSubsZ
resposeArrZloginSubscriberr   r   r   r   mailContentrh   rj   r   r7  r  r   r4  rm   rm   rn   userLoginByOTP^  s`    

    

r+  c                 C   sV   | j dd }| j   | jd }|d }t| d| j _t|  t	ddiS )Nr   rE  r   Tr   )
r2  r   flushr   r   r   r   modifiedr   r   )rg   ru   authkeyrm   rm   rn   logOut  s    

r0  c                 C   s
  t  }|| }|d }d}d}z|d kr| jdrB|d }z,tjdj|d}d}|D ]}t|}qbd|krtj	ddd	d
ddddddddddddddddj|d}	n"t
jddddddd d!j|d"}	|	D ]>}t|}
tjj|d }|D ]}t|}|d# |
d$< q qtj	dddd%d&j|d}g }|D ]}t|}|| qFt|
|d'W W S  tk
r } ztd(t|d) W Y W S d }~X Y nX W nT tk
r } z4td* t|||t| td+t|i W Y S d }~X Y nX d S ),Nr   r  zsubscriber/editprofile/r   r   r   rF  user__first_nameZuser__emailZuser__middle_nameZuser__phoneZuser__phoneCodeZuser__qualificationZuser__referenceZuser__last_nameaddress1address2towncitystater   zipCodetimeZoneZuser__avatarZuser__currencyTypeZuser__userCoverr   r   r|   r   rv  r   r  r  aboutTrainerabout
socailName	socialUrl)r   Z
socialdataFr   r   rl   )rP   rB  r2  __contains__r:   r   r   r   r|  r{  r9   r=   rB   r   r   r   r   r   r	   rz   )rg   rC  r   ru   rv   rw   ZUAZ	dataCountr   r+  dataObjZ
trainerInftrtrObjZsocialprfinfoZ	socialArrdt1Z	socialObjr   rm   rm   rn   editProfile  sF    


@" .
rB  c              
   C   s  t  }|| }|d }t| jd}|}d}z|d kr4tjj|d d}d|d krl|d d |_	|d d |_
d|d kr|d d |_|d d	 |_|d d
 |_|d d |_d|d kr|d d dkr|d d d krt|d d |_d|d kr<|d d dkr<|d d d kr<|d d |_d|d kr||d d dkr||d d d kr||d d |_|  tjj|jddd	}d|d kr,tjj|d d }	|	 r|	D ]6}
t|
}tjj|d d}|d d |_|  qn$tjj|d |d d d}|  |D ]}t|}q0tjj|d d}| rtjj|d d}d|d kr|d d dkr|d d d kr|d d |_d|d kr|d d dkr|d d d kr|d d |_d|d kr.|d d dkr.|d d d kr.|d d |_d|d krn|d d dkrn|d d d krn|d d |_ d|d kr|d d dkr|d d d kr|d d |_!d|d kr|d d dkr|d d d kr|d d |_"d|d kr.|d d dkr.|d d d kr.|d d |_#d|d krn|d d dkrn|d d d krn|d d |_$|  t%dd|dW S tjj|jd}d|d kr|d d dkr|d d |_d|d kr|d d dkr|d d |_ d|d kr"|d d dkr"|d d |_!d|d krP|d d dkrP|d d |_"d|d kr~|d d dkr~|d d |_#d|d kr|d d dkr|d d |_d|d kr|d d dkr|d d |_d|d kr|d d dkr|d d d kr|d d |_$|  t%dddW S nt%dd dW S W nT t&k
r } z4t'(d! t)|||t*| t%d"t*|i W Y S d }~X Y nX d S )#Nr   r{   zsubscriber/profile/r   currencyuserInfr   middle_namer   r   r
  pwordr   qualification	referencer:  r   )r   r9  r2  r3  r4  r5  r6  r   r7  r8  Tz% User Information Saved Successfully )r   rk   detailsr   Fz User logged out r   rl   )+rP   rB  r   r   r   r   r9   r   r   r   r   rE  r   r   r  r   r   rG  rH  r   r   r   r   r=   r   r|  r9  r   r:   r2  r3  r4  r5  r6  r   r7  r8  r   r   r   r	   rz   r   )rg   rC  r   ru   userInforv   rw   userInformationr+  trainerDetailsr?  r@  ZupdateTrainerZtrainerValuesr  r   useraddressExistuserAdressInformatioinr   rm   rm   rn   profileSettings  s    

,22


22222222       2
rO  c              
   C   s  t  }|| }|d }|}t| jd}|}d}zht|d |d krt|d t|d }t|D ]}	d|d |	 kr|d |	 d }
|d |	 d }d|d |	 d	 kr|d |	 d	 }nd|d |	 d	  }t	j
j|
d
}||_||_|  qld|d |	 krl|d |	 d }d|d |	 d	 krJ|d |	 d	 }nd|d |	 d	  }t	|d}||_||_|  qltdddW S tdddW S W nT tk
r } z4td t|||t| tdt|i W Y S d }~X Y nX d S )Nr   r{   subscriber/socialmediainfo/z---login userid----Z1234567Z	socialinfr;  r   r<  r  httpr   Tz+User Social Information Saved Successfully r   Fuser logged outr   rl   )rP   rB  r   r   r   r   rs   r)  r   rB   r   r   r;  r<  r   r   r   r   r	   rz   r   )rg   rC  r   r  ru   ZsocInforv   rw   Z	rangeDatar   r   Z
socialtyper<  ZdupsocailinfZ	socialurlZ	socailinfr   rm   rm   rn   socialmediainfo:  sP    






rS  c              
   C   s  t  }|| }|d }t| jd}|}d}z|d kr<td tjj	|d}|j
}d|kr|d dkrtjj	|d}	d	|kr|d	 d
kr|d	 |	_d|kr|d d
kr|d |	_|	  tdd|	j|	jdW S d	|kr|d	 d
kr|d	 |_d|kr|d d
kr|d |_|  tdd|j|jdW S ntdddW S W nT tk
r }
 z4td t|||t|
 tdt|
i W Y S d }
~
X Y nX d S )Nr   r{   rP  in Herer   gymTr  imager   coverzImage Uploaded Successfully)r   rk   rv  rW  FrR  r   r   rl   )rP   rB  r   r   r   r   rs   r9   r   r   r~  r6   logorz  r   r   rv  r  r   r   r	   rz   r   )rg   rC  r   ru   r   rv   rw   Z	picUploadru  Z	orgUpdater   rm   rm   rn   uploadphotol  s<    






rY  c           	   
   C   s   t  }|| }|d }t| jd}|}d}zX|d krxtjj|d d}|	 rft
dddW S t
dd	dW S nt
dd
dW S W nR tk
r } z4td t|||t| t
dt|i W Y S d }~X Y nX d S )Nr   r{   zsubscriber/profilecheck/r   Tz User Already Exist r   FzNew UserrA  r   rl   )rP   rB  r   r   r   r   r<   r   r   r   r   r   r   r	   rz   r   )	rg   rC  r   ru   Z	user_datarv   rw   rM  r   rm   rm   rn   profilecheck  s"    

rZ  c              
      s   t jd}|}d}tjj|d d}zg  | r fdd}fdd}tj	
 }|||}|  W 5 Q R X tj| fd	}	|	  td
ddW S tdddW S W n@ tk
r }
 z"td tdt|
i W Y S d }
~
X Y nX d S )Nr{   zsubscriber/forgotPwdr|   r}   c                    sJ   t jj| d d}ddd tdD } |  | td  S )Nr|   r}   r   c                 s   s   | ]}t d V  qdS r   r
   r   rm   rm   rn   r     s     z4forgotPassword.<locals>.storedata.<locals>.<genexpr>r   hi)r9   r   r   r   r   r   rs   )r   r   r   )r   rm   rn   	storedata  s    

z!forgotPassword.<locals>.storedatac                    s   | d }| d }|j d t| }t|d} jd }d| d |d }d	}|j }|j|t|d
}	td|	}
t	||
| ||_
t||_|  td |S )Nr   r   r   r   r   r   z/#/accountvalidate/r{   zPassword Recoveryr   zforgot.htmlZhihe)r|   r   r   r   r   r   r   r   rT   ra   r   r   r   rs   )r   r   r   r   r   r   r   rh   rj   ry   rk   r   rm   rn   maildata  s&    


z forgotPassword.<locals>.maildatar   T*Please Check Your E-Mail to Reset Passwordr   Fz%Email not registered, please registerr   rl   )r   r   r   r   r9   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	   r   )rg   r   rv   rw   Zuserinfr\  r]  r   r   r   r   rm   )r   rg   rn   forgotPassword  s&    
r_  c                 C   s   t | jd}tjj|d d}|j}t| tt	
 tdd  |t	
 tdd krjtddiS d|j d	 |j d
 }d}|j}t||| tdddS d S )Nr{   r|   r}   x   secondsrk   zplease wait for 2 minutesr%  r&  r'  r(  Tr^  r   )r   r   r   r   r9   r   r   rq  rs   rb   rt   rV   r   r   r   r|   ra   )rg   r   r   createdTimer*  rh   rj   rm   rm   rn   	resendOTP  s    rd  c              
   C   s  t | jd}tjj|d d}|j}t| tt	
 tdd  z|t	
 tdd krntddiW S dd	 }d
d }tj }|||}| }W 5 Q R X tj||fd}	|	  tdddW S W nB tk
r }
 z"td tdt|
i W Y S d }
~
X Y nX d S )Nr{   r|   r}   r`  ra  rk   zPlease wait for 2 minutesc                 S   s4   d| j  d | j d }d}| j}t||| | jS )Nr%  r&  r'  r(  )r   r   r|   ra   )r   r*  rh   rj   rm   rm   rn   r     s
    zresendOTP1.<locals>.mailc                 S   s   | j r| jS d S )N)r|   r   )r   rm   rm   rn   response  s    zresendOTP1.<locals>.responser   Tz-One Time Passcode has been sent to your Emailr   r   rl   )r   r   r   r   r9   r   r   rq  rs   rb   rt   rV   r   r   r   r   r   r   r   r   r   r   r   r	   r   )rg   r   r   rc  r   re  r   r   r   t1r   rm   rm   rn   
resendOTP1  s&    
rg  c              
   C   s  t  }|| }|d }d}d}z|d krt| jd}d|kr|d dkrd|kr|d dkrt|d }t| t|d }t| |d | }	|| }
ntj	
 }|}
t }d	}|| t|}t|}||	|
 }t }|D ]}t|}|d
 d kr|d
 d|d
< |d d kr<|d d|d< |d d kr\|d d|d< |d d kr||d d|d< |d d kr|d d|d< || qt||dW S W nT tk
r } z4td t|||t| tdt|i W Y S d }~X Y nX d S )Nr   r  zsubscriber/userDetails/r{   rowsr   pager   a'  SELECT *,Subscriber_user.id as id FROM `Subscriber_user` left join Subscriber_useraddress on Subscriber_user.id = Subscriber_useraddress.user_id left join StratFitOrganization_organization on Subscriber_user.organization_id = StratFitOrganization_organization.id ORDER BY Subscriber_user.id DESCdate_joined%d/%m/%Y %H:%M:%Srq  rk  
last_loginmodifiedDaterh  totalr   rl   )rP   rB  r   r   r   r   r   rs   r9   r   allr   r  r  r  r)  listr|  r}  r   r   r   r   r	   rz   r   )rg   rC  r   ru   rv   rw   ZpInforh  ri  offsettotfoodr  usersr  ro  r   dataArrr   r>  r   rm   rm   rn   r+  !  sT    

(



r+  c              
   C   s  t  }|| }|d }t| jd}|}d}z&|d krXt| jd}t| d|krxddkrxt|d }nt}d|krddkrt|d }nd}|d | }	|| }
t	
 }d}d	|  krdkr n nFd
}d|d	 kr|d	 d dksd|d	 kr|d	 d dksd|d	 kr<|d	 d dksd|d	 kr\|d	 d dksd|d	 kr||d	 d dksd|d	 kr|d	 d dkr|d7 }d}d|d	 kr|d	 d dkr|dt|d	 d  d 7 }d|d	 kr |d	 d dkr |dt|d	 d  d 7 }d|d	 kr\|d	 d dkr\|dt|d	 d  d 7 }d|d	 kr|d	 d dkr|dt|d	 d  d 7 }d|d	 kr|d	 d dkr|dt|d	 d  d 7 }d|d	 kr$|d	 d dkr$t|d	 d d |d|d	 d  d 7 }nd}|r6|d d }|d }t| || t|}t|}||	|
 }t }|D ]}t|}|d |d< |d  |d< |d! d kr|d! d"|d!< |d# d kr|d# d"|d#< |d$ d kr|d$ d"|d$< |d% d kr|d% d"|d%< |d& d kr:|d& d"|d&< || qvt||d'W S W nT tk
r } z4td( t|||t| td)t|i W Y S d }~X Y nX d S )*Nr   r{   zsubscriber/search/rh  r   ri  r   Fr   a  SELECT *,Subscriber_user.id as id FROM `Subscriber_user` left join StratFitOrganization_organization on Subscriber_user.organization_id = StratFitOrganization_organization.id left join Subscriber_useraddress on Subscriber_user.id = Subscriber_useraddress.user_id r   r   r|   r   r  r   z where Tz first_name like'%z%' ANDz last_name like '%z email like'%z phone like'%z gymName like'%Z1234566z is_active ='z' ANDa  SELECT *,Subscriber_user.id as id FROM `Subscriber_user` left join StratFitOrganization_organization on Subscriber_user.organization_id = StratFitOrganization_organization.id left join Subscriber_useraddress on Subscriber_user.id = Subscriber_useraddress.user_idz! ORDER BY Subscriber_user.id DESCr   r   rj  rk  rq  rk  rl  rm  rn  r   rl   )rP   rB  r   r   r   r   rs   r   r5   r   r  r   r  r  r)  rq  r|  r}  r   r   r   r   r	   rz   )rg   rC  r   ru   Z
searchDatarv   rw   rh  ri  rr  rs  r  fieldsru  ZsearchQueryr  ro  r   rv  r   r>  r   rm   rm   rn   
userSearchT  s    

      

ry  c                    s&   dd | j D   fdd|  D S )z'Return all rows from a cursor as a dictc                 S   s   g | ]}|d  qS )r   rm   )r   colrm   rm   rn   
<listcomp>  s     z dictfetchall.<locals>.<listcomp>c                    s   g | ]}t t |qS rm   )r|  zip)r   rowcolumnsrm   rn   r{    s   )descriptionfetchall)r  rm   r~  rn   r    s    
r  c           
   
   C   s   t  }|| }|d }d}d}zf|d krt| jd}| jd }tjj|d}|D ]}||_|	  qRt
ddiW S t
d	d
dW S W nR tk
r }	 z4td t|||t|	 t
dt|	i W Y S d }	~	X Y nX d S )Nr   r  zsubscriber/galleryuploadZuploadedFiler   r   r   TFrA  r   r   rl   )rP   rB  FILESgetlistr2  r;   r   r   photor   r   r   r   r	   rz   r   )
rg   rC  r   ru   rv   rw   filesZ	userphotofiler   rm   rm   rn   galleryupload  s*    



r  c              
   C   s
  t  }|| }|d }t| jd}|}d}
zD|d k
rvd|krtd tjj	|d d}||_
|d |_d|kr|d dkr|d d kr|d |_d	|kr|d	 dkr|d	 d kr|d	 |_d
|kr|d
 dkr|d
 d kr|d
 |_d|kr"|d dkr"|d d kr"|d |_|d |_d|kr`|d dkr`|d d kr`t|d |_|d |_d|kr|d dkr|d d kr|d |_d|kr|d dkr|d d kr|d |_d|kr|d dkr|d d kr|d |_d|kr*|d dkr*|d d kr*|d |_d|krZ|d dkrZ|d d krZ|d |_|  d|kr&|d d kr&|d dkr&tjj	|d d}d|kr|d dkr|d d kr|d |_d|kr|d dkr|d d kr|d |_d|kr*|d dkr*|d d kr*|d |_d|krZ|d dkrZ|d d krZ|d |_d|kr|d dkr|d d kr|d |_d|kr|d dkr|d d kr|d |_d|kr|d dkr|d d kr|d |_ d|kr|d dkr|d d kr|d |_!|  ntjj"|d d}d|krh|d dkrh|d d krh|d |_d|kr|d dkr|d d kr|d |_d|kr|d dkr|d d kr|d |_d|kr|d dkr|d d kr|d |_d|kr(|d dkr(|d d kr(|d |_d|krX|d dkrX|d d krX|d |_d|kr|d dkr|d d kr|d |_ d|kr|d dkr|d d kr|d |_!|  t#dddW S td  zjtjj$|d	 d!}	|	% r
t#d"d#dW W S tjj"|||d	 |d
 |d |d d$}|  |d |_d|krt|d dkrt|d d krt|d |_d|kr|d dkr|d d kr|d |_|d	 |_|d	 |_&t|d |_d%|_d|kr|d dkr|d d kr|d |_d|kr,|d dkr,|d d kr,|d |_d|kr\|d dkr\|d d kr\|d |_|  t|jd& |jd'krRtj'd(d)j$|j(d*)d+dd,}
|
% r|
D ]}t*|}|d+ }|d, }qnd}d}d}d}|jd ks|jdkr|j}nd"}tjj	|j(d*}d-}|j}||j||d.d.|j|d d/}t+d0|}t,||| nFtjj	|j(d*}d1}|j}|j|d	 |d d2}t+d3|}t,||| tjj"|j(d}d|kr|d dkr|d d kr|d |_d|k	r|d dk	r|d d k	r|d |_d|k	r8|d dk	r8|d d k	r8|d |_d|k	rh|d dk	rh|d d k	rh|d |_d|k	r|d dk	r|d d k	r|d |_d|k	r|d dk	r|d d k	r|d |_d|k	r|d dk	r|d d k	r|d |_ d|k
r(|d dk
r(|d d k
r(|d |_!|  t#dd4dW W S W n0 t-k

rt   t./d5 t#d"d6d Y W S X W nT t-k

r } z4t./d7 t0|||t1| t#d8t1|i W Y S d }~X Y nX d S )9Nr   r{   zsubscriber/adminPanel/z+--------------Update USer------------------r  r   rE  r   r|   r   r   r   rF  r   r  rG  rH  ru  r   r   r2  r3  r4  r5  r6  r   r7  r8  Tz User Updated successfully r   z+--------------Create USer------------------r}   Fz#User with that email already exists)r   r   r|   r   r~  r   r   Z234567654345654565456ZOrganization__idZOrganizationAdress__idr   Zorganization__gymNameZorganizationAddress__addresszWelcome to StratFit.r#  )r  r|   ZphonenoAddresslatlangr   r   zgymRegistration.htmlr  )r   r|   r   r  z User Created successfully zProblem with Creating UserzProblem with Creating User...r   rl   )2rP   rB  r   r   r   r   rs   r9   r   r   r   r   rE  r|   r   r   r   r   r   r   r  rG  rH  r~  r   r:   r2  r3  r4  r5  r6  r   r7  r8  r   r   r   r   r   r{  r   r   r|  rT   ra   r   r   r	   rz   r   )rg   rC  r   ru   rJ  rv   rw   rK  rN  existingUserZgymnamesr   r  r  addressr  r  ZphoneNor:  rh   rj   ry   rk   r   rm   rm   rn   
adminPanel  sX   



 
 
 
&

&
&
&
&
&
&
&&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&

	
&
&


&
&
&
"



&
&
&
&
&
&
&
&


r  c           T   3   C   s  t | j |dkrz| jdd }|d krv| jd| jdtj| jdd}t | t | jj tj| jj|d}nN|dkrt| jd| jdtj	| jdd	d
}t d t | jj tj
| jj|d}t t|jd n|dkrt d d}ttjtjdd}zD|| jj}t |d t |d ||}	|dW S W n. tk
r }
 zd|
W 5 d }
~
X Y nX nB|dkrd}ttj| jdtj| jdd	d
}tj
||d}| jdd }|r| j}| jj|| o|pd d}n6t|j}| j}| jj|d | o.|p4d d}t |jd |jd}|jd}||krpd|_t j!j|j"d}d|_d}t#j!j|d}|j$}t%j!j&|j"d}|' r|rt%j!j|j"d}|j"|_(|)  nt%j!j|j"d}d |_(|)  n\|r:t%j!j*|j"|j"d!}|)  |d"kr2d#|_+nd$|_+n t%j!j*|j"d d!}|)  d$|_+|d%d  |_,|)  |r|jri }|j}|j|d&< | j-d'd |d(< t |d) t. }t |d* |/|}t |d+ |}t j!j|d,}|j0}t1j!jd%d-}t1j!jd.d-}t2j!3d/j&|j"d4d0d1d2d3d4d5d6d7d8d9
} d:}!i }"i }#i }$| ' rd}!| D ]:}%t|%}#|#d1 d kr|#d1 |#d;< |#d1 d<|#d1< qVt5j!j&|j"d=4 }&d:}'|&' rd}'|&D ]}%t|%}"qt6j!j&|j"d=j&d%d>gd?4 }(t j!j|j"d-})d:}*d:}+g },g }-d}.|(' 
rd:}.d}*|(D ]}%t|%}/t6j!j&|/d@ dA7 }0t8j!3dBdCd/j&|/d@ d-4dDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[}1|1D ]}2t|2}3t9j!3d\j&|3dD dA4d]}4d^}5|4D ]}6t|6}7|5d_|7d]  7 }5q|5d^kr
|5d%d  }8nd^}8t:j!3d`j&|3dD dA4da}9d^}:|9D ]}6t|6}7|:d_|7da  7 }:q4|:d^krl|:d%d  };nd^};|;|3db< |8|3dc< |;|3dJ< |8|3dQ< |3dU ddks|3dU dekrt j!j|3dV d-}<t;|3dL df t;t;|<j<dg t;|<j=  dh |3dL< nFt j!j|3dW d-}=t;|3dL df t;t;|=j<dg t;|=j=  dh |3dL< di|3dj< dk|3dl< |0|3dm< t |dn do|kr|do dpkr|)j+d#kr|dq dr d"kr|3dZ |3dH< |3dZ |3ds< |3dZ |3dX< n|3dX |3dH< |3dX |3ds< t>|3dH dtkrdu|3dH< n|dq dr d"krt?j!4 j&|3dZ dv}>nt?j!4 j&|3dX dv}>|>D ]}?t|?}@|@dw }Aq0|A|3dH< |dq dr d"krn|3dZ |3dX< t>|3dH dtkrdu|3dH< nt>|3dH dtkrdu|3dH< n|)j+d#k	r|dq dr d"kr|3d[ |3dH< |3d[ |3ds< |3dZ |3dX< n|3dH |3dH< |3dH |3ds< n||dq dr d"k	rNt?j!j|3dZ dv}>|>j@|3dX< |3d[ |3dH< |3d[ |3ds< n4t?j!j|3dX dv}>|>j@|3dX< |3dH |3dH< |3dH |3ds< tA|3dH dtk	rdu|3dH< q|3|/dx< |,B|/ q&tCj!j&|j"d=4dydzd{d|dDd@d}d~dddddd}B|B' 
rd}+|BD ]}%t|%}$|-B|$ 	qtDj!j&|j"d4 }C|C' 
r||CD ]D}Dt|D}E|Ed }FtEF|F tDj!j|EdD d-}G|d |G_G|G)  
q4ntDj!j*|j"|d d}H|H)  tHI }Id}J|IJ|J tK|I}Kg }L|KD ]}Mt|M}N|LB|N 
qtL|j"|L}O|Og krF|LD ]P}P|PdD }Qd:}R|OD ]8}S|Sd |Qkr,|Sd |Pd< d}Rn|Rd:kr>dt|Pd< q
q|jd k	rd| jMd< |j| jMd&< |j"| jMd< |j<| jMd< tN|Ldd|#|"|-|,|!|'|*|+|d |d |jO|dq d& ||dq dD |dq d |dq d |dq d |dq d |dq d |dq d |dq d |dq d |.|dq d |dq d |j|dq d |dq d |dq d |dq d |jP|jPddddddddddddddddddddddddddddddddddddddddddddddddddtddddddddddg
ddiddiddiddiddiddiddiddiddig	d%dddd%dddd%dddd%d>ddd%d%ddgd%dddd%dddd%d>ddd%d>ddd%d>ddd%d%ddd%d%ddgddÜ&S ntNd:ddŜS d S )Nfacebookaccess_tokenclientIdredirectUrir
  	client_idredirect_uriclient_secretr
  paramsgoogle-oauth2authorization_coder  r  r  r
  Z
grant_typethis came here1Gr   test----twitterI am twitter'https://api.twitter.com/oauth/authorizehttp://alpha.stratfit.netr  Zcallback_urioauth_tokenoauth_token_secret8Invalid response from Twitter requesting temp token: {0}linkedin-oauth2/https://www.linkedin.com/uas/oauth2/accessTokenr  ru   iam HererQ  Tr  r   r   r   r   r   r  r  r   r   r|   r  r  1234Z;gffffffffffffffffffffffffffffffffffffffffffffffffffffffffffZCjddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddr}   r   r   rF  rG  rH  rI  rJ  rK  rL  rM  rN  rO  r  FrP  %Y/%m/%d %H:%M:%SrR  r   rS  rW  r  rU  rV  r   rX  rZ  r[  r\  r]  r^  r_  r`  ra  r  r  r  r?   rY  r  r  rb  r   rc  rd  re  r  r  r  r  r   r  r  r  r  r  rf  rg  rh  ri  rj  r  r  r  r  r  r  r   r  r+  r   r  r   r  r  r  r=  rk  rl  rm  rn  r%  ro  rp  rq  r   rr  rs  rt  r  r#  r  a"  SELECT *,uae.id AS advexId,ue.id as id,uv.videoLink as video_id__videoLink FROM `utility_exercise` ue LEFT JOIN `utility_advexercises` uae ON ue.id = uae.exercise_id LEFT JOIN `utility_videos` uv ON uv.id = ue.video_id WHERE ue.id IS NOT NULL AND ue.accessLevel = 0 AND ue.exerciseStatus =1r  r  r  r   r   r"  r!  r   r   r   rv  r   organizationr   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   r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  )&r  r   rk   r$  r?   r%  r&  r'  r(  r)  r*  r
  r#  r  r+  r   r   r!  r   r   r   r   rv  r   ru  rx  r   r   r|   ry  rz  r   r   r  r  r  r  r  User not activer   )Qrs   r   r   r   SOCIAL_AUTH_FACEBOOK_SECRETbackendACCESS_TOKEN_URLrequestsr|   SOCIAL_AUTH_GOOGLE_OAUTH2_SECRETpostr   r   textr'   SOCIAL_AUTH_TWITTER_KEYSOCIAL_AUTH_TWITTER_SECRETfetch_request_tokenREQUEST_TOKEN_URLauthorization_url
ValueErrorr  SOCIAL_AUTH_LINKEDIN_KEYSOCIAL_AUTH_LINKEDIN_SECRETru   do_authis_authenticatedr|   rj  r}  rq  r   r9   r   r   rZ   r   r:   r   r   r   r   r   r   r  r   rN   r1  r   r]   r<   r{  r   r?   rJ   r  r,   r1   r2   r   r   r   r   r[   r  r  r   rK   rG   r   r   r  r   r  r  r  r  r2  r   r  r  )Trg   r  r  r  rpayloadAUTHORIZATION_URLoauth_clientresprw   r   access_token_urlaccess_tokenFBru   rc  updatedTimer  r   r   r   userAddupdateUserAddr   r  email_idr3  r4  r5  r6  r   r  r  r  r'  r  r  r  r   r  r(  r  r   r)  r*  r&  r  rx  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  r  r  r  r  r  r  r  r  r  r  r  rm   rm   rn   auth_by_token  s   




















.

 

P


64




0







  *r  c              
   C   s@  | j dd }| j dd }|rtd zt| |}W n6 tk
rl } ztt|dd W Y S d }~X Y nX trt| d}t	|||j
 t|S tdddS n| j d	d d
kr0td z| df}W n8 tk
r  } ztt|dd W Y S d }~X Y nX |r"t| td|itjdS tdddS ntdddS d S )Nr
  r  z
Where I am  r   r   Bad Credentials  r   Zapple
In Twitterr  r  Bad request)r   r   rs   register_by_access_tokenr   r%   r   r9   load_strategyr+   social_userr   r   HTTP_200_OK)rg   
auth_tokenr  ru   rx   strategytokenrm   rm   rn   social_register  s0    &
&r  c              
   C   s   | j dd }| j dd }|rzt| |}W n6 tk
rd } ztt|dd W Y S d }~X Y nX trrt|S tdddS n| j dd dkrtd	 zt| d}W n6 tk
r } ztt|dd W Y S d }~X Y nX |rt| td
|it	j
dS tdddS ntdddS d S Nr
  r  r  r   r  r  r   r  r  r  r  )r   r   r  r   r%   r   r9   r   rs   r   r  rg   r  r  ru   rx   r  rm   rm   rn   social_core_register  s*    &&r  c           I   2   C   s  t | j |dkrz| jdd }|d krv| jd| jdtj| jdd}t | t | jj tj| jj|d}n|dkrt d	 d
}ttj	| jdtj
| jddd}tj||d}nP|dkr6t| jd| jdtj| jddd}t d t | jj tj| jj|d}t t|jd n|dkrt d d}ttjtjdd}zD|| jj}	t |	d t |	d ||}
|	dW S W n. tk
r } zd|W 5 d }~X Y nX nB|dkrd}ttj| jdtj| jddd}tj||d}| jdd }|rZt d | j}| jj|| oL|pRd d}nFt|j}t t|j | j}| jj|d | o|pd d}t |jd |jd}|j d}||krd|_!t"j#j|j$d }d|_!d!}t%j#j|d"}|j&}t'j#j(|j$d#}|) rd|rDt'j#j|j$d#}|j$|_*|+  nt'j#j|j$d#}d$|_*|+  n\|rt'j#j,|j$|j$d%}|+  |d&krd'|_-nd(|_-n t'j#j,|j$d$d%}|+  d(|_-|d)d  |_.|+  |rn|j!rni }|j}|j|d*< | j/d+d |d,< t |d- t0 }|1|}t | |}t"j#j|d.}|j2}t3j#jd)d/}t3j#jd0d/}t4j#5d1j(|j$d#6d2d3d4d5d6d7d8d9d:d;
} t | j7 d<}!i }"i }#i }$| ) r| D ]>}%t|%}#|#d3 d krd}!|#d3 |#d=< |#d3 d|#d3< qt8j#j(|j$d>6 }&d<}'|&) r0d}'|&D ]}%t|%}"q t9j#j(|j$d>j(d)d?gd@6 }(t"j#j|j$d/})d<}*d<}+g },g }-d}.|() 
rvd<}.d}*|(D ]}%t|%}/t9j#j(|/dA dB: }0t;j#5dCdDd1j(|/dA d/6dEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\}1|1D ]}2t|2}3t<j#5d]j(|3dE dB6d^}4d_}5|4D ]}6t|6}7|5d`|7d^  7 }5q6|5d_krn|5d)d  }8nd_}8t=j#5daj(|3dE dB6db}9d_}:|9D ]}6t|6}7|:d`|7db  7 }:q|:d_kr|:d)d  };nd_};|;|3dc< |8|3dd< |;|3dK< |8|3dR< |3dV deks|3dV dfkrXt"j#j|3dW d/}<t>|3dM dg t>t>|<j?dh t>|<j@  di |3dM< nFt"j#j|3dX d/}=t>|3dM dg t>t>|=j?dh t>|=j@  di |3dM< dj|3dk< dl|3dm< |0|3dn< t |do dp|kr|dp dqkr|)j-d'krP|dr ds d&kr|3d[ |3dI< |3d[ |3dt< |3d[ |3dY< n|3dY |3dI< |3dY |3dt< tA|3dI dukrNdv|3dI< n|dr ds d&krztBj#6 j(|3d[ dw}>ntBj#6 j(|3dY dw}>|>D ]}?t|?}@|@dx }Aq|A|3dI< |dr ds d&kr|3d[ |3dY< tA|3dI dukrdv|3dI< ntA|3dI duk	rdv|3dI< n|)j-d'k	rj|dr ds d&k	rP|3d\ |3dI< |3d\ |3dt< |3d[ |3dY< n|3dI |3dI< |3dI |3dt< n||dr ds d&k	rtBj#j|3d[ dw}>|>jC|3dY< |3d\ |3dI< |3d\ |3dt< n4tBj#j|3dY dw}>|>jC|3dY< |3dI |3dI< |3dI |3dt< tD|3dI duk
r dv|3dI< q|3|/dy< |,E|/ qtFj#j(|j$d>6dzd{d|d}dEdAd~ddddddd}B|B) 
rvd}+|BD ]}%t|%}$|-E|$ 
q\tGj#j(|j$d#6 }Ct d |C) 
r|CD ]D}Dt|D}E|Ed }FtHI|F tGj#j|EdE d/}G|d |G_J|G+  
qntGj#j,|j$|d d}H|H+  t d |jd k	rHd| jKd< |j| jKd*< |j$| jKd< |j?| jKd< tLdd|#|"|-|,|!|'|*|+|d |d |jM|dr d* ||dr dE |dr d |dr d |dr d |dr d |dr d |dr d |dr d |dr d |.|dr d |dr d |j|dr d |dr d |dr d |dr d |jN|jNdddddddddddddddddddddddddddddddddddddddddddddddddduddddddddddg
ddiddiddiddiddiddiddiddiddig	d)dddd)dddd)dddd)d?ddd)d)ddgd)dddd)dddd)d?ddd)d?ddd)d?ddd)d)ddd)d)ddgdd%S ntLd<ddĜS d S )Nr  r  r  r  r
  r  r  zapple-idZheereerererz$https://appleid.apple.com/auth/tokenr  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  Zhhhhhhhhhhhhhhhhhhhhhhhhhhhhhr  r  rQ  Tr  r   r   r   r   r   r  r  r   r   r|   r  r  r  r}   r   r   rF  rG  rH  rI  rJ  rK  rL  rM  rN  rO  r  FrP  rR  r   rS  rW  r  rU  rV  r   rX  rZ  r[  r\  r]  r^  r_  r`  ra  r  r  r  r?   rY  r  r  rb  r   rc  rd  re  r  r  r  r  r   r  r  r  r  r  rf  rg  rh  ri  rj  r  r  r  r  r  r  r   r  r+  r   r  r   r  r  r  r=  rk  rl  rm  rn  r%  ro  rp  rq  r   rr  rs  rt  Gender Problem here 2r  r#  r  Gender Problem here 3r   r   r"  r!  r   r   r   rv  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  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  %r   rk   r$  r?   r%  r&  r'  r(  r)  r*  r
  r#  r  r+  r   r   r!  r   r   r   r   rv  r   ru  rx  r   r   r|   ry  rz  r   r   r  r  r  r  r  r  r   )Ors   r   r   r   r  r  r  r  r|  SOCIAL_AUTH_APPLE_ID_CLIENTSOCIAL_AUTH_APPLE_ID_SECRETr  r  r   r   r  r'   r  r  r  r  r  r  r  r  r  ru   r  r  r|   rj  r}  rq  r   r9   r   r   rZ   r   r:   r   r   r   r   r   r   r  r   rN   r1  r   r]   r<   r{  r   r  r?   r  r  r  r   r!  r   r   r   r   r[   r  r  r   rK   rG   r   r   r  r2  r   r  r  )Irg   r  r  r  r  r  r  r  r  r  rw   r   r  ru   rc  r  r  r   r   r   r  r  r   r  r  r3  r4  r5  r6  r   r  r  r  r'  r  r  r  r   r  r(  r  r   r)  r*  r&  r  rx  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  rm   rm   rn   r  "	  s   





















.


 

P


64




0




  (r  c           K   2   C   sD  t | j |dkrz| jdd }|d krv| jd| jdtj| jdd}t | t | jj tj| jj|d}nN|dkrt| jd| jdtj	| jdd	d
}t d t | jj tj
| jj|d}t t|jd n|dkrt d d}ttjtjdd}zD|| jj}t |d t |d ||}	|dW S W n. tk
r }
 zd|
W 5 d }
~
X Y nX nB|dkrd}ttj| jdtj| jdd	d
}tj
||d}| jdd }|r| j}| jj|| o|pd d}n6t|j}| j}| jj|d | o.|p4d d}t |jd |jd}|jd}||krd|_t j!j|j"d}d|_t# }| j$dd }|r|%|d }nd}t&j!j|d }|j'}t(j!j)|j"d!}|* r(|rt(j!j|j"d!}|j"|_%|+  nt(j!j|j"d!}d"|_%|+  n\|rdt(j!j,|j"|j"d#}|+  |d$kr\d%|_-nd&|_-n t(j!j,|j"d"d#}|+  d&|_-|d'd  |_.|+  |r2|jr2i }|j}|j|d(< | j$dd |d)< t |d* t/ }|0|}t | |}t j!j|d+}|j1}t2j!jd'd,} t2j!jd-d,}!t3j!4d.j)|j"d!5d/d0d1d2d3d4d5d6d7d8
}"t |"j6 d9}#i }$i }%i }&|"* r|"D ]>}'t|'}%|%d0 d krd}#|%d0 |%d:< |%d0 d|%d0< qzt7j!j)|j"d;5 }(d9})|(* rd})|(D ]}'t|'}$qt8j!j)|j"d;j)d'd<gd=5 }*t j!j|j"d,}+d9},d9}-g }.g }/d}0|** 
r:d9}0d},|*D ]}'t|'}1t8j!j)|1d> d?9 }2t:j!4d@dAd.j)|1d> d,5dBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdY}3|3D ]}4t|4}5t;j!4dZj)|5dB d?5d[}6d\}7|6D ]}8t|8}9|7d]|9d[  7 }7q|7d\kr2|7d'd  }:nd\}:t<j!4d^j)|5dB d?5d_};d\}<|;D ]}8t|8}9|<d]|9d_  7 }<q\|<d\kr|<d'd  }=nd\}=|=|5d`< |:|5da< |=|5dH< |:|5dO< |5dS dbks|5dS dckrt j!j|5dT d,}>t=|5dJ dd t=t=|>j>de t=|>j?  df |5dJ< nFt j!j|5dU d,}?t=|5dJ dd t=t=|?j>de t=|?j?  df |5dJ< dg|5dh< di|5dj< |2|5dk< t |dl dm|kr|dm dnkr|+j-d%kr|do dp d$kr|5dX |5dF< |5dX |5dq< |5dX |5dV< n|5dV |5dF< |5dV |5dq< t@|5dF drkrds|5dF< n|do dp d$kr>tAj!5 j)|5dX dt}@ntAj!5 j)|5dV dt}@|@D ]}At|A}B|Bdu }CqX|C|5dF< |do dp d$kr|5dX |5dV< t@|5dF drkrds|5dF< nt@|5dF drkrds|5dF< n|+j-d%k	r.|do dp d$k	r|5dY |5dF< |5dY |5dq< |5dX |5dV< n|5dF |5dF< |5dF |5dq< n||do dp d$k	rvtAj!j|5dX dt}@|@jB|5dV< |5dY |5dF< |5dY |5dq< n4tAj!j|5dV dt}@|@jB|5dV< |5dF |5dF< |5dF |5dq< tC|5dF drk	rds|5dF< q|5|1dv< |.D|1 qNtEj!j)|j"d;5dwdxdydzdBd>d{d|d}d~dddd}D|D* 
r:d}-|DD ]}'t|'}&|/D|& 
q tFj!j)|j"d!5 }Et d |E* 
r|ED ]D}Ft|F}G|Gd }HtGH|H tFj!j|GdB d,}I|d |I_I|I+  
qdntFj!j,|j"|d d}J|J+  t d |jd k	rd| jJd< |j| jJd(< |j"| jJd< |j>| jJd< tKdd|%|$|/|.|#|)|,|-|d |d |jL|do d( ||do dB |do d |do d |do d |do d |do d |do d |do d |do d |0|do d |do d |j|do d |do d |do d |do d | jM|!jMddddddddddddddddddddddddddddddddddddddddddddddddddrddddddddddg
ddiddiddiddiddiddiddiddiddig	d'dddd'dddd'dddd'd<ddd'd'ddgd'dddd'dddd'd<ddd'd<ddd'd<ddd'd'ddd'd'ddgdd%S ntKd9ddS d S )Nr  r  r  r  r
  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  rQ  Tr  r  Zcountry_namer   r   r   r   r   r  r  r   r   r|   r  r  r}   r   r   rF  rG  rH  rI  rJ  rK  rL  rM  rN  rO  r  FrP  rR  r   rS  rW  r  rU  rV  r   rX  rZ  r[  r\  r]  r^  r_  r`  ra  r  r  r  r?   rY  r  r  rb  r   rc  rd  re  r  r  r  r  r   r  r  r  r  r  rf  rg  rh  ri  rj  r  r  r  r  r  r  r   r  r+  r   r  r   r  r  r  r=  rk  rl  rm  rn  r%  ro  rp  rq  r   rr  rs  rt  r  r  r#  r  r  r   r   r"  r!  r   r   r   rv  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  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r   )Nrs   r   r   r   r  r  r  r  r|  r  r  r   r   r  r'   r  r  r  r  r  r  r  r  r  ru   r  r  r|   rj  r}  rq  r   r9   r   r   rc   r   r   rZ   r   r:   r   r   r   r   r   r  rN   r1  r   r]   r<   r{  r   r  r?   r  r  r  r   r!  r   r   r   r   r[   r  r  r   rK   rG   r   r   r  r2  r   r  r  )Krg   r  r  r  r  r  r  r  r  rw   r   r  r  ru   rc  r  r  gr   r   r   r   r  r  r   r  r  r3  r4  r5  r6  r   r  r  r  r'  r  r  r  r   r  r(  r  r   r)  r*  r&  r  rx  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  rm   rm   rn   auth_by_token_newe
  s   


















.


 

P


64




0




  (r  c              
   C   s   | j dd }| j dd }|rzt| |}W n6 tk
rd } ztt|dd W Y S d }~X Y nX trrt|S tdddS n| j dd dkrtd	 zt| d}W n6 tk
r } ztt|dd W Y S d }~X Y nX |rt| td
|it	j
dS tdddS ntdddS d S r  )r   r   r  r   r%   r   r9   r   rs   r   r  r  rm   rm   rn   social_register_new  s*    &&r  c              
   C   s$  t  }|| }|d }d}d}z|d krtjdj|ddddd	d
dd}| rg }|D ]4}t|}	|	d d kr|	d 	d|	d< |
|	 q`td|dW S tdddW S ntdddW S W nT tk
r }
 z4td t|||t|
 tdt|
i W Y S d }
~
X Y nX d S )Nr   r  zsubscriber/getfitnessinfo/rF  r   rG  rH  rI  rJ  rK  rL  rM  r  Tr   rI  FPlease Enter your Detailsr   r   rA  r   r   rl   )rP   rB  r<   r   r{  r   r   r   r|  r}  r   r   r   r   r	   rz   r   rg   rC  r   ru   rv   rw   ZfprofileDetailsrv  r   r>  r   rm   rm   rn   fitnessInfo  s,    
&
r  c                 C   s  t  }|| }|d }d}d}z|d krtjdj|ddddd	d
dddd	}| rg }|D ]*}t|}	|	d d krd|	d 	d|	d< qdt
d|	dW S t
dddW S nt
dddW S W nT tk
r }
 z4td t|||t|
 t
dt|
i W Y S d }
~
X Y nX d S )Nr   r  zsubscriber/fitnessdetails/rF  r   rG  rH  rI  rJ  rK  rL  rM  rN  rO  r  Tr   r   Fr  r  rA  r   rl   )rP   rB  r<   r   r{  r   r   r   r|  r}  r   r   r   r	   rz   r   r  rm   rm   rn   fitnessdetails  s*    
*
r  c              
   C   s  t  }|| }|d }t| jd}|}d}z |d krBtjj|d}t	jj
|d}d|d kr|d d dkr|d d d kr|j|d d krt	jj|d d d	j|d d}	|	 rtd
ddW S |d d |_d|d kr"|d d dkr"|d d d kr"|d d |_d|d krb|d d dkrb|d d d krb|d d |_d|d kr|d d dkr|d d d kr|d d |_d|d kr|d d dkr|d d d kr|d d |_d|d kr"|d d dkr"|d d d kr"|d d |_d|d krb|d d dkrb|d d d krb|d d |_|  d|d kr2|d d dkr2|d d d kr2tjdddd}
|
D ]~}t|}t|d |d d|d d  kr|d }tjj
|d d}|r||_|  ntjj|d |d}|  q| r@tjj
|d d}d|d kr|d d dkr|d d d kr|d d |_d|d kr|d d dkr|d d d kr|d d |_d|d kr|d d dkr|d d d kr|d d |_d|d krN|d d dkrN|d d d krN|d d |_ d|d kr|d d dkr|d d d kr|d d |_!d|d kr|d d dkr|d d d krtd|d d  |d d |_"d |d kr"|d d  dkr"|d d  d kr"|d d  |_#nd!|_#|  td"d#dW S tjj|d}d|d kr|d d dkr|d d d kr|d d |_d|d kr|d d dkr|d d d kr|d d |_d|d kr|d d dkr|d d d kr|d d |_d|d krN|d d dkrN|d d d krN|d d |_ d|d kr|d d dkr|d d d kr|d d |_!d|d kr|d d dkr|d d d krtd|d d  |d d |_"d |d kr"|d d  dkr"|d d  d kr"|d d  |_#nd!|_#|  td"d$dW S ntd
d%dW S W nT t$k
r } z4t%&d& t'|||t(| td't(|i W Y S d }~X Y nX d S )(Nr   r{   zsubscriber/fitnessprofile/r   r   r|   rD  r   r}   FzEmail ID already in user   r   r  r   r   r   Zcountrycoder   r   countryCodez===========+r   r  rG  rH  rI  ZheightMrK  r  ZweightMZkgsTz& Fitness Profile Updated successfully z$ Fitness Profile Saved successfully  User logged outr   rl   ))rP   rB  r   r   r   r   r<   r   r   r9   r   r|   excluder   r   r   r  r   r   r   r  r   rZ   r   r|  rs   r:   r   r   r  rG  rH  rI  rJ  rK  rL  r   r   r	   rz   r   )rg   rC  r   ru   ZprofileInforv   rw   ZfitnessexistZuserProfileZuserExistObjZ	cntrydatar   ZcntryObj
country_idr  ZuserAddsr   r   rm   rm   rn   fitnessProfileInfo  s    

,"2222222


22222222222222
r  c           	      C   sj   g }t jj| d}|jd krf|j}|j}|j}tjj|||d }|D ]}|	|d |d d qH|S )Nr   )rG  trainingLevel_id
bodyWeightexercise_idrK  )r  r  )
r<   r   r   rG  rK  r  r^   r   r   r   )	uidZ	exercisesarrr  Z	genderValZ	weightValZtrainingLevelValZtmaxInfor  rm   rm   rn   r    s    
r  c                 C   s   t | jd}t|d d  td}t| |  }t| |d }d| d |d d  d |d d	  d
 |d d  d |d d  d }t|}|  }t| tddiS )Nr{   ZblogtitlezRhttp://alpha.stratfit.net/blog/?json=get_nonce&controller=posts&method=create_postnoncez7http://alpha.stratfit.net/blog/?json=create_post&nonce=z&title=z	&content=contentz&status=publish&author=Zauthorz&categories=
categoriesr   r   T)r   r   r   r   rs   r  r   r   )rg   ZblogInfoZnonceObjZnoncedetnonrw   postObj
postDetailrm   rm   rn   getNonce  s    
L
r  c                 C   s   t  }|| }|d }t| jd}|}d}zr|d krt| ztjj	|d}W n tj
k
rt   d }Y nX |d k	r`td |d d |_|d d |_|d d	 |_|d d
 |_|d d |_|d d |_|d d |_d|d kr|d d dkr|d d |_|d dksB|d dksB|d dkrHd|_|  tdddW S td tjj||d d |d d |d d d}d	|d kr|d d	 dkr|d d	 |_d
|d kr|d d
 dkr|d d
 |_d|d kr|d d dkr|d d |_d|d krL|d d dkrL|d d |_d|d krz|d d dkrz|d d |_|d dks|d dks|d dkrd|_|  nd|_|  tjj	|jd}	| jd }
tjj	|d}ddd tdD }t|}d|
 d  | }d!}d"}|j|	j|	j|	j|	j|	j|	j|	jd|
 d# t|	j |d$
}td%|}t||| ||_ |  tdd&dW S ntdd'dW S W nT t!k
r } z4t"#d( t$|||t| td)t|i W Y S d }~X Y nX d S )*Nr   r{   zsubscriber/trainerDetails/r   z&------------Update Trainer------------trainerr9  specializationsaccreditations
strengthBPstrengthSQAT
strengthOP
strengthDLtrainerCoverr   r   r   r   r  Tz& Trainer details updated successfully r   z.--------------Create Trainer------------------)r   r9  r  r  Fr  r   r   c                 s   s   | ]}t d V  qdS r   r
   r   rm   rm   rn   r     s     z'createtrainerProfile.<locals>.<genexpr>r   zA/services/services/stratservices/subscriber/activateTrainer?code=zActivate trainer profilezsujatha@stratfit.coz/#/userbranding/)
ZtrainernameZ	traineridr9  r  r   r  r  r  Zuserbrandingr   ztrainerverfication.htmlz$ Trainer details saved successfully r  r   rl   )%rP   rB  r   r   r   r   rs   r=   r   r   DoesNotExistr9  r  r  r   r  r  r  r  r   r   r   r   r   r   r9   r   r   r   r   rT   ra   r   r   r   r	   rz   )rg   rC  r   ru   trainerInforv   rw   rL  ZtrainerInformationZ
trainerobjr   Ztrainerfirstnamer   r   r   rh   rj   ry   rk   r   rm   rm   rn   createtrainerProfile  s    



 *


     *



r  c                 C   s   | j d }t| tjj|d}| rtjj|ddddd}|D ]}|d }|d }tjj|d}d|_|	  t
jj|d}d	|_|	  t
jj|d
}	d}
|	j}d|	ji}td|}t|
|| qFtdddS tdddS d S )Nr
  r  r   r   r   r   r  r   r   r   zProfile verificationZtrainer_fnameztrainerverficonfirmation.htmlT%Trainer profile verified successfullyr   zPlease provide trainer profile)r  rs   r=   r   r   r   r   r   r   r   r9   r   r|   r   rT   ra   r   )rg   r  Ztrainerdata
trainerinfr   r   r  ZtdataZupdateUserTyper   rh   rj   ry   rk   rm   rm   rn   activateTrainer,  s0    
 
r
  c           
      C   s   t  }|| }|d }d}d}zp|d kr~tjdddddd	d
dd	j|d}| rj|D ]}t|}qZnd}td|dW S tdddW S W nR t	k
r }	 z4t
d t|||t|	 tdt|	i W Y S d }	~	X Y nX d S )Nr   r  zsubscriber/viewtrainer/r9  r  r  r   r  r  r  r   r  r   r   T)r   ZDetailsFrA  r   r   rl   )rP   rB  r=   r   r   r   r   r|  r   r   r   r	   rz   r   )
rg   rC  r   r  rv   rw   rL  r   r>  r   rm   rm   rn   viewTrainerProfileG  s$    
$
r  c              
   C   sH  t  }|| }|d }t| jd}|}d}z|d krt| tjj	|d d}|
 rtjj|d d}d|kr|d r|d |_|  n8tjj|d d}	d|kr|d dkr|d |	_|	  td	d
dW S tdddW S W nT tk
rB }
 z4td t|||t|
 tdt|
i W Y S d }
~
X Y nX d S )Nr   r{   zsubscriber/userGoal/r   rR  levelr   r   TzGoal Saved Successfullyr   FrA  r   rl   )rP   rB  r   r   r   r   rs   r?   r   r   r   r   r  r   r   r   r   r   r	   rz   r   )rg   rC  r   ru   ZgoalInforv   rw   r  rI  Zusergoalr   rm   rm   rn   userGoala  s6    




r  c           
   
   C   s  t  }|| }|d }d}d}zt| |d krtjj|dddd}t|dkrtd	 |D ]0}t| t|}td
| t	d|d  W S qt	dddW S nt	dddW S W nT t
k
r }	 z4td t|||t|	 t	dt|	i W Y S d }	~	X Y nX d S )Nr   r  zsubscriber/getUserGoal/r   r  purposer   r   z	Here I amZdobjTr  zUser does not set their goalr   FrA  r   rl   )rP   rB  rs   r?   r   r   r   r)  r|  r   r   r   r	   rz   r   )
rg   rC  r   ru   rv   rw   Zuserpager   r>  r   rm   rm   rn   getUserGoal  s,    


r  c              
   C   sZ  t  }|| }|d }t| jd}|}d}ztjj|d d}|j	dkr||d krpt
ddd	W S tjj|d |d
ddd}| rT|D ]}	t|	}
tjj|
d d}||_|d |_|d |_|  tjddddj||d d}i }| r<|D ],}t|}|d |d kr|d |d< qt
dd|d  W S ntjj||d |d d}|  tjddddj||d d}i }| r|D ]0}t|}|d |d krt|d |d< qt
dd|dW S nt
ddd	W S W nT tk
rT } z4td t|||t| t
dt|i W Y S d }~X Y nX d S )Nr   r{   zsubscriber/createUserfollow/followerUser_idr   r  FYou can not follow yourselfr   r  followingUser_idr  r   followingUserfollowerUser)r  r  ZfollowStatusTzDetails Updated Successfully)r   rk   Zcelebritiesr  r  r   zDetails Saved Successfullyyou are not a celebrityr   rl   )rP   rB  r   r   r   r   r9   r   r   r   r   r@   r   r   r   r|  r  r  r   r   r   r   r   r   r	   rz   r   )rg   rC  r   ru   r=  rv   rw   usertyper   r  rq  rI  ZuserfollowsZufollowZdt3Z	followObjfollowZuserfollows2ZufollowsZdt4Z
followObj2r   rm   rm   rn   createUserfollow  s^    



 
 

r  c           	   
   C   s   t  }|| }|d }d}d}zR|d kr`tjj|d }tjj|d }td||dW S tdd	d
W S W nR tk
r } z4t	d t
|||t| tdt|i W Y S d }~X Y nX d S )Nr   r  zsubscriber/getUserfollow/)r  )r  T)r   ZNumberOFFollowingsZNumberOFFollowersFrA  r   r   rl   )rP   rB  r@   r   r   r  r   r   r   r	   rz   r   )	rg   rC  r   ru   rv   rw   rI  Zdetails1r   rm   rm   rn   getUserFallowersFollowing  s    

r  c              
   C   s   t  }|| }t| |d }d}d}zlt| |d krtj djdd}g }|D ]}t|}	|	|	 qZt
t|W S tddd	W S W nR tk
r }
 z4td
 t|||t|
 tdt|
i W Y S d }
~
X Y nX d S )Nr   r  zsubscriber/getCountryDetails/r   r   )countryStatusFrA  r   r   rl   )rP   rB  rs   rZ   r   rp  order_byr   r   r   r   r   dumpsr   r   r   r	   rz   r   )rg   rC  r   ru   rv   rw   r   rv  r   r>  r   rm   rm   rn   getCountryDetails  s(    

r  c              
   C   s\  t  }|| }|d }t| jd}|}d}z|d krddd tdD }t|}|d d	 t| }	t	
|	d
}
tjj|d dd}tjj|d d}| rtdddW S d|  krdksn d|  krd krRn n`| jd }d| d |
d }d}|d }|d |d}td|}t||| tdddW S | rltdddW S tjj|d |d |
d}|  | jd }d| d |
d }d}|d }|d |d}td|}t||| tdddW S ntdddW S W nT tk
rV } z4td t|||t| td t|i W Y S d }~X Y nX d S )!Nr   r{   zsubscriber/inviteusers/r   c                 s   s   | ]}t d V  qdS r   r
   r   rm   rm   rn   r     s     zinviteusers.<locals>.<genexpr>r  r|   r   r   r   r|   r   r}   TKInvitation with this mail-id already accepted or already a user in StratFitr   r   r   r   #/acceptinvites/
Invitationr   r   r   coachinvitations.htmlInvitation sent successfully(Invitation to this email-id already sent)r   r|   r   /#/acceptinvites/FrR  r   rl   rP   rB  r   r   r   r   r   r   r   r   r   r   rA   r   r   r9   r   r   r   rT   ra   r   r   r   r   r	   rz   rg   rC  r   ru   
emailslistrv   rw   r   r   r   r   ZexistingInvitesr  r   r   rh   rj   ry   rk   ZcreateInvitaionr   rm   rm   rn   inviteusers  sd    

0





r,  c              
   C   s  t  }|| }|d }t| jd}|}d}z|d kr@tjj|d d}|D ]}t	|d d|d  tjj
|d d}	|	 rt	d	 d
}
qVddd tdD }t|}|d d t| }t|d}| jd }d| d |d }d}|d }|d |d}td|}
t||
| d}
qVtdddW S tdddW S W nT tk
r } z4td t|||t| tdt|i W Y S d }~X Y nX d S )Nr   r{   zsubscriber/inviteMultiEmails/r   r   z---<>---r|   r}   zUser Already ExistszAlready Accepted the Invitationr   c                 s   s   | ]}t d V  qdS r   r
   r   rm   rm   rn   r   ^  s     z$inviteMultiEmails.<locals>.<genexpr>r  r   r   r   r   r(  r#  r$  r%  r&  TzInvitations sent successfullyr   FrA  r   rl   )rP   rB  r   r   r   r   r9   r   r   rs   r   r   r   r   r   r   r   r   r   rT   ra   r   r   r   r	   rz   )rg   rC  r   ru   r+  rv   rw   Z	coachnamer  ZexistingInvitationsrk   r   r   r   r   r   r   rh   rj   ry   r   rm   rm   rn   inviteMultiEmailsJ  sF    




r-  c                 C   s>  t | jd}t|d  td t|d d}|dd}t| tj	j
|d d }t|d	 | r,tj	j
|d dd
ddd}|D ]}t|}t|d d d}qtj	j
|d d }	|	 rtdddS tj	j|d |d d|d t|d}
|
  tdd|d dS ntdddS d S )Nr{   r
  zcame Here TO Printr   r   r   r   r}   Zppppr   r   r|   r   Z	123456789r   Fz2Already a user. Please Login with your credentialsr   r   )r   r|   r   r   r   Tr  r  zInvalid Details)r   r   r   r   r   r  rs   r   rA   r   r   r   r   r|  r9   r   r   r   r   )rg   Zinvitationsr  r  ZinvitationDatar	  r   r>  r   ZchecktrainerZcreateTrainerrm   rm   rn   acceptinvitev  s6    

r.  c              
   C   s  t  }|| }|d }d}d}z|d kr.d| jkrV| jd dkrVt| jd }nt}d| jkr| jd dkrt| jd }nd}|d | }|| }	tjjdd	d
d	 
d
}
t|
}|
||	 }t }|D ]D}t|}tjj|d
 d}| r
d|d< nd|d< || qt||dW S tdddW S W nT tk
r } z4td t|||t| tdt|i W Y S d }~X Y nX d S )Nr   r  subscriber/invitedUsersData/rh  r   ri  r   r   r   r|   r   r}   Acceptedr   Invitedrn  FrR  r   r   rl   rP   rB  r	  r   r5   rA   r   r   r   distinctr  r)  rq  r|  r9   r   r   r   r   r   r	   rz   r   rg   rC  r   ru   rv   rw   rh  ri  rr  rs  ZinvitedDataro  r   rv  r   r>  userdatar   rm   rm   rn   invitedUsersData  s@    

 


r7  c              
   C   s  t  }|| }|d }d}d}z|d kr.d| jkrV| jd dkrVt| jd }nt}d| jkr| jd dkrt| jd }nd}|d | }|| }	tjjdd	d
d	 
d
}
t|
}|
||	 }t }|D ]D}t|}tjj|d
 d}| r
d|d< nd|d< || qt||dW S tdddW S W nT tk
r } z4td t|||t| tdt|i W Y S d }~X Y nX d S )Nr   r  r/  rh  r   ri  r   r  r0  r|   r   r}   r1  r   r2  rn  FrR  r   r   rl   r3  r5  rm   rm   rn   invitedCelebData  s@    

 


r8  c              
   C   sz  t  }|| }|d }t| jd}|}d}z|d krt| d|krfddkrft|d }nd}d|krddkrt|d }nd}|d | }	|| }
d	|kr|d	 d
krtj	j
dddd d}n tj	j
dddd d}d|  krdks,n d|  kr(d kr<n n|j
|d d}d|  krTdksrn d|  krnd krn n|j
|d d}|}t|d t|}||	|
 }t| t }|D ]F}t|}tj	j
|d d}| rd|d< nd|d< || qt||dW S tdddW S W nT tk
rt } z4td t|||t| tdt|i W Y S d }~X Y nX d S )Nr   r{   zsubscriber/invitedDataSearch/rh  r   d   ri  r   ZcelebId8r  r0  r|   r   r   )Zemail__icontains)Zname__icontainszthis Came Herer}   r1  r   r2  rn  Fzuser Logged Outr   r  rl   )rP   rB  r   r   r   r   rs   r   rA   r   r   r   r4  r  r)  rq  r|  r9   r   r   r   r   r   r  rz   r   )rg   rC  r   ru   r   rv   rw   rh  ri  rr  rs  ZinvitefilterZivvitefilter_allro  Zinvites_filterrv  r   r>  r6  r   rm   rm   rn   invitedDataSearch  sV    

" 66



r;  )GraphAPIc                 C   s"   d}t |}| }t|ddS )Na:  https://graph.facebook.com/v2.8/me?fields=albums.limit(5)%7Bname%2C%20photos.limit(2)%7D%2Cposts.limit(5)&access_token=EAACEdEose0cBALWVJi0YwU4vZAbnBV9KT57PdaVvNWu3axW84LN27vIsVu6PFlRQV84nSHZB6CrqkSNSRfyHQJhPy1jqCuxvzoLtifg3ZBUqsHmLnhqAvf8l9PSJZCY91JI18VLTLaByePfzRSaFKp3YO1pMndmKSidoPQPTaAgwiKPcszHZCXRpESSJX9oIZDFr-  )r  r   r   r   )rg   post_urlr  r  rm   rm   rn   getFacebookFeed$  s    
r>  c              
   C   s   t  }z|| }t| jd}|d }|d krt|d |D ]0}t|d tjj	|d}d|_
||_|  qBtddd	W S td
dd	W S W n@ tk
r } z"td tdt|i W Y S d }~X Y nX d S )Nr{   r   rT  z--<>--r  r  Tz#Gym Super User Created Successfullyr   FrR  r  rl   )rP   rB  r   r   r   r   rs   r9   r   r   r   r   r   r   r   r   r  r   )rg   rC  r   r   ru   r   Zgymsuperuserr   rm   rm   rn   makeGymSuperUser+  s$    




r?  c              
   C   s`  t  }z|| }t| jd}|d }|d krt|d d|d kr*|d d dkr*tjj	|d d d}|d d |_
|d d |_|d d	 |_|d d
 |_|d d |_|d d |_|d d |_|d d |_|d d |_|d d |_|d d |_|  tdddW S tjjd||d d |d d	 d}d|d kr||d d dkr||d d |_d
|d kr|d d
 dkr|d d
 |_d|d kr|d d dkr|d d |_d|d kr|d d dkr|d d |_d|d kr4|d d dkr4|d d |_d|d krb|d d dkrb|d d |_d|d kr|d d dkr|d d |_d|d kr|d d dkr|d d |_d|d kr|d d dkr|d d |_|  tdddW S ntdddW S W nB tk
rZ } z"td tdt|i W Y S d }~X Y nX d S )Nr{   r   rT  r   r   r  ZaccountHolderbankNameZac_numr  Zifscr   Z
ac_countryZac_stateZac_cityZ
ac_zipcodeTz$Account details updated successfullyr   r   )r   r   accountHolderNameaccountNumberZswiftz"Account details saved successfullyFrR  r  rl   )rP   rB  r   r   r   r   rs   rC   r   r   rA  r@  rB  
bankAdress	swiftCodeifscCodedefaultr   r6  r5  zipcoder   r   r   r   r   r  r   )rg   rC  r   r   ru   ZupdateDetailsZsaveDetailsr   rm   rm   rn   saveSubscriberValidationE  sh    


 

         
rH  c           	   
   C   s   t  }zp|| }|d krd|d }g }tjj|d }|D ]}t|}|| q<td|dW S tdddW S W n@ t	k
r } z"t
d td	t|i W Y S d }~X Y nX d S )
Nr   r   Tr  FrR  r   r  rl   )rP   rB  rC   r   r   r   r|  r   r   r   r   r  r   )	rg   rC  r   ru   acArr	acDetailsr  r  r   rm   rm   rn   getAccountDetails  s    

rK  c           
   
   C   s   t  }t| jd}zv|| }|d kr||d }g }tjj||d d	 }|D ]}t
|}|| qTtd|dW S tdddW S W n@ tk
r }	 z"td	 td
t|	i W Y S d }	~	X Y nX d S )Nr{   r   )r   r   Tr  FrR  r   r  rl   )rP   r   r   r   r   rB  rC   r   r   r   r|  r   r   r   r   r  r   )
rg   rC  r   r   ru   rI  rJ  r  r  r   rm   rm   rn   getAccountDetails_id  s     

rL  c              
   C   s  t  }t| jd}z|| }|d kr|d }tjj|d d}d|_	|
  tjj|d j|d d}|D ],}t|}tjj|d d}	d|	_	|	
  qvtddd	W S tdd
d	W S W nB tk
r }
 z"td tdt|
i W Y S d }
~
X Y nX d S )Nr{   r   r  Tr   r   FzDefault Accountr   rR  r  rl   )rP   r   r   r   r   rB  rC   r   r   rF  r   r   r   r  r|  r   r   r   r  r   )rg   rC  r   r   ru   ZupdateAcrJ  r  r  ZupdateOtherAccountsr   rm   rm   rn   updateDefaultAccount  s(    


rM  c                 C   s  zt | jd}t }|| }t|d tjj	|d d
ddddd	d
dddddddd}t }|D ]$}t|}g }g }	tjj	|d dd
dd}
t|
d |
 r|d k	r|
D ].}t|}|d |d krd|d< qd|d< qnd|d< t|
}nd}||d< tjj	|d d
dddd}tjj	|d dddd 
d!d"d#d$d%d&d'd(d)d*d+d&d,d-d.}| r|D ] }t|}|| ||d/< qxng |d/< | r|D ]}t|}|d+ d0ks|d+ d1kr"tjj|d& d2}t|d" d3 tt|jd4 t|j  d5 |d"< nFtjj|d, d2}t|d" d3 tt|jd4 t|j  d5 |d"< |	| |	|d6< qng |d6< || qltt |W S  tk
r } z"td7 td8t|i W Y S d }~X Y nX d S )9Nr{   ZqwertgZ	trainerIdr   r   r   r9  r  r  r   r  r  r  plansPublishedtrainerLikesr  Zuser_id__avatarr1  r   r  r   r  r  Z
1234567890TexistingFollowersFr   totalfollowersr;  r<  )r   r  activationStatusProgramTyperX  r`  r\  r^  createdBy_id__avatarr   createdBy_id__first_namer_  r]  ZprogramType_id__programTypeNamerb  rc  rd  re  
socialInforf  rg  r   rh  ri  rj  r&  r   rl   )r   r   r   r   rP   rB  rs   r=   r   r   r   rq  r|  r@   r   r)  rB   r,   r{  r   r9   r   r   r   r   r   r  r   r   r	   r   )rg   r   rC  r   Ztrainervaluesrv  r   r>  socialDetailsZtrainerPlans	followersfollower
userfollowrR  rW  Ztplansr  r   r&  r  r  r  r   rm   rm   rn   r    s`    

2




>


64

r  c                 C   s*  zt | jd}t }|| }tjj|d d	dddd}t
 }g }g }g }|D ]v}	t|	}
tjdd	d
j|d d	dddd}| r|D ]}t|}|| ||
d< qn||
d< tjj|d d	dddd}| r|D ]}t|}|| ||
d< qng |
d< tjj|d dd	dd}| r|d k	r|D ]2}t|}|d |d krxd|
d< nd|
d< qPnd|
d< t|}nd}||
d< tjd	dj|d ddgd	dd d!d"d#d$d%d&d'd(d)d*d+d,}| r|D ]}t|}|d* d-ks|d* d.krbtjj|d$ d}t|d  d/ tt|jd0 t|j  d1 |d < nFtjj|d) d}t|d  d/ tt|jd0 t|j  d1 |d < || ||
d2< qng |
d2< ||
 qZtt |W S  tk
r$ } z"td3 td4t|i W Y S d }~X Y nX d S )5Nr{   r   r   r   rv  r   r   rF  Plan__idZExercise__idr   ro  rW  ZexerciseId__exerciseNamer%  r;  r   r<  rW  r   rP  r  r  TrQ  Fr   rR  r   )r   rT  plan_id__planNameZplan_id__planDescriptionZplan_id__priceZplan_id__abilityZplan_id__createdBy_id__avatarZplan_id__createdBy_idZ!plan_id__createdBy_id__first_nameZplan_id__planGoal__goalNameZplan_id__duration_weeksZ(plan_id__programType_id__programTypeNameZplan_id__originalPlanner_idZplan_id__licencePolicyrd  re  rf  rg  rh  ri  rj  r&  r   rl   )r   r   r   r   rP   rB  r9   r   r   r   rq  r|  rK   r{  r   r   rB   r@   r)  rJ   r   r   r   r   r   r  r   r   r	   r   )rg   r   rC  r   Z
uservaluesrv  rX  Z	userPlansZtMaxArrr   r>  ZuserTmaxr%  Z	tmaxValuerW  r  r   rY  rZ  r[  rR  Zuserplandetailsplanr  r  r  r   rm   rm   rn   userBrandingInfo  sr    

(


 



@
64

r_  c           :       C   s 	  d}t }| jdkrtddiS | jdkrt| jd}i }ztt jj|d d}|	 rt jj
|d d}d|_|j|d	< | j
d
d |d< |  t }||}	|	}
z|
d dk rd|
krtdd|
d dW W S td|
d dW W S nht jj
|
d d	 d}|j}tjdj|jdddddddddd	}d}i }i }i }|	 rd }|D ]:}t|}|d d krf|d |d!< |d d"|d< qftjj|jd# }d}|	 rd }|D ]}t| t|}t| qtjj|jd#jdd$gd% }t jj
|jd}d}d}g }g }d }|	 rd}d }|D ]4}t|}tjj|d& d' }tjd(d)dj|d& ddd*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@}|D ]}t|} tjdAj| d d'dB}!dC}"|!D ]}#t|#}$|"dD|$dB  7 }"q|"dCkr*|"dd  }%ndC}%tjdEj| d d'dF}&dC}'|&D ]}#t|#}$|'dD|$dF  7 }'qT|'dCkr|'dd  }(ndC}(|(| dG< |%| dH< |(| d/< |%| d6< | d< dIks| d< dJkrt jj
| d: d})t| d1 dK tt|)jdL t|)j   dM | d1< nFt jj
| d; d}*t| d1 dK tt|*jdL t|*j   dM | d1< dN| dO< dP| dQ< || dR< t|
dS dT|kr|dT dUkr|j!dVkr|
d dW dXkr| d? | d-< | d? | dY< | d? | d=< n| d= | d-< | d= | dY< t"| d- dkrdZ| d-< n|
d dW dXkr6t#j j| d? d[}+nt#j j| d= d[}+|+D ]},t|,}-|-d\ }.qP|.| d-< | d? | d=< t"| d- dkrddZ| d-< nt"| d- dkrdZ| d-< n|j!dVkr|
d dW dXkr| d@ | d-< | d@ | dY< n| d- | d-< | d- | dY< nD|
d dW dXkr2| d@ | d-< | d@ | dY< n| d- | d-< | d- | dY< t$| d- dkrdZ| d-< q| |d]< |%| qFt&jj|jd#d^d_d`dadd&dbdcdddedfdgdhdi}/|/	 rd }|/D ] }t| t|}|%| qt|j t'jj
|j(d}0|0j)}1t*jj|jd }2|2	 rl|2D ]D}3t|3}4|4dj }5t+,|5 t*jj
|4d d}6|	dk |6_-|6  q$nt*jj.|j|	dk dl}7|7  |jd k	rdd | j/dm< |j| j/d	< |j| j/df< |j| j/dn< |j0| j/do< td dp|||||||||	dq |	dk |
d d	 ||j|j |j0|j|
d d |j1|j(|j2|j3|1||
d dr |
d ds |j|
d dt |
d du dvW W S W n: t4k
r }8 ztdwt|8i W Y W S d }8~8X Y nX ntdd}dW S W nD t8k
r }8 z$t9:d~ tdt|8d W Y S d }8~8X Y nX d S )Nr   r  rk   r  r	  r{   r   r   r|   r  r  r   r  r   Fr   r  r   r+  r}   rF  r   rG  rH  rI  rJ  rK  rL  rM  rN  rO  TrP  rQ  rR  r   rS  rW  r  rU  rV  rX  rZ  r[  r\  r]  r^  r_  r`  ra  r  r  r  r?   rY  r  r  r   rc  rb  rd  re  r  r  r  r  r   r  r  r  r  r  rf  rg  rh  ri  rj  r  r  r  r  r  r  r   r  r  r   r  r  r  r  r  r=  rk  rl  rm  rn  r%  ro  rp  rq  r   rr  rs  rt  r  r#  r  r   r   r!  r"  r
  r   r   r  r  )r   rk   r$  r?   r%  r&  r'  r(  r)  r*  r
  r#  r+  r   r   r   r!  r   r   r   ru  rv  r   rw  rx  r   r   r|   ry  rz  rl   r,  r-  r/  r0  r  r  r  );r9   r  r   r   r   r   r   r   r   r   r   r   r|   r   r   rN   r1  r   r<   r{  r   r   r|  r}  r?   rs   rJ   r  r,   r1   r2   r   r   r   r   r[   r  r   rK   r6   r~  r  rG   r   r   r  r   r2  r!  r   rv  r   r   rQ   r
  rk   r	   r   r  ):rg   r  r  r  r   r  r  r   r3  r4  r5  r6  r   r  r'  r  r  r  r   r  r(  r  r   r)  r*  r&  r  rx  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r
  r  r  r  r  r  rw  r  r  r  r  r  r  r   r7  rm   rm   rn   checkLoginWithIDL  sR   



,

 

P


64



0





    
r`  c              
   C   s  t  }z|| }t| |d }t| jd}tjj	|d d}t|j
d |j
dks|j
dks|j
dks|j
d	ks|j
d
krl|t|d krtdddW S d|krd
|d< tjj|d |dddd}t|d | r:|D ]H}t|}t| tjj	|d d}	||	_|d |	_|d |	_|	  qn"tjj||d |d d}
|
  tdddW S |j
dkr~d}n4|j
d	krd}n"|j
dkrd}n|j
d
krd}td|dW S W nB tk
r } z"td tdt|i W Y S d }~X Y nX d S )Nr   r{   r  r   Z12345678r  r  r   r   r   Fr  r   r   r  r  r   r  Tzdetails Saved Successfullyr  zyou are not a Trainerzyou are not a Gym Super Userzyou are not an Adminr   rl   )rP   rB  rs   r   r   r   r   r9   r   r   r   r   r   r@   r   r   r   r|  r  r  r   r   r   r   r   r	   r   )rg   rC  r   ru   r=  r  r   r  rq  rI  r  rk   r   rm   rm   rn   Userfollowers  sV    
4




ra  c                 C   s  zdt jdddjddddddd	d
dddddddddddddd}g }g }t }|D ]}t|}|d dks~|d dkrtjj|d d}t	|d d t	t	|j
d t	|j  d |d< nFtjj|d d}t	|d d t	t	|j
d t	|j  d |d< ||d  ||d  qZt| |D ]R}	|	dkrt jdddjdddddddd	d
ddddddddddddddd d d! }
|	d!krt jdddjdd!dddddd	d
ddddddddddddddd d d! }
|	d"krVt jdddjdd"dddddd	d
ddddddddddddddd d d! }
|
D ]*}t|}|d dks|d dkrtjj|d d}t	|d d t	t	|j
d t	|j  d |d< nFtjj|d d}t	|d d t	t	|j
d t	|j  d |d< |d |d#< |d |d$< d%|d&< |d	 |d'< |d |d(< |d
 |d)< |d |d*< |d |d+< |d |d(< || qZq6tjj|d, }g }|D ]}t|}d-|d.< |d/ d k	r|d/ |d0< nd1|d0< |d |d(< |d2 d |d3  |d4< g }t jj|d d5d}|D ]}t|}||d  q"||d6< || qtd7||d8W S  tk
r } z"td9 td:t	|i W Y S d }~X Y nX d S );NrU  rV  rF  r   r  rS  r   rX  rY  r\  r_  r`  ra  programType__idr]  	createdByr^  rU  rV  r  r   rb  rc  rd  re  rf  rg  r   rh  ri  rj  )r  r  rS  -idr   r   r  planType0planCompetencyr  coachIdplanGoal	planLevelplanDurationZid__in20rY  rv  coachThumbnailr   r   r   r  r   
coachPlansTr   rI  Z
allCoachesr   rl   )r,   r   r{  r   r   setr|  r9   r   r   r   r   r   addrs   r  r   r   r   r	   )rg   planDetailsplanArrplanCoachesplanSetr   r>  r  r  setIdplanListr^  r  coachDetailscoachArrcoachcoach_idcoachPlansArrr&  plrq  r   rm   rm   rn   	planListsI  sx    D64

T
T
T
64
r  c                 C   s$  t  }|| }d}d}t| jd}z|d kr|d }tjj|d}d}t	jj
||d dd	d
ddd}	tjj|d d}
|
j}|
j}|
j}tjjdd}|j}|jdkr|d dkr|
j}n|d dkr|
j}|
j}d}d}d}|	 rT|	D ]P}t|}|d dks(|d dkr:d}d}td nd}d}d}td q nXt	jj
|dd}| rt|dkrd}nd}d}d}td nd}d}td td||||||||d	W S tddd W S W nB tk
r } z"td! td"t|i W Y S d }~X Y nX d S )#Nr  subscriber/subscribedPlan/r{   r   r   FrW  r   rW  r\  r]  r   r   r  r   r  No Plans Subscribedr   Already Subscribed to this PlanActive Plan Already Existsr   Renewal of the active planTPlan Renewalr   CThank you for subscribing to plan. Start your one month free Trail Paid Subscriptionr   NThank you for subscribing to a Plan.Your 28 Days free trial will be activated.Free Subscription)	r   rk   paymentStatusrX  planIdrenewalr  freesubscriberrd  rR  r   r   rl   )rP   rB  r   r   r   r   r9   r   r   rJ   r   r{  r   r,   rX  r   r\  r\   r  r   r  rd  r   r|  rs   r)  r   r   r   r	   r   )rg   rC  r   rv   rw   r=  ru   r   r  subscribedPlanplanvalrX  r  r  r  r  rd  r  rk   r  r^  
planValuesuserplanexistsr   rm   rm   rn   subscribedPlans  sj    

&





r  c           0      C   s  t  }|| }d}d}t| jd}zl|d kr|d }tjj|d}d}g }	t	jj
||d dd	d
ddd}
t|
j tjj|d d}|j}|j}|j}|j}tjjdd}|j}|jdkr|d dkr|j}n|d dkr|j}|j}d}d}d}i }|
 rt	jj
|dj
ddgd }tjj|d}d}d}g }	g }d}| rd}d}|D ]B}t|}t	jj
|d d }tjdddj
|d dddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/}|D ]} t| }!tjd0j
|!d dd1}"d2}#|"D ]}$t|$}%|#d3|%d1  7 }#q|#d2krN|#dd  }&nd2}&tjd4j
|!d dd5}'d2}(|'D ]}$t|$}%|(d3|%d5  7 }(qx|(d2kr|(dd  })nd2})|)|!d6< |&|!d7< |)|!d< |&|!d%< |!d+ d8ks|!d+ d9kr8tjj|!d) d}*t|!d  d: tt|*jd; t|*j   d< |!d < nFtjj|!d* d}+t|!d  d: tt|+jd; t|+j   d< |!d < d=|!d>< d?|!d@< ||!dA< q|!|dB< |	!| qj|
D ]T},t|,}-|-d dks|-d dkrd}|-}dC}tdD ndE}dF}d}tdG qnXt"jj
|dHd}.|. rTt#|.dkr>d}nd}d}dI}tdJ ndK}dL}tdM t$d||||||||||	dNW S t$ddOdPW S W nB t%k
r }/ z"t&'dQ t$dRt|/i W Y S d }/~/X Y nX d S )SNr  r  r{   r   r   FrW  r  r\  r]  r   r   r  r   r  r  rR  r   rS  Tr  rU  rV  rF  rX  rZ  r[  r\  r]  r^  r_  r`  ra  r  r  r  r?   rY  r  r  r   rc  rb  rd  re  r  r  r  r  r   r  r  r  r  r  rf  rg  rh  ri  rj  r  r  r  r  r  r=  r  r  r   r  r  r   r  r  r   r  r  )r   rk   r  rX  r  r  r  r  rd  r`  subscriptionrR  r   r   rl   )(rP   rB  r   r   r   r   r9   r   r   r  r   r{  r   rs   r  r  rX  r`  r   r\  r\   r  r   r  rd  r   r|  r  r   r!  r   r   r   r   rJ   r)  r   r   r   r	   )0rg   rC  r   rv   rw   r=  ru   r   r  r&  r  r  rX  r`  r  r  r  r  rd  r  rk   r  ZsubscriptionDetr  r)  r*  r  rx  r   r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r^  r  r  r   rm   rm   rn   subscribedPrograms  s    

&




P


64


"
r  c           
   
   C   s   t  }|| }d}d}z|d kr|d }tjj|dddddd}| rv|D ]}t|}qVt	d	|d
dW S t	dddW S nt	dddW S W n@ t
k
r }	 z"td t	dt|	i W Y S d }	~	X Y nX d S )Nr  r  r   r   r   r   r\  r]  rW  Tz!Thank you for subscribing a plan )r   rI  rk   FzPlease Subscribe to a Programr   rR  r   rl   )rP   rB  r  r   r   r{  r   r   r|  r   r   r   r	   r   )
rg   rC  r   rv   rw   ru   r  r^  r  r   rm   rm   rn   subscribedPlans1G  s"    
 

r  c              
   C   s   t  }|| }t| jd}z|d kr|d }tjj||d d	d}|
 rftdddW S tjj|d |d}|  td	d
dW S ntdddW S W n@ tk
r } z"td tdt|i W Y S d }~X Y nX d S )Nr{   r   
profuserid)likedUser_idr   Fzalready likedr   r   r  Tz
Like SavedrR  r   rl   )rP   rB  r   r   r   r   rE   r   r   r   r   r   r   r   r   r   r	   r   )rg   rC  ru   likeinfoZloginuser_idexistZlikedatar   rm   rm   rn   userlike_  s&    

r  c              
   C   sJ  t  }|| }t| jd}z|d krg }i }tjj|d d	 }||d< tjj|d |d d	 }|dkrd|d	< nd
|d	< |
| td|dW S g }i }	td|d  tjj|d d	 }t| ||	d< d|	d	< |
|	 td|dW S W nB tk
rD }
 z"td tdt|
i W Y S d }
~
X Y nX d S )Nr{   r  r   
totallikesr   r  r   TZdislikeF)r   r  z++++++++elser   rl   )rP   rB  r   r   r   r   rE   r   r   r  r   r   rs   r   r   r	   r   )rg   rC  ru   r  ZtotallikesArrZtotallikesObjr  ZlikesZtotallikesArr1ZtotallikesObj1r   rm   rm   rn   getuserlikesy  s6    




r  c              
   C   s<  t  }|| }z|d krg }g }tjdddd}|D ]}t|}|d d|d< || t	| t
jj|d dddddd}| r<|D ]0}t|}	|	d d|	d< t	|	 ||	 qq<td	||d
W S tdddW S W nB tk
r6 }
 z"td tdt|
i W Y S d }
~
X Y nX d S )Nr   r|   rj  %Y-%m-%dr   r   rW  rk  T)r   ZUserArrrv  FrR  r   r   rl   )rP   rB  r9   r   r   r  r|  r}  r   rs   rJ   r   r   r   r   r   r	   r   )rg   rC  ru   ZuserArrrv  r+  r   ru  r^  	userplansr   rm   rm   rn   statsOfUsersRegisterd  s0    

$
r  c              
   C   s  t  }|| }t| jd}z|d kr(g }g }|d dkrVtd tj	ddj
ddd	d
ddddd}| rt|}nd}|d|d tj	ddj
ddd	d
ddddd}| rt|}	nd}	|d|	d tj	ddj
ddd	d
ddddd}
|
 r2t|}nd}|d|d td|dW S |d dkrHtd tj	dj
dddddd	dd}| r$|D ]p}t|}tj	ddj
|d	 dd	ddd}| r||d t|d n||d dd qtd|dW S |d dd td|dW S q8|d dkr8td  tj	dj
dddddd	dd}| r|D ]p}t|}tj	ddj
|d	 dd	ddd}| r||d t|d n||d dd qtd|dW S |d dd td|dW S n|d d!kr8td  tj	dj
dddddd	dd}| r|D ]p}t|}tj	ddj
|d	 dd	ddd}| r||d t|d n||d dd qtd|dW S |d dd td|dW S ntdd"d#W S W nB tk
r| } z"td$ td%t|i W Y S d }~X Y nX d S )&Nr{   programrg  rT  r\  rV  r   )Zplan_id__programTyper   Z%plan_id__programType__programTypeNamer   rW  Zplan_id__programType__idrk  ZStarter)r^  r  r   zIntermediate r   ZAdvancedT)r   r&  1z	in here 2)r  r  rS  rX  r  r]  r   F2z	in here 3rf  rR  r   r   rl   )rP   rB  r   r   r   r   rs   rJ   r   r{  r   r   r  r   r)  r   r   r,   r|  r   r   r	   r   )rg   rC  ru   ZprogramTypesZ
programArrZuserplanArrZprogramTypeSubsZstarterZprogramTypeSubs1ZintermediateZprogramTypeSubs2Zadvancedru  r^  r  r  r   rm   rm   rn   programTypeStats  s    

,
,
,

(
*
(
*
(
*

r  c              
   C   sN  t  }|| }t| jd}z|d krg }t }|d dkr\dt|d  d }ndt|d  d }|	| t
|}d }|D ]b}	|d k	r|	d	 | |	d	< |	d	 d
k rd
|	d	< ||	 ||	d	 k r|	d	 }q||	 |	d	 }q|  td|iW S W nB tk
rH }
 z"td tdt|
i W Y S d }
~
X Y nX d S )Nr{   r  r2  zkSELECT count(session_id) as totalSessions, session_id, plan_id FROM `Userplan_userexercise` where plan_id =rW  z; group by session_id order by session_id desc, plan_id desczqSELECT count(microcycle_id) as totalSessions, microcycle_id, plan_id FROM `Userplan_userexercise` where plan_id =zA group by microcycle_id order by microcycle_id desc, plan_id descZtotalSessionsr   r   r   rl   )rP   rB  r   r   r   r   r   r  r   r  r  r   reverser   r   r   r	   )rg   rC  ru   ZplandetailsZsessArrr  r  r  ZpreCntr   r   rm   rm   rn   sessionscount  s8    







r  c              
   C   s   t  }|| }zR|d kr`g }tjjddddd}|D ]}t|}|| q:td|iW S W n@ t	k
r } z"t
d tdt|i W Y S d }~X Y nX d S )Nr   rb  r   rX  r   r   rl   )rP   rB  r,   r   r   r   r|  r   r   r   r   r	   r   )rg   rC  ru   rv  r&  r^  r  r   rm   rm   rn   plannameslist/  s    

r  c              
   C   s   t  }|| }zBd}|d kr@d|kr.|d }tdd|dW S tdddW S W nB tk
r } z$td	 tdt|d
 W Y S d }~X Y nX d S )Nr   r   TzUser Logged in)r   rk   r   FUser Logged outr   r   r   rl   )rP   rB  r   r   r   r	   r   )rg   rC  ru   Zusercountryr   rm   rm   rn   sessionCheckA  s    

r  c                 C   s:  t  }|| }z|d kr|d }zntjdddjdd|dddd	d
ddddddddddddddd}g }g }t }|D ]}t|}	|	d dks|	d dkrt	jj
|	d d}
t|	d d tt|
jd t|
j  d |	d< nFt	jj
|	d d}t|	d d tt|jd t|j  d |	d< ||	d  ||	d  qt| |D ]X}|dkrtjdddjddd|d ddd	d
dddddddddddddddd!d d" }|d"kr$tjdddjdd"d|d ddd	d
dddddddddddddddd!d d" }|d#krtjdddjdd#d|d ddd	d
dddddddddddddddd!d d" }|D ]*}t|}|d dks|d dkrt	jj
|d d}
t|d d tt|
jd t|
j  d |d< nFt	jj
|d d}t|d d tt|jd t|j  d |d< |d |d$< |d |d%< d&|d'< |d
 |d(< |d |d)< |d |d*< |d |d+< |d |d,< |d |d)< || qq^t	jj|d- }g }|D ]}t|}d.|d/< |d0 d k	r|d0 |d1< nd2|d1< |d |d)< |d3 d |d4  |d5< g }tjj|d d6d}|D ]}t|}||d  qP||d7< || qtd8||d9W W S  tk
r } z$td: td;t|i W Y W S d }~X Y nX ntd<d=d>W S W nD tk
r4 } z$td: td<t|d? W Y S d }~X Y nX d S )@Nr  rU  rV  rF  r   )r  rS  createdBy_id__organization_idr   rX  rY  r\  r_  r`  ra  rc  r]  rd  r^  rU  rV  r  r   rb  rc  rd  re  rf  rg  r   rh  ri  rj  )r  r  rS  r  re  r   r   r  rf  rg  rh  r  ri  rj  rk  rl  rm  rn  rY  rv  ro  r   r   r   r  rp  rq  Trr  r   rl   Fr  r   r  )rP   rB  r,   r   r{  r   r   rs  r|  r9   r   r   r   r   r   rt  rs   r  r   r   r   r	   )rg   rC  ru   ru  ru  rv  rw  rx  r   r>  r  r  ry  rz  r^  r  r{  r|  r}  r~  r  r&  r  rq  r   rm   rm   rn   gymPlanListsS  s    

F64

V
V
V
64
*
r  c           
      C   s   t jd}|D ]v}t|}|d }ddd tdD }t|}tjj|d }|	 rld}t
| qtjj||dd	}	|	  qtd
ddS )Nr   r   c                 s   s   | ]}t d V  qdS r   r
   r   rm   rm   rn   r     s     z$insertReferalCode.<locals>.<genexpr>r  r   zrefral Code existsr   r   TzReferal Code Insertedr   )r9   r   r   r|  r   r   r   rD   r   r   rs   r   r   r   )
rg   ZuserValuIduserObjr   r   r   ZuserRefralexistsrk   r   rm   rm   rn   insertReferalCode  s"    

r  c              
   C   s  t  }|| }|d }z8|d kr@t| jd}d|kr.|d D ]l}t| d|krJ|d dkrJ|d dkrJtj	ddddd	d
dj
||d	 |d d}| rltd |D ]}d|kr |d dkr tjj|d d}|d |_|d |_|d	 |_|d |_d|_|  qtjj|d d}|d |_|d |_|d	 |_|d |_d|_|  qqJd|krJ|d dkrJtd tjj||d |d |d	 |d dd}	|	  qJg }
tj j
|dd}|D ]D}t|}|d
 dkrd|d< |d
 dkrd|d< |
| qtdd|
dW S tdddW S ntdddW S W nD tk
r } z$td tdt|d W Y S d }~X Y nX d S )Nr   r{   ZwtinforK  r   r   r   r  barbellr   index)r   r  r  z---------exists-------checkedTr   r   z---------create-----------r   rK  r  r  r  r   r  Fz Plate weights saved successfully)r   rk   plateWtszSomething went wrongr   r  r   r  )rP   rB  r   r   r   r   rs   rF   r   r   r   r   r   rK  r  r  r  r   r   r   rp  r   r   r   r   r   r	   r   )rg   rC  ru   r   Zwtdatar   ZgetwtsrA  ZupwtswtinfgetplatewtArrgetplatewtspdatapObjr   rm   rm   rn   createUserPlateWts  sn    


 ,











r  c           
   
   C   s  t  }|| }|d }z|d krg }g }tj j|dd}|D ]`}t|}|d dkrbd|d< |d dkrvd|d< |d	 dkr|| |d	 dkrB|| qBtd||d
W S tdddW S W nD t	k
r }	 z$t
d tdt|	d W Y S d }	~	X Y nX d S )Nr   r   r  r   Tr  r   Fr  )r   r  Z	barbelWtsr  r   r   r  )rP   rB  rF   r   rp  r   r   r   r   r   r   r	   r   )
rg   rC  ru   r   r  ZgetBarbelArrr  r  r  r   rm   rm   rn   getPlateWeights  s.    


r  c              
   C   s   ddddddddd	g	}dddg}t jjd	d
gdd}|D ]}t|}|d }tjj|d }| rttd q<d}d}	|D ],}
|d	 }tjj||
dd|d	d}|	  q|D ],}|	d	 }	tjj||d	d	|	d	d}|	  qq<t
dddS )Nr           r  g      @r  g      @r   r   rS  r   r   zvalue Already eXistsr   r   r  Tz#Plate weights inserted successfullyr   )rJ   r   r   r   r|  rF   r   rs   r   r   r   )rg   Z	platesArrZ
barbellArrZactiveUsersr  r  r   ZextigwtsidxZidx1wtr  rm   rm   rn   createPlateWeights  sD    


r  c              
   C   s  t  }|| }t| jd}d|kr>|d dkr>|d }ztjj|d |d d	 }|
 r4|D ]}t|}|d }qltjj|d	 }	|d kr|d }
tjj||
d		 }|
 rtjj|d
}|
|_|  ntjj|
|d}|  tdddW S tjj|d}|  tdd|jdW S ntdddW S W nD tk
r } z$td tdt|d W Y S d }~X Y nX d S )Nr{   campIdr   campaignSourcecampaignName)r  r  r   )campaign_id)r  r   r   )r   r  Tz"Campaign Details Saved Succesfullyr   Fr  )r   rk   r  zInvalid Campiagn Detailsr   r  )rP   rB  r   r   r   r   r7   r   r   r   r   r|  rH   r   r   r   r   r   r   r   r   r	   r   )rg   rC  ru   requestJsonZ
campaignIdZcheckUrlr  r  r  Z
campvaluesr   ZusercampValZ
updateCampZcampdetailsr   rm   rm   rn   getCampUrls8  sD    





r  c                 C   s   t jjdd}td|jdS )Nr   r   T)r   ZinrPrice)r\   r   r   r   r  )rg   r  rm   rm   rn   rupeeConversionc  s    r  c                 C   s   t j }|D ]}t|}|d }tjj|d }|r|j}tjj	|d}|j
dkr\d}n|j
dkrld}n|j
dkrzd}tjj|d }	|	r|	j}
tjj	|
d}||_|  qtdd	iS )
Nr   r   r  r   r   r   r   r   T)r9   r   r   r|  rJ   r   lastrW  r,   r   r  r<   r   r  r   r   )rg   ru  ru   r  r  ZuserPlanDetailsr  ZplanValZtrainerLevelZupdateFitnessValZ	fitnessIdZupdatefitnessrm   rm   rn   updateFitnessDetailsi  s*    




r  c                 C   sF   g }t jjddddd}|D ]}t|}|| q td|dS )Nr   rb  r   rX  Tr  )r,   r   r   r   r|  r   r   )rg   r  ZplanNameValr  r  rm   rm   rn   	planNames  s    r  c                 C   s   t | jd}g }g }t }tdd}d|d< |d dkrhd|d	  d
 |d  d }t|d n|d dkrd|d	  d
 |d  d }n|d dkrd|d	  d
 |d  d }n|d dkrd|d	  d
 |d  d }nh|d dkrd|d	  d
 |d  d |d  d }n0|d dkrJd|d	  d
 |d  d }nd}|| t	|}t|d t
|}|ddg |D ]L}	t|	}
||
d d|
d g ||
d d ||
d  qd|kr|d d kr|S td!||d"S )#Nr{   ztext/csv)content_typezattachment; filename="List.csv"zContent-Dispositionr  r  zi SELECT  updatedDate, COUNT(DISTINCT ID) AS NumUsers FROM  `Subscriber_user` WHERE updatedDate BETWEEN ' 	startDatez	 ' AND ' endDatezl ' GROUP BY CONCAT(MONTH(`updatedDate`), YEAR(`updatedDate`),DATE(`updatedDate`) ) ORDER BY updatedDate ASC z	---------r  zX ' GROUP BY CONCAT(MONTH(`updatedDate`), YEAR(`updatedDate`) ) ORDER BY updatedDate ASC rf  zp SELECT  updatedDate, COUNT(DISTINCT user_id) AS NumUsers FROM  `Userplan_userplan` WHERE updatedDate BETWEEN ' 45z ' AND plan_id = r  zj GROUP BY CONCAT(MONTH(`updatedDate`), YEAR(`updatedDate`),DATE(`updatedDate`) ) ORDER BY updatedDate ASC r  r   z----------------------zUpdated DatezNum of Usersrq  r  ZNumUsersZquerySet10T)r   dateArrr  )r   r   r   r   r   r  r   rs   r  r  csvwriterZwriterowr|  r}  r   r   )rg   r  r  ZcountArrr  re  r  r  r  r  r  rm   rm   rn   analyticsData  sB    
*


r  c              
   C   s^  t  }|| }|d }t| jd}|}d}z|d krddd tdD }t|}|d d	 t| }	t	
|	d
}
tjj|d dd}tjj|d d}| rtdddW S d|  krdksn d|  krd krRn n`| jd }d| d |
d }d}|d }|d |d}td|}t||| tdddW S | rltdddW S tjj|d |d |
dd}|  | jd }d| d |
d }d}|d }|d |d}td|}t||| tdddW S ntdddW S W nT tk
rX } z4td t|||t| td t|i W Y S d }~X Y nX d S )!Nr   r{   zsubscriber/celebInvites/r   c                 s   s   | ]}t d V  qdS r   r
   r   rm   rm   rn   r     s     zcelebInvites.<locals>.<genexpr>r  r|   r   r   r  r   r}   Tr!  r   r   r   r   r"  r#  r   r$  r%  r&  r'  )r   r|   r   r   r(  FrR  r   rl   r)  r*  rm   rm   rn   celebInvites  sf    

0





r  c                 C   s:   t | }|dd d d }|dd }td|dS )N?r   =Tr   )r   r   r   )rg   r  Z
requestValr
  rm   rm   rn   
fitbitauth  s    r  c              
   C   s   | j }t| z|d }|d krtjj|d}| rFtdddW S tjj|d}| rltdddW S t|d}|  tdd	dW S ntdd
dW S W n@ t	k
r } z"t
d tdt|i W Y S d }~X Y nX d S )Nr|   )news_letter_emailFzuser with this email existsr   r}   zuser with this Email ExistsTz your email is successfully savedzplease enter valid credentialsr   rl   )r   rs   rI   r   r   r   r   r9   r   r   r   r	   r   )rg   r   Zvemailru   Zuser1Z
news_emailr   rm   rm   rn   news_letter  s$    

r  )N)N)N)N)N)N)N)r   r   Zemail.mime.imager   Zdjango.shortcutsr   	django.dbr   r   django.db.modelsr   django.confr   r  loggingr	   randomr   r  urllib.parser   django.template.loaderr   rest_frameworkr   django.views.decorators.csrfr   django.contrib.authr   django.contrib.auth.hashersr   r   concurrent.futuresr   r   django.core.cacher   r   Zdjango.formsr   django.templater   r   r   Zpip._internal.req.req_installr   ImportErrorZpip.req.req_installdjango.core.exceptionsr   django.httpr   r   r   django.core.mailr   r    r!   Zrest_framework.decoratorsr"   r#   r$   Zrest_framework.responser%   Zrequests_oauthlibr&   r'   r(   Zsocial_django.utilsr)   r*   Zsocial_django.viewsr+   ZPlan.modelsr,   r-   r.   r/   r0   r1   r2   Program.modelsr  ZProgramPlanRatingZProgramDraftedPlanZProgramPlanVideosr   r!  StratFitr3   r   ZStratFit.settingsr4   r5   StratFitOrganization.modelsr6   r7   ZSubscriber.serializersr8   ZSubscriber.modelsr9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   ZUserplan.modelsrJ   rK   rL   rM   ZUserProgram.modelsr  ZProgramUserTestPlanZSubscriber.AuthenticationrN   rO   rP   rQ   rR   django.views.decorators.cacherS   rT   rU   rV   rW   Zdateutil.relativedeltarX   r  Zcampaign.modelsrY   Zutility.modelsrZ   r[   r\   r]   r^   email.mime.multipartr_   email.mime.textr`   Zutility.viewsra   django.utilsrb   Zdjango.contrib.gis.geoip2rc   rz   r   r   r  r  r  r  r8  r@  rD  r  r  r"  r+  r0  rB  rO  rS  rY  rZ  r_  rd  rg  r+  ry  r  r  r  r  ZAllowAnyr  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r  r  r  r,  r-  r.  r7  r8  r;  Zfacepyr<  r>  r?  rH  rK  rL  rM  r  r_  r`  ra  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rm   rm   rm   rn   <module>   s  $ L	 *

"
5
D

"

N n u>



&

`

/

"

:$

0

N



 @
  7
$
6
  D
  :
+





 $

Y



#



5





<

)
#

&

&

3




;







9

B

 F

2
B

?

v









P

 





L

=

%

($

>

