o
    &d8                    @   s	  d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZmZ d dlmZmZ d dlm	Z	 d dlmZ zd d	lmZ W n eyS   d d	lmZ Y nw d dlZd d
lmZmZmZ d dl
mZmZmZmZ d dlmZm Z  d dl!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6 d dl7m8Z8 d dl9m:Z:m;Z; d dl<m=Z=m>Z>m?Z?m@Z@mAZAmBZB d dlCmDZD d dlEmFZFmGZGmHZH d dlImJZJ d dlKmLZLmMZMmNZNmOZOmPZP d dlQmRZR d dlSmTZT d dlUmVZV d dlWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZc d dldmeZemfZfmgZgmhZh d dlimjZj d dlkZkd dllmmZm d dlnmoZompZp dd Zqdd  ZreFd!d"geGeMePfeRd#d$ ZseFd!d"geGeMePfeRd%d& ZteFd!d"geGeMePfeRd'd( ZueFd!d"geGeMePfeRd)d* ZveFd!d"geGeMePfeRd+d, ZweFd!d"geGeMePfeRd-d. Zxd/d0 ZyeFd!d"geGeMePfeRd1d2 ZzeFd!d"geGeMePfeRd3d4 Z{eFd!d"geGeMePfeRd5d6 Z|d7d8 Z}d9d: Z~eFd!d"geGeMePfeRd;d< ZeFd!d"geGeMePfeRd=d> ZeFd!d"geGeMePfeRd?d@ ZeFd!d"geGeMePfeRdAdB ZeFd!d"geGeMePfeRdCdD ZeFd!d"geGeMePfeRdEdF ZeFd!d"geGeMePfeRdGdH ZdIdJ ZeFd!d"geGeMePfeRdKdL ZeFd!d"geGeMePfeRdMdN ZeFd!d"geGeMePfeRdOdP ZeFd!d"geGeMePfeRdQdR ZeFd!d"geGeMePfeRdSdT ZeFd!d"geGeMePfeRdUdV ZeRdWdX ZeFd!d"geGeMePfeRdYdZ ZeFd!d"geGeMePfeRd[d\ ZeFd!d"geGeMePfeRd]d^ ZeFd!d"geGeMePfeRd_d` ZeFd!d"geGeMePfeRdadb ZeFd!d"geGeMePfeRdcdd ZeFd!d"geGeMePfeRdedf ZeFd!d"geGeMePfeRdgdh Zdidj Zdkdl ZeRdmdn ZeRdodp ZeFd!d"geGeMePfeRdqdr ZeFd!d"geGeMePfeRdsdt ZeFd!d"geGeMePfeRdudv ZeFd!d"geGeMePfeRdwdx ZeFd!d"geGeMePfeRdydz ZeFd!d"geGeMePfeRd{d| ZeFd!d"geGeMePfeRd}d~ ZeFd!d"geGeMePfeRdd ZeFd!d"geGeMePfeRdd Zdd Zdd Zdd ZeFd!d"geGeMePfeRdd Zdd ZeFd!d"geGeMePfeRdd ZeFd!d"geGeMePfeRdd ZeFd!d"geGeMePfeRdd ZeFd!d"geGeMePfeRdd ZeFd!d"geGeMePfeRdd ZeFd!d"geGeMePfeRdd ZeFd!d"geGeMePfeRdd Zdd ZeFd!d"geGeMePfeRdd ZdS )    N)
connection)EmailMultiAlternatives)model_to_dict)render)FCount)JsonResponseHttpResponse)render_to_string)logger)datetime	timedeltatime)MaxMinAvgQ)CelebrityPlansLikesCelebrityUploads)Plan
PlanVideosPlanPeriodsPlanMesocycle
MicrocyclePlanSessionPlanExcercisePlanSets
PlanRatingPlanProtocolDraftedPlan	PlanGoalsSelectedAbilitiesPlanCountryPlanCommentsPlanShortUrlsCoachCountryCategoryLevelPlanExCommentsMetabolicValues
PlanExTmax)settings)S3URLPAGING_ROWS)UserFitnessProfiletrainerProfile
UserfollowUserAddressgoals)AuthResponseSerializer)api_viewauthentication_classespermission_classes)Response)StartFitAuthenticationSessionAuthenticationStartFitSessionUtilAuthResponseIsAuthenticated)never_cache)dictfetchall)PlanMonetization)GoalsProgramTypeVideosExercisePlanPurposesPlanAbilitiesPriceMappingPriceConversionCountry
TmaxLookup
AppVersionAdvExercises)UserPlanUserSetsUserTestPlanUserExercise)
officeMail)GeoIP2)cachescachec                 C   s   t jddd}t }|D ]}t|}||d  qt| |D ]8}t jj|d}tt|d  t|d dkrFtd d|_	|
  q!t|d dkrYtd	 d|_	|
  q!td
ddS )NexerciseNameidsessionpk   r   ZinHEre   znot In hereTzDetails Saved Successfullysuccessmessage)r   objectsvaluessetdictaddprintgetintexerciseName_idsaver   )requestuserplanpagedatadtdataObjvalZidupdate rn   rC:\Users\DELL\Desktop\soubhikg1894-stratfit-d75d91182fa3\soubhikg1894-stratfit-d75d91182fa3\services\Plan\views.py
createEXID.   s&   
rp   c                 C   sT   t | jd jd | jd }t |d tjj|d}| jd |_|  t	ddiS )NZmyfilez-------name--------plan_idz--------------jdjs-----------rU   r\   T)
rc   FILESnamerV   r   r^   rd   	planPhotorg   r   )rh   planIdZplanpicrn   rn   ro   uploadphotoC   s   

rw   GETPOSTc                 C   s  t  }z|| }|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}tjj|ddddd}|	 r|D ]f}t
|}|d dksT|d dkrxtjj|d d}t|d	 d tt|jd t|j  d |d	< n#tjj|d d}	t|d	 d tt|	jd t|	j  d |d	< |d dkrd}
qB|d }
qBnd }
g }g }|D ]}t
|}|| q	 td|||
dW S td d!d"W S  ty } ztd# td$t|iW  Y d }~S d }~ww )%NrU   	Goals__idProgramType__idUser__idrZ   
planStatusplanNameplanGoal__goalNameplanDescriptionprogramType__programTypeNameabilitycreatedBy_id__avatarcreatedBy_idduration_weeksplanLogolicencePolicyoriginalPlanner_idru   user_idstatusrq   r   3White-Labelrr   <br><h6>Copyright &copy; 2017  . All rights reserved.</h6>rY    T)r\   detailsZvideosLinksZ
ActivePlanFUser logged outr[   something wrongmsg)r:   get_user_insessionr   r^   select_relatedfilterr_   order_byrL   existsra   r-   rd   str
first_name	last_nameappendr   	Exceptionr   	exception)rh   stratsessionutilusernameuserplanDetailsuserplanDetailsrj   rk   partnerName	coachNameZplanidsdataArrZdataArr1rl   ern   rn   ro   r   O   sj   




r   c           
   
   C   sf  t  }z|| }t| jd}|d krtjddj	|d d
ddddd	d
dd}|D ]Y}t|}|d
 dksA|d
 dkretjj|d d}t|d d tt|jd t|j  d |d< q/tjj|d d}t|d d tt|jd t|j  d |d< q/td|dW S W d S  ty }	 ztd tdt|	iW  Y d }	~	S d }	~	ww )Nutf-8rz   r{   rU   rW   r   r   r   r   r   r   r   r   r   rr   r   r   r   Tr\   r   r   r   )r:   r   jsonloadsbodydecoder   r^   r   r   r_   ra   r-   rd   r   r   r   r   r   r   r   )
rh   r   r   planInfor   rk   rl   r   r   r   rn   rn   ro   individualPlanDetails   sV   




r   c           2      C   s  t  }z|| }|d kr|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}g }g }|D ]}t|}|d d t|d  }	t	
|	d}
t|
d}|d |d< |d dksp|d dkrtjj|d d }t|d d! tt|jd" t|j  d# |d< n#tjj|d d }t|d d! tt|jd" t|j  d# |d< tjd$j|d d%d&}d'}|D ]}t|}|d(|d&  7 }q|d'kr|dd  }nd'}tjd)j|d d%d*}d'}|D ]}t|}|d(|d*  d" 7 }q|d'kr|dd  }nd'}tjj|d d%d+  }tjj|d d, }d-}d}|D ]}t|}||d.  }|d }q9|| }||d  ||d< ||d
< |d |d/< |d |d0< d1|d2< |d	 |d3< ||d4< ||d5< |d |d6< |d
 |d7< |d |d8< |d0 d9krd:|d;< d<|d0< n|d0 d=krd>|d;< n|d0 d?krd@|d;< |d d urtj|d  |d< |d |dA< |d |d6< 	 || q<tjdBdCdD}g }|D ]}t|} dE| dF< ||  qtjj|dG }!g }"|!D ]}#t|#}$tjj|$d ddH }%|%|$dI< tjj|$d dJ }&|&D ]}'t|'}(q'|$dK d ur;d'|$dL< nd'|$dL< |#d |$d6< |#dM d" |#dN  |$dO< g })tjj|$d dPd}*|*D ]}+t|+},|)|,d  qa|)|$dQ< tjj|$d dJ }-|- r|-D ]}.t|.}/|/dR dSkrdT|$dU< qdV|$dU< qndT|$dU< |"|$ tjj|d }0qtdW|||"|0j dXW S tdYdZd[W S  t!y }1 zt"#d\ td]t|1iW  Y d }1~1S d }1~1ww )^NrU   rz   r{   r|   rZ   )r~   activationStatusr   ru   pricer   r   r   programType__idr   r   r   r   createdBy_id__first_nameoriginalPlannerr   r   r   	createdByiosPrice	iosStatus#ascii'
encodedurlr   r   rr   r   r   r   rE   rq   ability_id__abilityr   , rD   planGoal_id__GoalNamer   planr   ratingplanPurposeplanType0planCompetency	planPrice	planUsersr   coachIdplanGoal	planLevelSTARTERSptypeBEGINNERINTERMEDIATEIADVANCEDAplanDuration
Videos__idvideo__videoLinkrq   QR77PiSkDgA	videolinkid__infollowerUser_idr   	followersr   avatarcoachThumbnailr   r   r   r   
coachPlanscountryX   IndiacoachLocationInternationalT)r\   r   rB   
allCoachesluctypeFr   r[   r   r   )$r:   r   r   r^   r   r   r_   ra   r   base64	b64encodeencodesplitr-   rd   r   r   r!   r    rL   distinctcountr   r   r*   r+   r   r0   r/   r1   r   r   currencyTyper   r   r   )2rh   r   r   useridr   planArrplanCoachesrk   rl   secret_code_plainsecret_code_encode
encodedValr   r   planAbilityVal	abilitiesrm   valObjplanAbilitiesplanPurposesValpurposes	planGoalsdownloadUsers	ratingObj	totalRate	userCountrtrateObjr   
planVideosplanVideoArrvideovideoscoachDetailscoachArrcoachcoach_id	followCnttrainerstrtrainercoachPlansArrplansplr   userAddressuauAddruserCurrencyr   rn   rn   ro   	planLists   s0  






 







r  c           	   
   C   s  t  }|| }z^|d kr_t| jd}tjj|d d	ddddd}|D ]/}t
| t|}|d d	krWtjd
ddj|d d }t
| tdd	|d  W S q(tddiW S tdddW S  ty } ztd tdt|iW  Y d }~S d }~ww )Nr   planidr   rq   num_of_mesocyclesr   rU   
periodName	In-SeasonZPlanMesocylcer   r   ) mesocycle_id__period_id__plan_idT)r\   r]   ZmcCountr\   Fr   r[   r   r   )r:   r   r   r   r   r   r   r^   r   r_   rc   ra   r   r   r   r   r   r   r   r   )	rh   r   r   r   Zseasonrk   Z	seasonObjZmicrocycleCountr   rn   rn   ro   checkInSeason>  s6   

r   c           s      C   sL  t  }z|| }t| jd}t| |d k
r|d }tjj	|d}t
jj	dd}|j}g }g }	d}
tjdjd|d }| rY|D ]}t|}|d	 |d
< qJd}
tjjdd }|D ]}t|}||d  qdtjtdd  }|D ]}t|}|	|d  q|
dkrd|v r|d dkrd|v r|d dkrt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*j|d ddd|d+d,d}nt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*j|d dd|d-d,d}nd.|v r|d. dkrd|v rV|d dkrVt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*j|d. ddd|d/d,d}nJt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*j|d. dd|d0d,d}nd1|v r|d1 dkrtjj|d1 d }|D ]}t|}t| |d }qd|v r|d dkrt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*j|ddd|d+d,d}nt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*j|dd|d-d,d}nd|v r|d dkrd|v re|d dkret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*j|d ddd|	d+d,d}n;t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*j|d dd|	d-d,d}n
d.|v r|d. dkrd|v r|d dkrt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*j|d. ddd|	d/d,d}nt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*j|d. dd|	d0d,d}nd1|v r|d1 dkrtjj|d1 d }|D ]}t|}t| |d }q(d|v rs|d dkrst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*j|ddd|	d+d,d}n-t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*j|dd|	d-d,d}g }g }g }d2}tjj|d3jdd4gd5d6dd7}| r|D ]}t|}|d7 d8|d7< || q|D ]F}t|} tjj| d d9 }!|! r|!D ]$}"t|"}#|#d: d;}$|$d< d=}%|%d d>}&|#d? | |&d2 < q| d d@ t| d  }'t|'dA}(t|(dB})|)d | dC< tjj| d dD }*|* rY|*D ]}+t|+},qJ|,dE | dE< ndF| dE< t | d }-t!| d }.|-| dG< |.| dH< t"jj| d ddI# }/t"jj| d d9j$ddJj$ddK# }0|/| dL< |0| dM< d2| dN< d2| dO< d| dP< t"jj| d |d ddQ }1|1 rd| dN< t"jj| d |d dR }2|2 r|2D ]}3t|3}4|4dP dkr|4dP d kr|4dP | dP< d| dO< q| d dS | d   | dT< | d dS | d   | d< | d | dU< d|v r|d dkr|j%dVkrZtjjdddW& 't(d%dX }5|d
 dkrF| d' | d< | d | dU< n| d% | d< t)| d d2krYdY| d< ntjjdddW& 't(d%dX }6t*jj	|6dZ}7|7j+}5|d
 dkrt*j j| d' dZ}8nt*j j| d% dZ}8|8D ]}9t|9}:|:d[ };q|;| d< t)| d d2krdY| d< nnt)| d d2krdY| d< n`|j%dVkr|d
 dkrt,| d( t-| | d< | d | dU< n3t,| d t-| | d< | d | dU< n |d
 dkr| d( | d< | d | dU< n| d | d< | d | dU< t-| d d2kr!dY| d< t.jd\j| d d9d]}<d}=|<D ]}"t|"}#|=d^|#d]  7 }=q4|=dkrP|=dd  }>nd}>t/jd_j| d d9d`}?d}@|?D ]}"t|"}#|@d^|#d`  7 }@qe|@dkr|@dd  }And}A| d# | d krtjj	| d# d}B|Bj0}C|C| da< | d db t|> dc dd t|A dc | d< | d$ deks| d$ dfkrtjj	| d d}Dt| d dg tt|Dj0dS t|Dj1  dh | d< nA| d# | d krtjj	| d# d}B|Bj0dS |Bj1 }C|C| da< tjj	| d# d}Ct| d dg tt|Cj0dS t|Cj1  dh | d< tjj| d d9di2 # }Et3jj| d dj }Fd2}Gd}H|FD ]}It|I}J|G|Jdk  }G|Hd }HqF|G|H }K|| d  |>| dl< |A| dm< | d | dn< do| dp< |E| dq< |t)|E }|K| dr< | d | ds< | d | dt< | d | du< | dn dvkrdw| dx< dy| dn< n| dn dzkrd{| dn< d|| dx< n| dn d}krd~| dn< d| dx< | d d urt4j5| d  | d< | d" d urt4j5| d"  | d"< | d | d< | d | ds< t6jdj| d djdddd2 }Lg }M|LD ]}Nt|N}O|M|O q|M| d< 	 ||  qt7jddd}Pg }Q|PD ]}Rt|R}Sd|Sd< |Q|S q/tjj|d }Tg }U|TD ]}Vt|V}Wt8jj|Wd dd# }X|X|Wd< tjj|Wd dD }Y|YD ]}+t|+}Zqp|Wd d ur|Wd |Wd< nd|Wd< |Vd |Wds< |Vd dS |Vd  |WdT< g }[tjj|Wd dd}\|\D ]}]t|]}^|[|^d  q|[|Wd< tjj|Wd dD }_|_ r|_D ]}`t|`}a|ad	 dkrd|Wd< qd|Wd< qnd|Wd< |U|W qMt|U t9jdj|dDdddddddddd
}bd}ci }di }ei }fg }gd}hd}id}j|b 	rGd}c|bD ]}t|}e|ed d k	rE|ed |ed< |ed d|ed< 	q)t:jj|d3 }kd}l|k 	rgd}l|kD ]}t| t|}d	q[t;jj|d3dddddddddddiddd}m|m 	rd}i|mD ]}t| t|}f|g|f 	qtjj|d3jdd4gd5 }n|n 	rd}jd}ht<jj	dd}ot<jj	dd}ptjj	|d}qt=i ddd|d|Qd|Ud|d|j%d|j>d|j?d|d|ed|dd|gd|cd|ld|hd|id|d i d|d d|d d|d d|d d|d d|d d|d di|d d|d d|d d|jd|d d|d d|d d|d d|d d|oj@|pj@dddddd֜dddddd֜dddddd֜dddddd֜dddddd֜dddddd֜dddddd֜dddddd֜dd2dddd֜dddddd֜g
ddiddiddiddiddiddiddiddiddig	dddddd<dddddddd4ddddddgdddddddddd4dddd4dddd4ddddddddddgddW S t=dddW S  tAy% }r ztBCd t=dt|riW  Y d }r~rS d }r~rww )Nr   rU   rr   rZ   Fr|   r   r   r   r   userCountryT
country_idrq   coachidr   
deviceTypeiosrz   r{   r   ru   r   r   r   r   r   r   r   r   r   r   createdBy_id__last_namer~   r   r   r   r   r   indianIosPriceindianPricecreatedBy_id__userCovernum_of_sessionsr   r~   r   r   r   programType_id)r   r~   r   r   Zpname)planName__icontainsr~   r   r   r   )r/  r~   r   r   r  r   r      )
status__inr   nextRenewalDatez%Y-%m-%dr   longUrl/   =&shortUrlr   r   r   r   r   aboutTrainerTrainer Content Unavailable	planlikesplanreviewsrq   r   Zreviews__isnullZreviews__exactplanlikesCountreviewsCountceleblikedPlancelebreviewPlanreviewsrq   r   r   rq   r   r   r   r   INRr   r~   iosPrice__maxFreeinrusdrE   r   r   rD   r   oriCoachName <br><br><font><b>Abilities:</b> </font><br><br><font><b>Purposes:</b> r   r   r   r   r   r   r   r   
plan_goalsr   r   r   r   r   r   r   r   r   r   r   Beginnerr   Intermediater   r   Advancedr   r   rC   exercise_idexercise_id__exerciseNameexercise_id__exerciseDescexercise_id__equipment	exercisesr   r   r   r   r   r   r   	userCoverr   r   r   r   r   S   r   r   r   genderdobheight
heightUnitweight
weightUnituser_id__iduser_id__emailuser_id__first_nametrainingLeveldob1z%Y/%m/%dcreatedDateexerciseId_idexerciseId_id__exerciseNamerT   tmax
updateTmax
updateTypeupdatedDateuserplan_id
workWeightworkoutTestDaterY   rW   r\   r   rB   r   
totalcountr   userTypeuserIdr  profiler2   isProfileSet	isGoalSet	isPlanSet	isTmaxSetcodesessiontokenuserDetailsemailr   fnamelnameis_superuser	is_activer   otpisFreeTrailphoner   	phonecode	phoneCode
coverImageandroidVersionHip Circles   Not ApplicableBothNameRepsExTime	Direction	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 underrt   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   Setsr  	intensity<      F   P   Z   strength	explosive)
iosVersiongeneralWarmupCooldownexerciseWarmupr   r[   r   r   )Dr:   r   r   r   r   r   rc   r-   r^   rd   rG   inrValuer1   r   r   r_   r   ra   r"   r   r   r   r   rL   strftimer$   r   r   r   r   r   r/   
celeblikescelebreviewListr   r   excluder   all	aggregater   re   rF   rN  roundfloatr!   r    r   r   r   r   r*   r+   r   r   r0   r.   r2   rN   rJ   r   rt  rU   versionr   r   r   )srh   r   r   	coachInfor   r  currencyValuesr  indianPlanArrotherPlanArrindia	countryIDconconObjindianPlansinpinpObj
otherPlansr  otpObjr   ZgetCoachObjcocoachObjZcoachIDr   
planValArrr   totalusercount	updetailsrk   planObjrl   planurlsrm   r   urlValurlVal1urlVal2r   r   r   trainerDetailsr  trObjclelebLikescelebReviewsplalikescountreviewscountcelebplanlikescelebplanreviewscelbdtcelbObjhighestPricehighestPriceVal
highestValusdValuerN  usdObj	dollarValr   abilitieslistsr   r   r   r   coachValr   r   r  r  r  r  r  r  r   exercisesObjplanExsexexObjr  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r   r  r  r  fitProQuerySetrw  dataGoalObj
dataFitObjdataTmaxObjtmaxArrry  rz  r  goalDetailsrx  tmaxDetailsPlanDetailsandroidversion
iosversionorgIdr   rn   rn   ro   individualuserplansY  s  


	
	
		
	
	











 

(






		




1
r   c           9      C   s  t  }z|| }t| jd}|d krtj j	|d d}g }g }g }g }g }	g }
g }i }d}|D ]}t
|}tjdj	|d dd}d	}|D ]}t
|}|d
|d  7 }qQ|d	krk|dd  }nd	}tjdj	|d dd}d	}|D ]}t
|}|d
|d  7 }q|d	kr|dd  }nd	}||d< ||d< d}tjj	|d dddddd}|D ]}d}t
|}|d }|d }t||d< tjj	|d ddddd}|D ]}d}t
|} |d }|d }dt|d  | d< t|d t| | d< tjj	| d dddddd}!|!D ]c}"d}#t
|"}$|d }|d }t|d t| d t| |$d< d t|d  |$d!< tjj	|$d d"d#ddd$d%d&}%|%D ]}&d}'t
|&}(|d }|#d }#t|d t| d t| d t|# |(d< d't|#d  |(d(< tjd)j	|(d d*d+d,ddd-d%d.d/d0d1d2})|)D ]}*d}+t
|*},|d }||,d/  |,d0 d ur|,d0 d	kr|,d0 d3kr||,d0  |'d }'t|d t| d t| d t|# d t|' |,d< |,d+ |,d4< tjj	|,d d5d6ddd7d%d2}-|-D ]B}.t
|.}/|d }|+d }+t|d t| d t| d t|# d t|' d t|+ |/d< d8t|+d  |/d9< |
|/ q|,|
d:}0|	|0 g }
q|(|	d;}1||1 g }	qY|$|d<}2||2 g }q| |d=}3||3 g }q||d>}4||4 g }qtjj	|d? }5g }6|5D ]}7t
|7},|6|, q||6|d@}q7tdA|iW S tdBdCdDW S  ty }8 ztdE tdFt|8iW  Y d }8~8S d }8~8ww )GNr   rq   rr   r   rE   rU   r   r   r   r   rZ   rD   r   r2   r   r  r   r  path	period_idnum_of_microcyclesr  	MesoCycle	meso_name-mesocycle_idno_of_sessions	totalInolr
  dayOff
MicroCycle
micro_namemicrocycle_idno_of_excersicesr  restTimerepeatSession	sess_nameExercise__id
session_idexerciseName__exerciseNamenum_of_setsr  r  rf   transitExercise_idtransitLeveladvExerciseNULLEx_nameexcercise_idnum_of_reps	excerciser`   set_nameExerciseInfo
setDetailsSessionInfoexerciseDetailsMicrocycleInfoSessionDetailsMesocycleInfoMicrocycleDetails
PeriodInfoMesocycleDetailsr   )PlanInfo	ExercisesPeriodDetailsr   Fr   r[   r   r   )r:   r   r   r   r   r   r   r^   r_   r   ra   r!   r   r    r   r   r   r   r   r   r   r   rC   r   r   r   r   )9rh   r   r   r   r   dataPeriodArrdataMesoArrdataMicroArrdataSessArr	dataExArr
dataSetArrexercisesListdataPlanDictr   rk   dataPlanObjr   r  rm   r   r   r   r   r   periodCountperiodDetailsdt1	mesoCountdataPeriodObjmesocycleDetailsdt2
microCountdataMesoObjmicrocycleDetailsdt3sessionCountdataMicroObjsessionDetailsdt4excersiceCountdataSessObjexcersiceDetailsdt5setCount	dataExObjr(  dt6rl   
dataExDictdataSessDictdataMicroDictdataMesoDictdataPeriodDictallExecDetailsPlanExercisesdt7r   rn   rn   ro   viewPlanf  s\  






$











r_  c           0      C   s  t jddddj|d}g }g }g }g }g }g }g }	i }
i }i }d }d}|D ]?}t|}d}tjj|d dd	d
ddd}|D ]}d}t|}|d }|d }t||d< tjj|d ddddd}|D ]}d}t|}|d }|d }dt|d  |d< t|d t| |d< |d ur||
|d < tjj|d dddddd}|D ]i}d}t|}|d }|d }t|d t| d t| |d< dt|d  |d< |d ur|||d < t	jj|d ddddddd}|D ]}d} t|}|d }|d }t|d t| d t| d t| |d< d t|d  |d!< t
jd"j|d d#d$d%ddd&dd'd(d)d*
}!|!D ]}"d}#t|"}$|d }|	|$d(  |$d) d urs|$d) d+krs|$d) d,krs|	|$d)  | d } t|d t| d t| d t| d t|  |$d< |$d$ |$d-< tjj|$d d.d/ddd0d}%|%D ]B}&t|&}'|d }|#d }#t|d t| d t| d t| d t|  d t|# |'d< d1t|#d  |'d2< ||' q|$|d3}(||( g }qD||d4})||) g }q||d5}*||* g }q||d6}+||+ g }qj||d7},||, g }qBtjj|	d8d9d:dd;d<d=d>d?d@dA
}-g }.||
|d < |||d < |-D ]}/t|/}$|.|$ qU|
|dB}q'|S )CNnum_of_periodsr   rU   r   rr   r   r  r   rq   r  r  rZ   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  rf   r  r  r   r  r   r!  r#  r$  r`   r%  r&  r)  r,  r/  r2  r   exerciseStatusrT   	equipmentderivedFormulaworkFormuladerivedFromexerciseDescexerciseCodevideo_id__videoLink)lastMeso	lastMicro)r   r^   r_   r   ra   r   r   r   r   r   r   r   r   r   rC   )0rh   planIDr   r8  r9  r:  r;  r<  r=  r>  ZlastMesoSessZlastMicroSessr?  rQ  r   rk   r@  rA  rB  rC  rD  rE  rF  rG  rH  rI  rJ  rK  rL  rM  rN  rO  rP  rR  rS  rT  rU  r(  rV  rl   rW  rX  rY  rZ  r[  r\  r]  r^  rn   rn   ro   
getPlanArr  s8  



$










rl  c           J      C   s	  t  }z|| }|d }tjj|djdd }| r|D ]}t|}q"|d krtjdddddd	j|d
 d}g }g }	g }
g }g }g }g }i }d}t	| |d
 }t
| tjj|d
 dd
ddd}g }d}| r|D ]}t|}t|d dd|d< || qu|D ]}t|}|d d urtj|d  |d< d|d< d|d< d}tjj|d dd
ddddd}|D ]}d}t|}|d }|d }t||d< tjj|d dddddd}|D ]}d}t|} |d }|d }dt|d  | d< t|d  t| | d< tjj| d d!d"d#dd$d%d}!|!D ]d}"t|"}#|d }|d }t|d  t| d  t| |#d< d&t|d  |#d'< tjj|#d d(d)d#dd*d+d,d}$|$D ]}%d}&t|%}'|d }|d }t|d  t| d  t| d  t| |'d< d-t|d  |'d.< tjd/j|'d d0d1d2d#dd3d+d4d5d6d7d8d9d:d}(|(D ]W})d}*t|)}+|d }||+d6  |+d7 d ur|+d7 d;kr|+d7 d<kr||+d7  |&d }&t|d  t| d  t| d  t| d  t|& |+d< |+d1 |+d=< tjj|+d d>d?d@dAd#ddBd+dCd},|,D ]}-t|-}|d }|*d }*t|d  t| d  t| d  t| d  t|& d  t|* |d< dDt|*d  |dE< |d |dF v rdG|dH< d|dI< d|dJ< n|d |dK v rdG|dH< d|dL< d|dJ< ndM|dH< d|dJ< tjj|d
 djdNgdO }.|dC dkrdG|dH< |. r|.D ]}t|}/t
|/ |/d }0q|0|dP< || q0tjj|d
 djdQgdO }1i }2|1 r
|1D ]}t|}3|3d }4qdP|4i}2|4|+dP< |+|2|dR}5||5 g }qtjj|d
 djdSgdO }6i }7|6 rF|6D ]}t|}8|8d }9q2dP|9i}7|9|'dP< |'|7|dT}:||: g }qmtjj|d
 djdUdVgdO };i }<|; r|;D ]}t|}=|=d }>qodP|>i}<|>|#dP< |#|<|dW}?|
|? g }q,tjj|d
 djddXgdO }@i }A|@ r|@D ]}t|}B|Bd }CqdP|Ci}A|C| dP< | |A|
dY}D|	|D g }
q||	dZ}E||E g }	qtjj|d[ }Fg }G|FD ]}Ht|H}+|G|+ q||G||d\d]d^d_d^d`dadbd^d_d^d`dcdbd^d^d^d`dddbd^d^d^d`dedbd^dfd^d`dgdNd^d^dhd`didNd^djdhd`dkdNd^djdhd`dlddmdndod`dpdbd^d^d^d`g
dqdridqdsidqdtidqduidqdvidqdwidqdxidqdyidqdzig	ddbd{d|ddSd}d|ddVd~d|ddXdd|dddd|gdd]d{d|dd]d{d|ddXd}d|ddXd}d|ddXd~d|dddd|dddd|gdd}qtd|iW S tdMddW S tdMddW S  ty }I ztd tdt|IiW  Y d }I~IS d }I~Iww )NrU   r0  rZ   r   r`  r   r   ru   r   rq   rr   r   r   protocol_idr_   rW  r  r   "ztxEOSIcMc4genWarmupVideo2esZzqjO5CccooldownVideor  r  r  r  r  r  r  r  r  r	  r  r  r
  r  r  r  r  r  r  r  r  Session r  r  r  r  r  r  r  intensityRangerf   r  r  warmup
warmupTyper   r  r   r!  r#  	repsRangerepsRangeAbsr$  
allOutStatr`   r%  	macroSetsTalloutr   desigProtocolID	microSets4Fr  protocol_id__inprotoccolID	   r'  protocolr(  r6  r*  r  r+  rY   r  r-  r  r.  r1  r0  r  r1  r2  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rt   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r5  r6  	Protocolsr7  r  r  r  r   zNo Plan Subscribedr[   r   r   r   ) r:   r   rL   r^   r   r_   r   ra   r   
lastSetIdsrc   r   r   r   replacer   r*   r+   r   r   r   r   r   r   r   r   r   rC   r   r   r   r   )Jrh   r   r   userIDr  rk   r   r   r8  r9  r:  r;  r<  r=  r>  r?  r   
lastSetIDsprotocolDetailsprotocolJSONrL  dt12rl   r@  rA  rB  rC  rD  rE  rF  rG  rH  rI  rJ  rK  rM  rN  rO  rP  rQ  rR  rS  rT  rU  r(  rV  setProtocol
datasetObjsetProtocolIDexerProtocolexerProtocolJSONprotoExerObjexerProtocolIDrW  sessProtocolsessProtocolJSONprotosessObjsessProtocolIDrX  microProtocolmicroProtocolJSONprotoMicroObjmicroProtocolIDrY  mesoProtocolmesoProtocolJSONprotoMesoObjmesoProtocolIDrZ  r[  r\  r]  r^  r   rn   rn   ro   
createJsonp  s  








$



























)
r  c           _      C   s~  t  }z|| }|d }|d krtjj|djdd }| r|D ]}t|}q'|d }|d }tj j|d}	tj	dj|dd}
|
D ]
}t|}|d }qNtjj|d	 }t
|}g }g }g }g }g }g }g }i }d
}t| |}t| tjj|d	dddd}g }d}| r|D ]}t|}t|d dd|d< || q|	D ]}t|}|d d urtj|d  |d< d|d< d|d< d|d< d|d< ||d< ||d< d} tj j|dd}!d }"|	 r|!D ]
}#t|#}$|$d }"qtjj|d d	dddddd}%|%D ][}&d}'t|&}(|d }| d } t| |(d < tjj|(d d!d"ddd#d})|)D ]"}*d}+t|*},|d }|'d }'d$t|'d  |,d%< t| d& t|' |,d < tjj|,d d'd(d)dd*d+d}-|-D ]}.t|.}/|d }|+d }+t| d& t|' d& t|+ |/d < d,t|+d  |/d-< tjj|/d d.d/d)dd0d1d2d}0|0D ]+}1d}2t|1}3|d }|d }t| d& t|' d& t|+ d& t| |3d < d3t|d  |3d4< tj	d5j|3d d6d7d8d9d:d)dd;d1d<d=d>d?d@dAdBdCdDd}4|4D ]}5d}6t|5}7|d }||7d>  |7d? d urE|7d? dEkrE|7d? dFkrE||7d?  |2d }2t| d& t|' d& t|+ d& t| d& t|2 |7d < |7d7 |7dG< tjj|7d dHd9dIdJd)ddKd1dLd}8|8D ]}9t|9}|d }|6d }6t| d& t|' d& t|+ d& t| d& t|2 d& t|6 |d < dMt|6d  |dN< |d |dO v rd|dP< d|dQ< d
|dR< n|d |dS v rd|dP< d|dT< d
|dR< nd|dP< d
|dR< tjj|d d	jdUgdV }:|dL dkrd|dP< |: r+|:D ]}t|};t|; |;d }<q|<|dW< |"d urltjj|"|d dX }=|= rh|=D ]}>t|>}?qCd|dY< |?dZ |dZ< |?d[ |d\< |?d] |d^< |?d_ |d_< nd|dY< || qtjj|d d	jd`gdV }@i }A|@ r|@D ]}t|}B|Bd }CqdW|Ci}A|C|7dW< |7|A|da}D||D g }qtjj|d d	jdbgdV }Ei }F|E r|ED ]}t|}G|Gd }HqdW|Hi}F|H|3dW< |3|F|dc}I||I g }qtjj|d d	jdddegdV }Ji }K|J r|JD ]}t|}L|Ld }MqdW|Mi}K|M|/dW< |/|K|df}N||N g }q}tjj|d d	jddggdV }Oi }P|O rV|OD ]}t|}Q|Qd }RqBdW|Ri}P|R|,dW< |,|P|dh}S||S g }qA|(|di}T||T g }qd}Ud}Vtjj|djdkdlddmdndodpdqdrds
}Wg }X|WD ] }Yt|Y}7dt|7dl v rd}Un	du|7dl v rd}V	 |X|7 qg }Z|Zd |Zdd tjj|Zdjdkdlddmdndodpdqdrds
}[|[D ]}\t|\}]|X|] q||X||dvdwdxdydxdzd{d|dxdydxdzd}d|dxdxdxdzd~d|dxdxdxdzdd|dxddxdzddUdxdxddzddUdxdddzddUdxdddzdd
ddddzdd|dxdxdxdzg
ddiddiddiddiddiddiddiddiddig	dd|ddddbddddeddddgddddddgddwddddwddddgddddgddddgddddddddddgdd}qtd|iW S tdddW S tdddW S  ty }^ zt !d tdt|^iW  Y d }^~^S d }^~^ww )NrU   r0  rZ   rm  rq   rr   r-   r   r   r   rn  r_   rW  r  r   ro  ru   rp  rq  rr  rs  F	autoRenewTemailTriggercreatedBy__first_namer   r   r  r   r  r  r  r  r  r  r  r  r	  r  r  r
  r  r  r  r  r  r  r  r  rt  r  r  r  r  r  r#  	extra_setr  r  ru  rf   r  r  rv  rw  specificInstructionr   r   r  r   r!  rx  ry  r$  rz  r`   r%  r{  r|  r   r}  r~  r  r  r  r  )rp  
planset_idsetDonesetDatesetWorkWeight
WorkWeight	totalRepsrepsDonesetIntensityr  r  r6  r  rY   r  r  r1  r  r2  r   ra  rT   rb  rc  rd  re  rf  rg  rh  zBench PresszPower Lifting Squatr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rt   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   No Program Subscribedr[   r   r   r   )"r:   r   rL   r^   r   r_   r   ra   r   r   lenr  rc   r   r   r   r  r   r*   r+   r   r   r   r   r   r   r   r   rM   rC   r   r   r   r   )_rh   r   r   r  r  rk   r   rk  r   r   r  r  r  r   Z
usersCountdownloadusersr8  r9  r:  r;  r<  r=  r>  r?  r   r  r  r  rL  r  rl   r@  rA  userPlanDetails
userPlanIDupdtuserPlanObjrB  rC  rD  rE  rF  rG  rH  rI  rJ  rK  rM  rN  rO  rP  rQ  rR  rS  rT  rU  r(  rV  r  r  r  userSetDetailsusdt
userSetObjr  r  r  r  rW  r  r  r  r  rX  r  r  r  r  rY  r  r  r  r  rZ  r[  bpsqr\  r]  r^  
baseExListbpValbp1bpObjr   rn   rn   ro   completePlanJsonk  s  












$


	




























)
r  c           s      C   sr  t  }z|| }|d }|d kr|d }tjjdd}|j}t| jdd | jddkr<t	
| jd}ni }|d }tjj|d}	tjj|djdd	 }
t|
d
kritjj|djdd	 }
|
 r	|
D ]}t|}qp|d }|d }tjj|d }tjj|dd  }tjdj|dddd}|D ]}t|}|d }|d }qg }g }g }g }g }g }i }i }g }i }d
}t| |} t|  tjj|ddddd}!g }"d}#|! r|!D ] }$t|$}%t	
|%d dd|%d< |"|% |%d ||%d < qg }&|D ]}t|}'tjdj|'d dd}(d})|(D ]}*t|*}+|)d|+d  7 })q,|)dkrH|)dd  },nd},tjdj|'d dd}-d}.|-D ]}*t|*}+|.d|+d  7 }.q]|.dkry|.dd  }/nd}/|/|'d< |,|'d< |/|'d < |,|'d!< |'d" d urtj|'d"  |'d"< d#|'d$< d%|'d&< d'|'d(< d)|'d*< ||'d+< ||'d< ||'d,< |dkrMd-|v rM|d- d.krM|	jd/kr|d0 d1kr|'d2 |'d3< |'d3 |'d4< |'d2 |'d5< n|'d5 |'d3< |'d3 |'d4< t|'d3 d
krd6|'d3< n|d0 d1krt j j|'d2 d7}0nt j j|'d5 d7}0|0D ]}1t|1}2|2d8 }3q"|3|'d3< |d0 d1kr?|'d2 |'d5< t|'d3 d
krLd6|'d3< nbt|'d3 d
kr[d6|'d3< nT|	jd/kr|d0 d1kru|'d9 |'d3< |'d3 |'d4< n-|'d3 |'d3< |'d3 |'d4< n |d0 d1kr|'d9 |'d3< |'d3 |'d4< n|'d3 |'d3< |'d3 |'d4< t!|'d3 d
krd6|'d3< d}4tj j|dd:}5d }6| r|5D ]}7t|7}8|8d }6qt"jj|6d; }9|9 rA|9D ]`}:t|:};g |;d<< g |;d=< t#jd>j|;d d? }<|< r9|<D ]5}=t|=}>|>d@ dkr |>d@ d kr |;d< |>d@  |>dA dkr7|>dA d kr7|;d= |>dA  q|;||;dB < qt$jj|'d dddCdDddE%d}?|?D ]}@d}At|@}B|d }|4d }4t&|4|BdF< t'jj|Bd dGdHdDddI%d}C|CD ]}Dd}Et|D}F|d }|Ad }AdJt&|Ad  |FdK< t&|4dL t&|A |FdF< t(jj|Fd dMdNdOddPdQ%d}G|GD ]1}Ht|H}I|d }|Ed }Et&|4dL t&|A dL t&|E |IdF< dRt&|Ed  |IdS< t)jj|Id dTdUdOddVdWdX%d}J|JD ]}Kd}Lt|K}M|d }|#d }#t&|4dL t&|A dL t&|E dL t&|# |MdF< dYt&|#d  |MdZ< t*jd[j|Md d\d]d^dOdd_dWd`dadbdcdddedfdgd %d}N|ND ]P}Od}Pt|O}Qd
|Qdh< |d }||Qdb  |Qdc d ur|Qdc dkr|Qdc dikr||Qdc  |Ld }Lt&|4dL t&|A dL t&|E dL t&|# dL t&|L |QdF< |Qd] |Qdj< t+jj|Qd dkdldmdndOddodWdp%d}R|RD ]}St|S}%|d }|Pd }Pt&|4dL t&|A dL t&|E dL t&|# dL t&|L dL t&|P |%dF< dqt&|Pd  |%dr< |%d | ds v rd)|%dt< d|%du< d
|%dv< n|%d | dw v r/d)|%dt< d|%dx< d
|%dv< nd'|%dt< d
|%dv< |%dp dkrBd)|%dt< 	 dy|v rLdy|%dz< |6d ur|%d |v r{||%d  }Td)|%d{< |Td| |%d|< |Td} |%d~< |Td |%d< |Td |%d< nd'|%d{< ||% q	 i }Ud|v rdzdi}Ud|Qdz< |Q|U|d}V||V g }qS	 i }Wd|v rdzdi}Wd|Mdz< |M|W|d}X||X g }q	 i }Yd|v rdzdi}Yd|Idz< d|v rdzdi}Yd|Idz< |I|Y|d}Z||Z g }q	 i }[d|v r dzdi}[d|Fdz< d|v rdzdi}[d|Fdz< |F|[|d}\||\ g }q|B|d}]||] g }qVd'}^d'}_d'}`d
}ad
}bt,jj|dddddddddddddd}cg }d|cD ]M}et|e}Qd
|Qdh< d
|Qd< |Qd dkred)}`|Qd dkrod)}^n	|Qd dkrxd)}_|`d)kr|Qd dkrd}and}a|Qd dkrd}bnd}b|d|Q qNg }fg }g|adkr|gd |bdkr|gd |^d'kr|fd |_d'kr|fd t|gd
krt,jj|gdddddddddddddd}h|hD ]}it|i}j|d|j qt|fd
kr t,jj|fdddddddddddddd}k|kD ]}lt|l}m|d|m qt-||d}&|&g krV|dD ])}n|nd }od'}p|&D ]}q|qd |okrI|qd |nd< d)}pq6|pd'krRd
|nd< q6q,|'|d|"|ddddddddddddddddddddddddddddddddyddddddyddddddydddd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Ĝ}qt.d|iW S t.d'ddǜW S t.d'ddǜW S  t/y8 }r zt01dɡ t.dt&|riW  Y d }r~rS d }r~rww )NrU   r   rZ   rr   r   rh   r   r0  rm  r   r1  rq   r   r   r-   r   createdBy__avatarr   rn  r_   rW  r  r   ro  rD   r   r   rE   r   r   rS  r   r2   ru   rp  rq  rr  rs  Fr  Tr  r  r   r&  r'  rH  r"  r   r)  r   r   r   rK  rL  rN  r*  r   rp  imagesr
  UserSets__id
userSet_idimageUrlvideoUrlr  r  r   r  r  r  r  r  r  r  r  r	  r  r  r
  r  r  r  r  r  r  r  r  rt  r  r  r  r  r  r  r  ru  rf   r  r  rv  rw  r  r  r  r   r!  r#  rx  ry  r$  rz  r`   r%  r{  r|  r   r}  r~  r  r  r  r  r  r  r  r  r  r  r  r  r6  r  rY   r  r  r  r2  r   ra  rT   rb  rc  rd  re  rf  rg  rh  olympicLiftolympicParentolympicFormulaaccessLevel   %   exIdtmaxValdefaultTmaxr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rt   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r[   r   r   r   )2r:   r   rG   r^   rd   r  rc   r   r   r   r   r-   rL   r   r_   r  r   ra   r   r   r   r   r  r   r  r   r    r!   r*   r+   r   re   rF   r  rM   r   r   r   r   r   r   r   r   r   rC   defaultTmaxValuesr   r   r   r   )srh   r   r   r  r   r  r  requestInfor   r  r  rk   r   rk  r   r  r  r  r  r   coachAvatarr8  r9  r:  r;  r<  r=  dataProtocolArr
doneSetArrr>  r?  r   r  r  r  rL  r  rl   r  r@  r   r   rm   r   r   r   r  r   r  rN  r  r  rA  r  r  r  r  r  r  r  celebUploadsimgimgObjrB  rC  rD  rE  rF  rG  rH  rI  rJ  rK  rM  rN  rO  rP  rQ  rR  rS  rT  rU  r(  rV  userSetObj1r  rW  r  rX  r  rY  r  rZ  r[  r  r  r  olEx1olEx2r\  r]  r^  r  olympicExListopValoplopObjr  r  r  ex1r  	firstTempdexr   rn   rn   ro   completePlanJsonNew  s  










"







$


	









































)
r  c           
      C   sr   g }t jj| d }|r7|j}|j}|j}|D ]}|d }tjj||||d }	|	r6|	|	j
|	jd q|S )Nr   rU   )r^  r"  trainingLevel_idZbodyWeight__gte)r  r  )r.   r^   r   lastr^  rb  rg  rI   firstr   r"  )
uidr[  arrfitnessInfo	genderVal	weightValtrainingLevelValrm   r  tmaxInforn   rn   ro   r  n  s"   r  c                 C   sz  i }i }t jj|g dddddd}g }| rt| |}t| |D ]}t|}|d }	|d }
t|	 |
dks?|
dkrw|d	 D ]3}t| tjjt	|	|d
 
 }t| |d urvtjj|d d 
 }|d urvd||d < qC|
dkr|d D ]7}t| tjjt	|	|d
 
 }t| |d urtjj|d d 
 }t| |d urd||d < qq%||dS )N)r1  r  r  )rq   r  rq   rn  r_   rW  r1  r  ri  )rf   r  rU   r!  rZ   r  rj  )r{  r~  )r   r^   r   r_   r   rl  rc   ra   r   re   r  r   )rh   rk  r{  r~  r  r  Z	PlanArrayrk   rl   
exerciseIDZ
protocolIDsessObjZlastExerDetailsZlastSetDetailsrn   rn   ro   r    s\   

r  c              
   C   s  t  }z|| }|d }|d krt| jd}d|v rU|d dkrUtd tjj	|d |d d
 }| rM|D ]}t|}q<td	|d
 dW S td	ddW S tjj	|d |d d}| rtjj|d |d d}	|d |	_|d |	_|d
 |	_|	  td	ddW S tjj|d |d |d
 d}
|
  td	ddW S W d S  ty } ztd tdt|iW  Y d }~S d }~ww )NrU   r   
get_ratingrZ   z------------1r   rq   )r   rq   Tr   )r\   r   r   zThanks for the ratingr[   )rq   r   r   r   r   )r:   r   r   r   r   r   rc   r   r^   r   r_   r   ra   r   rd   rq   r   r   rg   creater   r   r   r   )rh   r   r   r   r   Zplanraterk   r  r   r   r   r   rn   rn   ro   createPlanRating  sF   





r  c           /      C   s
  t  }z<|| }|d }|d kr>t| jd}d|d v rC|d d dkrCtd |d d }tjj	|d}|d d |_
|d d |_|d d	 }d
|v r^|d
\}}	}
n|}t|d ||_d|_|d d |_|d d |_|d d dkr|d d d}tjj|d }| rtjj|d }|D ]}tjj||||d}|  q|d d |_|d d dkr|d d d}tjj|d }| rtjj|d }|D ]}tjj||||d}|  qd|d v r|d d dkrd|_|d d |_|d d |_||_||_d|d v r2|d d dkr2|d d |_d|d v rI|d d dkrI|d d |_ d|d v r`|d d dkr`|d d |_!|  d|d v r|d d dkrt"jj|ddd}| rtd nd}t"jj|d|d|dd }|  d!|d v rq|d d! dkrqd"|d v rq|d d" dkrqt"jj|d#dd}| r d#}|d d" }|D ]}t#|}|d }qt"jj	|d$}||_$d%|_%||_&||_'||_(|  td& nd#}|d d" }d'|d v r|d d' d(krd)}n%d'|d v r.|d d' d*kr.d+}nd'|d v r@|d d' d,kr@d-}t"jj|d%|||d.}d'|d v rf|d d' dkrf|d d' |_)||_*nd |_)d |_*|  n$t"jj|d#dd}|D ]}t#|}|d }t"jj	|d$} |   q~d/|d v r|d d/ dkrd0|d v r|d d0 dkrt"jj|d1dd}!|! rd1}|d d0 }|!D ]}t#|}|d }qt"jj	|d$}||_$d|_%||_&||_'||_(|  td2 n=d1}|d d0 }t"jj|d|||dd }|  n$t"jj|d1dd}"|"D ]}#t#|#}$|$d }%t"jj	|%d$}&|&  q t+dd3|j,|j
d4W S tjj|d d d5}'|' r[t+d6d7d8W S tjj|d d |d d |d d	 d|d d |d d |d d |d d |||d9}(d|d v r|d d dkr|d d |(_d|d v r|d d dkr|d d |(_ d|d v r|d d dkr|d d |(_!td: |(  d|d v r|d d dkr|d d d})|)D ]}tjj||(j,||d}|  qd|d v r1|d d dkr1|d d d}*|*D ]}tjj||(j,||d}+|+  q|(j,}t|d; |(j
},tjj	|d}-||-_-|-  d|d v rl|d d dkrld}t"jj|d|d|dd }|  d!|d v r|d d! dkrd"|d v r|d d" dkrd#}|d d" }d'|d v r|d d' d(krd)}n%d'|d v r|d d' d*krd+}nd'|d v r|d d' d,krd-}t"jj|d%|||d.}d'|d v r|d d' dkr|d d' |_)||_*nd |_)d |_*|  d/|d v r4|d d/ dkr4d0|d v r4|d d0 dkr4d1}|d d0 }t"jj|d|||dd }|  t+dd<||,d4W S W d S  t.y` }. zt/0d= t+d>t1|.iW  Y d }.~.S d }.~.ww )?NrU   r   r   r   z ------------Update Plan---------rW   programr   descriptionz<br><h6>CopyrightZplanDescriptionsrZ   r   r   ,r   
ability_idrq   r   modifiedBy_idr2   planGoal_idrq   r   r  r   r   rV   ZadvancePlanru   r   
directsellT)
plan_id_id
license_idzDirect Selling already ExistsDirect SellingN/Ar   r   r  royaltycoach_id_idtemplateContentcobrand
cbroyalty1rY   rr   zCo-BrandzCo-Brand Selling already Existstemplatez
Template 1z(My brand at top, Partner brand at bottomz
Template 2z.My brand and Partner equal (to left, to right)z
Template 3z(Partner brand at top, My brand at bottom)r   r   r  r  r  whitelabwhlabroyalty1r1  z"White-Label Selling already Existsz$Program Details Updated Successfully)r\   r]   rv   Z
planTypeId)r   FzProgram Name Already existsr[   )r.  r   r   r  r   r   r,  r2   r   r   r  z++++ img path save +++++z===planId====="Program Details Saved Successfullyr   r   )2r:   r   r   r   r   r   rc   r   r^   rd   r.  r   	partitionr   r  r   r   r   r!   r   r_   r   deleter  rg   r2   r    r   r,  r   r  advPlanru   r   r?   ra   r   r   r  r  r  r
  r  r   rU   originalPlanId_idr   r   r   r   )/rh   r   r   r   r   rv   Z
updatePlanZplanDesheadseptailZplanabilitiesZupdateAbilitiesZdeleteAbilitiesrm   Zcreateabilitites	plangoalsZupdateGoalsZdeleteGoalsval1Z	saveGoalsZdirecsellExistslicenseZplaninfoZcoBrandExistsr  ZcoBZcoBObjZcoBIdZtempcontentZcoBrandValuesZdeleteCobIdZdeleteCobrandZwhitelabelExistsZwhitelabValuesZwBZwBObjZ
deletewbIdZdeletewbrandr   r   r   r   ZsaveAbilityZ
playTypeIdZoriplanr   rn   rn   ro   
createPlan  s(  

 


     

$

    
"










     
 $    "
    
r  c           	   
   C   s   t  }z=|| }|d }t| |d kr>t| jd}tjj	|d d
ddd}|D ]}t|}q.tdd|dW S W d S  ty_ } ztd	 td
t|iW  Y d }~S d }~ww )NrU   r   rr   r   r,  Tr  )r\   r]   r5  r   r   )r:   r   rc   r   r   r   r   r   r^   r   r_   ra   r   r   r   r   r   )	rh   r   r   r   r   r   rk   rl   r   rn   rn   ro   getPlanDetails	  s"   


r  c              
   C   s   t  }zM|| }|d }|d krNtjjdddd}tjdddd}g }g }|D ]}t|}	||	 q+|D ]}
t|
}|| q9t	d||d	W S W d S  t
yo } ztd
 t	dt|iW  Y d }~S d }~ww )NrU   rZ   )programTypeStatusprogramTypeNamegoalName
goalStatus
parentGoalT)r\   Detailsr  r   r   )r:   r   rA   r^   r   r_   r@   ra   r   r   r   r   r   r   )rh   r   r   r   r   r2   r   ZgoalArrrk   rj   rm   r_   r   rn   rn   ro   getProgramType
  s,   

r   c           `      C   s  t  }z6|| }t| jd}g }|d kr3tjj|d d}|j	dkr0t
dddW S d|v rg|d d krg|d }|d	ksN|d
ksN|dksN|dkrVt
dddW S tjj|d |ddddd}n,|d }|d	ks{|d
ks{|dks{|dkrt
dddW S tjj|d |ddddd}tjj|d}|D ]}	t|	}
q|
d }|
d dd}|
d dd}t|}|
d dd}t|}|d }|d }|d }|d }d}|D ]}|d }|d dks|d dkrd} nq|dkr|D ]}	|	d }tjj|d |d d|d |d  ||d!}|  |j}|	d" }|D ]}|d# }tjj|d|d$ |d  ||d%}|  |j}|d& }tt|d' |D ]m} | d( }!tjj|d|!d) |!d* ||d+}"|"  |"j}#| d, }$|$D ]G}%|%d- }&tjj|#d|&d. |&d/ |&d* ||d0}'|'  |'j}(|%d1 })|)D ]}*|*d2 }+tjj|+d3 |(d|+d4 |+d5 |+d6 |+d* |+d7 |+d8 |+d9 ||d:},d5|+v r|+d; dkr|+d5 |,_d<|+v r|+d< |,_d=|+v rtd>|+d=  |+d= |,_d?|+v r|+d? |,_d;|+v r
|+d; d kr
|+d; |,_d@|+v r|+d@ d kr|+d@ |,_ dA|+v r,|+dA d kr,|+dA |,_!dB|+v r=|+dB d kr=|+dB |,_"dC|+v rN|+dC d krN|+dC |,_#dD|+v r_|+dD d kr_|+dD |,_$|,  |,j}-dE|+v r|+dE d krt%jj|d |+d3 dF}.|.& rtdG nt%jj|+d3 |d |+dE |+dH |+dI |+dJ dK}/|/  |+d4 }0|+d6 dkr|+d4 }0t|+d6  tt'dL t(d|0D ]e}1t)jj|-d|+d5 |+d* ||dM}2d/|+v r|+d/ |2_d;|+v r|+d; d kr|+d; |2_d@|+v r|+d@ d kr|+d@ |2_ dA|+v r|+dA d kr|+dA |2_!dB|+v r#|+dB d kr#|+dB |2_"|2  q|+d6 dkr:dN|+v r:|+dN |2_*|2  |+d6 dkrt)jj|-d|+d6 |+d* ||dM}2d/|+v r_|+d/ |2_d;|+v rp|+d; d krp|+d; |2_d@|+v r|+d@ d kr|+d@ |2_ dA|+v r|+dA d kr|+dA |2_!dB|+v r|+dB d kr|+dB |2_"dN|+v r|+dN |2_*|2  |2j}3tdO qqsqOq$qn|D ]}	|	d }tjj|d |d d|d |d  ||d!}|  |j}|	d" }|D ]r}|d# }tjj|d|d$ |d  ||d%}|  |j}|d& }tt|d' t|dP dkrtdQ t(ddPD ]}4|D ]} | d( }!tjj|d|!d) |!d* ||d+}"|"  |"j}#| d, }$|$D ]b}%|%d- }&tjj|#d|&d. |&d/ |&d* ||d0}'|'  |'j}(|%d1 })|)D ]9}*|*d2 }+tjj|+d3 |(d|+d4 |+d5 |+d6 |+d* |+d7 |+d8 |+d9 ||d:},d5|+v r|+d; dkr|+d5 |,_d<|+v r|+d< |,_d=|+v rtd>|+d=  |+d= |,_d?|+v r|+d? |,_d;|+v r|+d; d kr|+d; |,_d@|+v r|+d@ d kr|+d@ |,_ dA|+v r|+dA d kr|+dA |,_!dB|+v r|+dB d kr|+dB |,_"dC|+v r-|+dC d kr-|+dC |,_#dD|+v r>|+dD d kr>|+dD |,_$d=|+v rOtd>|+d=  |+d= |,_d?|+v rY|+d? |,_|,  |,j}-dE|+v r|+dE d krt%jj|d |+d3 dF}.|.& rtdG nt%jj|+d3 |d |+dE |+dH |+dI |+dJ dK}/|/  |+d4 }0|+d6 dkr|+d4 }0t|+d6  tt'dL t(d|0D ]e}1t)jj|-d|+d5 |+d* ||dM}2d/|+v r|+d/ |2_d;|+v r|+d; d kr|+d; |2_d@|+v r|+d@ d kr|+d@ |2_ dA|+v r|+dA d kr|+dA |2_!dB|+v r|+dB d kr|+dB |2_"|2  q|+d6 dkr4dN|+v r4|+dN |2_*|2  |+d6 dkrt)jj|-d|+d6 |+d* ||dM}2d/|+v rY|+d/ |2_d;|+v rj|+d; d krj|+d; |2_d@|+v r{|+d@ d kr{|+d@ |2_ dA|+v r|+dA d kr|+dA |2_!dB|+v r|+dB d kr|+dB |2_"dN|+v r|+dN |2_*|2  |2j}3tdO qyqRq.q)qt(ddRD ]}4|D ]} | d( }!tdS tjj|d|!d) |!d* ||d+}"|"  |"j}#| d, }$|$D ]l}%|%d- }&tjj|#d|&d. |&d/ |&d* ||d0}'|'  |'j}(|%d1 })|)D ]C}*|*d2 }+tjj|+d3 |(d|+d4 |+d5 |+d6 |+d* |+d7 |+d8 |+d9 ||d:},d5|+v rO|+d; dkrO|+d5 |,_d<|+v rY|+d< |,_d=|+v rjtd>|+d=  |+d= |,_d?|+v rt|+d? |,_d;|+v r|+d; d kr|+d; |,_d@|+v r|+d@ d kr|+d@ |,_ dA|+v r|+dA d kr|+dA |,_!dB|+v r|+dB d kr|+dB |,_"dC|+v r|+dC d kr|+dC |,_#dD|+v r|+dD d kr|+dD |,_$d/|+v r|+d/ |,_d=|+v rtd>|+d=  |+d= |,_d?|+v r|+d? |,_|,  |,j}-dE|+v rD|+dE d krDt%jj|d |+d3 dF}.|.& r(tdG nt%jj|+d3 |d |+dE |+dH |+dI |+dJ dK}/|/  |+d4 }0|+d6 dkrS|+d4 }0t|+d6  tt'dL t(d|0D ]e}1t)jj|-d|+d5 |+d* ||dM}2d/|+v r|+d/ |2_d;|+v r|+d; d kr|+d; |2_d@|+v r|+d@ d kr|+d@ |2_ dA|+v r|+dA d kr|+dA |2_!dB|+v r|+dB d kr|+dB |2_"|2  qc|+d6 dkrdN|+v r|+dN |2_*|2  |+d6 dk	rQt)jj|-d|+d6 |+d* ||dM}2d/|+v r|+d/ |2_d;|+v 	r|+d; d k	r|+d; |2_d@|+v 	r!|+d@ d k	r!|+d@ |2_ dA|+v 	r2|+dA d k	r2|+dA |2_!dB|+v 	rC|+dB d k	rC|+dB |2_"dN|+v 	rM|+dN |2_*|2  |2j}3tdO qqqƐqqq|D ]}5t+jj|5dT |d |5d3 |5dU ||dV}6|6  	qf|D ]}5t+jj|5dT |d |5d3 |5dU ||dV}6|6  	q|D ]}5t+jj|5dT |d |5d3 |5dU ||dV}6|6  	qt,jj|d dWdX}7|7  t,jj|d dYdX}8|8  tjj|d dZd}9tj-d[d\d]j|d d^d}:t|9};t|:}<|<dk
rdR}<tjj|d d_}=d|=_.|<|=_/|;|=_0|=  tjj|d dZd}>|>D ]}?t|?}@tjj|@d d_}A|=j/|A_/|A  
q*|=j1}B|=j}C|Bd` t2|C }Dt34|D5da}Et2|E6d}F|Fd }Gdb}Hdc}Idd}J|B}Kdet2|G }L|Ldf dg |H dh |K }M|Ldf dg |I dh |K }N|Ldf dg |J dh |K }O|7|M|Cdi |7|N|Cdi |7|O|Cdi t|dkr|D ]O}P|Pdj }Q|Pdk }Rdl8dm}Sdn|Qi}Tdodpi}Ut9j:|St;|T|Udq}V|V }Wt|Vj< t=jj|Wd dr}X|X& 
rtds 
qt=jj|R|Wd |Qdt}Y|Y  
qtjj|d_}Zd|Z_>|Z  du}[|j?}\|j@|Bdv}]tAdw|]}^tB|[|^|\ t
ddxdW S t
ddydW S  tCyZ }_ ztDEdz t
d{t2|_iW  Y d }_~_S d }_~_ww )|Nr   rq   rr   r   Fz'Please update the prices and iOS Statusr[   r   i  i)  Z7362Z7721zThis is a dummy coach or gym id	planId_idr   rU   r"  protocolJsonplanJsonr   ro  progression
regressionskipr7  r3  r  ZSpecificr  TrZ   r  r   )rq   r  r   r  r   r   r  r4  r0  r  )r  r   r  r   r   r  r1  Z23456543456r-  r  r  )r
  r   r  r  r   r  r.  r*  r  r  )r  r   r  r  r  r   r  r+  r'  ex_idr  r#  r  r  rv  rw  )rf   r  r   r  r#  r  r  r  rv  rw  r   r  r  Z
exRestTimeinstructionszcoming Herer   advTimeZ	advWeightadvDistanceZadvSpeedZ	advHeightbaseDistance)rq   rW  zalready ExistsbaseRepsbaseTime
baseWeight)rW  rq   r,  r-  r.  r/  zhere I Come)r"  r   r#  r  r   r  rz  zdetails Saved SuccessfullyrY   zeven Number of Microcylclesr  zodd number of microcylesrn  rl  )rn  rq   rW  r_   r   r  r   )rq   r$     r   PlanMesocycle__idPlanPeriods__idPlan__id)Z$mesocycle_id__period_id__plan_id__idrW   r   r   FacebookTwitter	Instagram"http://stratfit.net/#/planprofile/r5  utm_source=+&utm_medium=Link&utm_term=Organic&utm_name=urlrv   r;  rv   5https://www.googleapis.com/urlshortener/v1/url?key={}'AIzaSyAXaSWj7trNg8Pq3PdBiOSHirnjcZlIZSor4  content-typeapplication/jsonrj   headersr9  r   rq   r9  r4  zPlan published!)r   	plan_namezpublishplan.htmlzProgram Published SuccessfullyzUser LoggedOutr   r   )Fr:   r   r   r   r   r   r   r^   rd   r   r   r   r   r_   r-   ra   r  r   r  rg   rU   r   rc   r  r   r   r   r#  r  r  r   r  exTimeexWeight
exDistancespeedr`  r)   r   r`   ranger   rz  r   r"   r   r~   r   r`  r   r   r   r   r   r   r   formatrequestspostdumpstextr$   r   r~  r   r
   rP   r   r   r   )`rh   r   r   ZplanBuildInfourlsZplanIosStatusr   Z	draftJsoninstanceSubrk   rl   draftIdplanjsonpublishplanjson	protocolsZprotocolInfoZprogressProtocolZregressionProtocolZskipprotocol
periodInfoZinSeasonPeriodZdpZ	periodArrZ	periodValZcreateperiodZperiodIdmesoDetailsmesoZmesoValZ
createmesoZmesoIdmicroDetailsmicroZmicroValZcreateMicroZmicroIdrN  sesssessValZ
createsesssessId	exdetailsr  exValZcreateexr  ZplanextmaxDetZcreatePlanEXTmaxZsetDataiZ	createsetsetIdnumprotoIdZcreateProtocolZplanCountry1ZplanCountry2ZcountOfPeriodsZcountOfMicrocyclesr`  r  ZplanInfZupdatePlanPeriodZperZperObjZupdatePeriodplannamerv   r   r   r   Z	encodeUrl
utm_sourceutm_source1utm_source2utm_namer;  url1url2url3ulr  planValpost_urlpayloadrA  rresultcheckShortUrlscreateShortUrlsZupdateDraftsubjectto_emailctxr]   r   rn   rn   ro   createPlanBuild"
  s0  


  




	

	
	















	
















 
'	

	
	



















	
















 
	
	





















	
















   6	





rv  c              
   C   sn  t  }t| jd}z|| }|d }t| |d krd|d d v rtjj	|d d d |d
dd}t| | rh|D ]}t|}qBtjj|d d}t|d |_||_||_|  |j}	n$t|d d  tjjt|d |d d d ||d}
|
  |
j}	td	d
|	dW S W d S  ty } ztd tdt|iW  Y d }~S d }~ww )Nr   rU   r   r5  r!  r"  rW   )r$  r"  r   r  TDraft Saved Successfullyr\   r]   rQ  r   r   )r:   r   r   r   r   r   rc   r   r^   r   r_   r   ra   rd   rM  r$  r   r  rg   rU   r  r   r   r   r   r   )rh   r   r$  r   r   
updateJsonrk   rl   updaterQ  r  r   rn   rn   ro   savePlanJson  sN   


r{  c           	   
   C   s   t  }t| jd}zd|| }|d krnd|v r+|d dkr+|d d kr+|d }n|d }tjddj	||d d
d	d
d}| re|D ]}t|}|d dkr_|d
 dkr_d|d
< qHd|d
< qHnddi}t|W S W d S  ty } ztd tdt|iW  Y d }~S d }~ww )Nr   r   r   rU   r|   r3  rq   r   r"  r$  r   planId_id__planStatusrZ   r   r\   Fr   r   r:   r   r   r   r   r   r   r^   r   r   r_   r   ra   r   r   r   r   r   	rh   r   rv   r   r   jsonDetailsrk   rl   r   rn   rn   ro   getDraftJson  s@   
 




r  c              
   C   s  t | jd}zt }g }tjj|d dd}|	 r|D ]}t
|}q!|d dd}t |}|d D ]/}	|	d D ](}
|
d D ]!}|d	 D ]}|d
 D ]}t|d d  ||d d  qQqKqEq?q9tjj|ddddddddd}|D ]$}t
|}|d dkr||d |d |d |d |d |d d q~t|ddW S  ty } ztd tdt|iW  Y d }~S d }~ww )Nr   rq   r"  r$  r   r7  r4  r1  r.  r+  r'  r(  r   rT   rg  rf  rb  rU   r  exAbilitiesSkill)exNameexCoderU   exDescexEquipr  F)safer   r   )r   r   r   r   r`   r   r^   r   r_   r   ra   r  rc   rb   rC   r   r   r   r   r   r   r   )rh   rv   r  r   r  vadataObj1ZjsonObjtestvmmiser  exTypeDetailsrk   rl   r   rn   rn   ro   getExerciseDetails  sN   

0
r  c              
   C   s  t  }t| jd}z|| }|d }t| |d krtjj	|d |d
ddd}| r|D ]}t|}q3|d d ksF|d dkrK|d }nM|d d	d
}	t|	}d|d v rg|d d |d< n1d|d v rv|d d |d< n"d|d v r|d d |d< nd|d v r|d d |d< n|d }tjj|d d}
t||
_td ||
_||
_|
  |
j}tdd|dW S W d S  ty } ztd tdt|iW  Y d }~S d }~ww )Nr   rU   rq   r!  r"  r#  r   rT  r   ro  r&  r%  r'  Z
transitionrW   zin Here TO UpdateTrw  rx  r   r   )r:   r   r   r   r   r   rc   r   r^   r   r_   r   ra   r  rd   rM  r#  r   r  rg   rU   r   r   r   r   r   )rh   r   r$  r   r   ry  rk   rl   Z	protoJsonr  rz  rQ  r   rn   rn   ro   saveprotocolJson7  sR   




r  c           	   
   C   s"  t  }t| jd}ze|| }|d krod|v r+|d dkr+|d d kr+|d }n|d }tjddj	||d d
d	d
dd}| rf|D ]}t|}|d dkr`|d dkr`d|d< qId|d< qInddi}t|W S W d S  ty } ztd tdt|iW  Y d }~S d }~ww )Nr   r   r   rU   r|   r3  rq   r|  r$  r#  r   r}  rZ   r   r\   Fr   r   r~  r  rn   rn   ro   getprotocolJsone  s@   
 




r  c                 C   s  t  }z|| }t| jd}|d }|d krd|v r=|d dkr=tjdddddd	d
dddddj	d|d}ntjdddddd	d
dddddj	d|d}g }|D ]s}t
|}|d
 d krltj|d
  |d
< |d d kr{tj|d  |d< tjj	|d d }	|	 r|	D ]#}
t
|
}|d d}|d d}|d d}|d ||d < qtjj	|d |dj	ddd}| r|| qWd|v r|d dkrtjddddj	d|dd}ntjddddj	d|dd}g }|D ]9}t
|}tjj	|d |dd}| r,tjj	|d |dj	ddd}| r+|| q|| qd|v rN|d dkrNtjddddj	d|dd}ntjddddj	d|dd}g }|D ]P}t
|}d|d< d|d< tjj	|d |dj	ddd}| rtjj	|d d  }|r|d dkrd|d< |d  |d< nd|d< || qat|||d!W S W d S  ty } ztd" td#t|iW  Y d }~S d }~ww )$Nr   rU   ZadvancedPlanrZ   r   r~   r.  r   r   ru   r   r   r*  r)  r   )r~   r   r   r4  r5  r6  r7  r8  r9  r   )rv   r   rm  )r~   r   r  r   rE  ZreviewStatusr   reiviewComments
activeplanZinactiveplanreviewProgramsr   r   )r:   r   r   r   r   r   r   r^   r_   r   ra   r*   r+   r$   r   r   r   r   r#   r  r   r   r   r   r   )rh   r   r   infor   plandatar   rj   r  r  rm   r   r  r  r  ZdraftedPlandetailsZ
plandetailZinactiveplanArrZdraftedPlandetails1Zdrafted1Zplandetail1r  ZdraftedPlandetails2rE  r   rn   rn   ro   getplaninfo  s   










I
r  c              
   C   s   t  }t| jd}z4|| }|d }t| |d kr9tjj	|d d}d|_
||_|  tdddW S tdd	dW S  ty_ } ztd
 tdt|iW  Y d }~S d }~ww )Nr   rU   rW   r   TzProgram deleted successfullyr[   Fuser logged outr   r   )r:   r   r   r   r   r   rc   r   r^   rd   r   r  rg   r   r   r   r   r   )rh   r   Zdraftidr   r   Z	draftdatar   rn   rn   ro   deletedraftedplan  s$   

r  c           $   
   C   sr  t  }t| jd}z|| }|d }|d kr	tjj||d d	d}t
jj|d d	d}|D ]}t|}q7t| g }	g }
|d dkr| rb|D ]}t|}|d d	d
}qSt|}|d }|D ]Q}|d }|D ]H}|d }|D ]?}|d }|D ]6}|d }|D ]-}|d }d|d v r|d }|d }|	||d q|d }|d }|
||d qqq}quqmtd|	d td|
d g }g }|	D ]}||
v r|
| q|
} | D ]}!|!|vr||! q|	D ]}"|"|vr||" qt|d ntdddW S tdddW S t||dW S  ty8 }# ztd tdt|#iW  Y d }#~#S d }#~#ww ) Nr   rU   rq   r|  r$  rr   programTyperZ   r   ro  r7  r4  r1  r.  r+  r'  z0-0-0-0r  r   r(  )ZexnameZexidz-----------ZXXXXXXXXXXXXXXXXXXXXXXXXXXFznot a rapid progression Planr[   zUser Logged Out)ZlabelledZ	unlabbeldr   r   )r:   r   r   r   r   r   r   r^   r   r_   r   ra   rc   r   r  r   remover   r   r   r   r   )$rh   r   rv   r   r   r  r   rj   
planValuesZ	lablledExZunlabelledExrk   rl   rR  rS  rU  rV  rW  rX  rY  rN  rZ  r]  r  r^  ZlabelledExcercisesZlabelledExidZunlabelledExerZunlabelledexidoutputZoutput1itemZotherExercisesxx1r   rn   rn   ro   getTransitExId  s   







r  c              
   C   sP  t  }t| jd}z||| }|d }t| |d krd|v rtjj	|d |d
dd}| rf|D ]}t|}q6tjj|d d}t|d |_t|d  ||_||_|  tdd	d
W S tjj|d ||t|d d}	|	  tdd	d
W S W d S W d S  ty }
 ztd tdt|
iW  Y d }
~
S d }
~
ww )Nr   rU   rq   r!  r"  rW   rulesTzrecord Inserted Successfullyr[   )r"  r   r  r#  r   r   )r:   r   r   r   r   r   rc   r   r^   r   r_   r   ra   rd   rM  r#  r   r  rg   r   r  r   r   r   r   )rh   r   r$  r   r   ry  rk   rl   rz  Z
createRuler   rn   rn   ro   saveRuleJson8  sH   


r  c              
   C   s  zt | jd}tjj|d dddd}|D ]
}|d }|d }q|d }t| |d }t| t	jj|d
dd	d
dddddd}g }	|D ])}
t|
}|d |d< |d |d< |d |d< |d |d< |d |d< |	| qMtjddt|t| }t|}g }|D ]/}t|}t	j
dd	d
dj|d dddddd}|D ]}t|}t|d || qqt|	||tdW S  ty } ztd tdt|iW  Y d }~S d }~ww )Nr   rU   rZ   r   rq   endstartr   ZUserExercise__idrC   r   	setNumberZ&userexercise__exerciseId__exerciseNamer  Z userexercise__exerciseWorkWeightZplanset__num_of_repsZ	numOfRepssetNamer  rT   rq  z-id)Zplanset__excercise__session__idz--------)r   offset
userplanIdZactivePlanIdr   r   )r   r   r   r   rL   r^   r   r_   rc   rM   r   ra   r   r   r   re   reversedr   ZactivePlan_idr   r   r   r   )rh   rj   r   rm   rq   rp  offset1Zoffset2r  listrk   plandetailsZlast_twoZlast_two_in_ascending_orderr  rC  r   r  r_   r   rn   rn   ro   r$  _  sh   
"

r$  c                 C   s  t  }z|| }|d }t| |d krt| jd}tj	ddj
||d ddddd	}| rS|D ]}t|}|d d krO|d d
krOd}q:d}q:nd}tj	dj
|d ddddd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'}
g }tjj
|d d }tjj
|d d }tj	d(j
|d dd)}d
}d
}|
D ]Q}t|}|d d*ks|d d+krtjj|d% d}n#tjj|d d}t|d" d, tt|jd- t|j  d. |d"< |d |d/< |d" |d0< |d |d1< q|D ]}t|}|d2t|d3  7 }q|d
kr*|d4d  |d< |D ]}t|}|d2t|d5  7 }q,|d
krK|d4d  |d < d
}|D ]}t|}|d6|d)  7 }qO|d
krm|d4d  |d7< nd
|d7< |	D ]G}t|}|d d8kr|d |d9< n-|d d:kr|d |d;< |d |d<< |d |d< n|d d*kr|d |d=< |d |d>< || qstdd?||d@W S W d S  ty } ztdA tdBt|iW  Y d }~S d }~ww )CNrU   r   r|   r3  r|  r$  r#  r   r}  r   TFr   plan_id__planNameZplan_id__num_of_sessionsr   r  r  r
  r  r  couponrr   r,  r2   r   ru   r   originalPlanIdr   r.  r   r~   r   r   r   r   r   r   rE   r   r   r   r   r   r   r  r  rV   r  r  rZ   r  r   abilitiesNames1r  2r  r	  r  r  r  )r\   r]   r5  protocolExistsr   r   )r:   r   rc   r   r   r   r   r   r^   r   r   r_   r   ra   r?   r   r    r!   r-   rd   r   r   r   r   r   r   r   r   )rh   r   r   r   r   Zprotocoldetailsrk   r  r  r   Z
planvaluesr   r2   r   r   Z
goalStringZabilityStringrl   r   r   goalZgoalObjr   Z
abilityObjr  rm   r   r_   r   rn   rn   ro   r     s   

(


L
r   c           
   
   C   s.  t  }zt|| }|d }t| |d krptjj|ddd}| r'd}ntdddW S t	jj|dd}|D ]}t
|}t|d  |d d krPd}q;tdd	d  W S |dkrj|dkrmtdd
dW S W d S W d S tdddW S  ty }	 ztd tdt|	iW  Y d }	~	S d }	~	ww )NrU   rZ   r   TF)r\   r   rr   r   rY   r1  r  r[   r   r   )r:   r   rc   r/   r^   r   r_   r   r   r-   ra   r   r   r   r   )
rh   r   r   r   ZtrainerCheckZuserProfileCheckrk   rl   ZprofileCheckr   rn   rn   ro   checkTrainer  s4   

r  c           
   
   C   sP  t  }z|| }|d }t| |d krg }tjjddddd}|D ]X}t|}|d |d< |d |d< |d d u rFd|d< d|d	< nt|d  |d	< |d |d
< t|d  |d< t	jj|d d }|
 rrt||d< nt||d< || q%td|dW S W d S  ty }	 ztd tdt|	iW  Y d }	~	S d }	~	ww )NrU   r1  )rt  r   r   r   r   +http://stratfit.net/assets/images/user1.pngcreatedBy_id__avatar1r   r   	noOfPlansT)r\   coachesListr   r   )r:   r   rc   r-   r^   r   r_   ra   r+   r   r   r  r   r   r   r   r   r   )
rh   r   r   r   r  coachesr  	coacheValr   r   rn   rn   ro   	coachList  s<   


r  c                 C   s`  t  }z|| }|d }t| g }|d krt| jd}tj	ddj
|d ddddd	d
dddd	}| r|D ]J}t|}|d |d< |d	 d u rUd|d< nt|d	  |d< |d
 |d< |d |d< tjj
|d d }	|	 rt|	|d< nd|d< || q>td|dW S  ty }
 ztd tdt|
iW  Y d }
~
S d }
~
ww )NrU   r   r|   rA   r   r   r   r   r   r   r   r   r   r   rv   r  r   durationlevelr   Z	noOfUsersr   T)r\   Z	plansListr   r   )r:   r   rc   r   r   r   r   r   r^   r   r   r_   r   ra   r+   rL   r  r   r   r   r   r   r   )rh   r   r   r   ZplanListArrr   r   r   rl  	userplansr   rn   rn   ro   coachPlansList/  sH   


r  c              
   C   s   t  }zG|| }|d }t| |d krCt| jd}|d dkr'd}nd}tjj	|d d}|d |_
|  td	|d
W S tddd
W S  tyi } ztd tdt|iW  Y d }~S d }~ww )NrU   r   r   r   zPlan DeactivatedzPlan Activatedrq   rW   Tr[   Fr   r   r   )r:   r   rc   r   r   r   r   r   r^   rd   r   rg   r   r   r   r   r   )rh   r   r   r   r   r]   Zdeactiveplanr   rn   rn   ro   deActivatePlanU  s(   


r  c           )   
   C   sH  t  }z|| }|d }|d krtjjdd}|j}tjj|d}g }g }g }	g }
g }d}tjdj	d|d
 }| rR|D ]}t|}|d |d	< qCd
}tjj	dd
 }| ro|D ]}t|}|
|d  qatj	tdd 
 }| r|D ]}t|}||d  qtjj	dd
 }|D ]}t|}||d  qtj	tdd 
 }|D ]}t|}|	|d  q| jdkri }n| jdkrt| jd}|d
krtjj	d|
d
dddd}ntjj	d|d
dddd}|D ]}d}t|} | d | d< | d d | d  | d< | d d | d  | d< | d d u r3d| d< d| d< nt| d  | d< | d | d< t| d  | d< |d
kryd|v rj|d dkrjtjj	| d ddd|d 
 }!n9tjj	| d dd|d!
 }!n*d|v r|d dkrtjj	| d ddd|	d 
 }!ntjj	| d dd|	d!
 }!|! r|!D ](}"t|"}#| d |#d" krtjj	|#d d#
d$  }$||$ }|| d%< qt|!| d&< ||  q|jd'kr*|d	 dkrtjd(j	dddd) td*d+ }%t |%| }&n^tjd(j	ddd,	tdd  td-d. }%t |%| }&n<|d	 dkrItjd(j	dddd) td*d+ }%|%}&ntjd(j	ddd,	tdd  td-d. }%|%}&tjj	ddd/ td0d1 }'t!d
||&|'d2W S W d S  t"y }( zt#$d3 t!d4t%|(iW  Y d }(~(S d }(~(ww )5NrU   rZ   rr   Fr|   r   r!  r   r"  Tr#  r  rq   rx   ry   r   r1  )rt  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   Zdownloaduserscountr  rH  r   plan_id__activationStatusplan_id__planStatusr$  plan_id__indianPriceplan_id__indianPrice__maxr  r  plan_id__priceplan_id__price__maxrI  r   
price__max)r\   r  	highPricedollarHighestr   r   )&r:   r   rG   r^   rd   r  r-   r1   r   r   r_   r   ra   r%   r   r   r"   methodr   r   r   r   r+   r   rL   r   r   r  r   r  r  r   r  r   r   r   r   r   ))rh   r   r   r   r  r  r  r  r  r  Z	inCoachesZ	otCoachesr  r  r  r  ZindianCoachesrm   r   ZotherCoachValuesr  ZvalObj1r  r  r  r  r  r  ZcDatar  r  Zdownloadcountr  r   rk   r  r  r  r  highestPrice_dollarr   rn   rn   ro   ionicgetcoachsp  s2  










o
r  c              
   C   s   t  }z.|| }|d kr*t| jd}tjj|d d}|j	}t
d|dW S t
dddW S  tyP } ztd	 t
d
t|iW  Y d }~S d }~ww )Nr   r  )rT   T)r\   ZInstructionsFr   r[   r   r   )r:   r   r   r   r   r   rC   r^   rd   rf  r   r   r   r   r   )rh   r   r   ZexDataZexInfor)  r   rn   rn   ro   getExInstructions  s   

r  c           [   
   C   s  t  }	z-|| }t| |d k	r*|d }tjjdd}|j}t|d t| j	
d}g }t }d}	d}
d}d}d}|d }tjj|d}d}d|v r\|d d	kr\|d d
ksld|v r|d d	kr|d d
kr|d dkr|d dkrd}	td |d|d  d |d  d |d  d 7 }nf|d dkr|d d
krd}	td |d|d  d |d  d 7 }nC|d d
kr|d dkrd}	td |d|d  d 7 }n&d|v r|d d	krd}	td |d|d  d |d  d |d  d 7 }d|v r=|d d	kr=d}
|d d}|	dkr|d7 }n|d7 }d	}|D ]}|d| d 7 }q"|d	kr=||d d d 7 }d |v r|d  d	krtd! d}|
dksY|	dkr^|d7 }n|d7 }|d  d}d	}|D ]}|d"| d 7 }qm|d	kr||d d d 7 }	 t|d# d$|v r|d$ d	krtd% d}|dks|
dks|	dkr|d7 }n|d7 }|d$ d}d	}|D ]}|d&| d 7 }q|d	kr||d d d 7 }d'|v r|d' d	kr|d' d}d}|dks|dks|
dks|	dkr|d(7 }n|d)7 }d*|v r|d* d+kr|jd,krK|d- d.kr:|d/|d0  d1 |d  d 7 }n|d2|d0  d1 |d  d 7 }ntjj|d0 |d gd3 td4d5 }tjj|d0 |d gd3 td4d6 }t| t| 	 |d- d.kr|d/t| d1 t| d 7 }n9|d2t| d1 t| d 7 }n(|d- d.kr|d7|d0  d1 |d  d 7 }n|d8|d0  d1 |d  d 7 }|dks|dks|
dks|	dks|dkr|d(7 }n|d)7 }d}tjd9jd.|d: }| r	d}|dkr|d;7 }n|d<7 }d*|v r8|d* d+kr8d=|v r3|d= d>kr3|d?7 }|d@7 }nd=|v rH|d= d>krH|d?7 }|dA7 }t|d# || t|}tjjdddB td'dC }|jd,kr|d- d.krtjdDjddd.dE tdFdG } t| t | }!nXtjdDjddd.dE tdHdI } t| t | }!n:|d- d.krtjdDjddd.dE tdFdG } t| }!ntjdDjddd.dE tdHdI } t| }!g }"g }#d	}$|D ]}%t!|%}&t"jj|&d dJ }'|' r4|'D ]$}t!|}(|(dK dL})|)dM dN}*|*d dO}+|(dP |&|+d0 < qt#jj|&d ddQ$ },t#jj|&d dJj%ddRj%d	dS$ }-|,|&dT< |-|&dU< t&|&d }.t'|&d }/|.|&dV< |/|&dW< d0|&dX< d0|&dY< d	|&dZ< t#jj|&d |d dd[ }0|0 rd|&dX< t#jj|&d |d d\ }1|1 r|1D ]}2t!|2}3|3dZ d	kr|3dZ d kr|3dZ |&dZ< d|&dY< q|&d] d^ t|&d  }4t()|4*d_}5t|5d`}6|6d |&da< |&db dc |&dd  |&de< |&db dc |&dd  |&db< d*|v r|d* d+kr|jd,krr|d- d.kr<tjdDjddd.dE tdfdg }!|&dh |&d'< |&d' |&di< n'tjdDjdddjt+d.dk  tdldm }!|&dn |&d'< |&d' |&di< t,|&d' d0krpdo|&d'< n`|d- d.krtjdDjddd.dE tdfdg } t|  tjj| dp}7|7j-}!tj j|&dh dp}8n0tjdDjdddjt+d.dk  tdldm } tjj| dp}7|7j-}!tj j|&dn dp}8|8D ]}9t!|9}:|:dq };q|;|&d'< t |&d' d0krdo|&d'< nt,|&d' d0krdo|&d'< n|jd,kru|d- d.krAtjdDjddd.dE tdFdG } t| | }!t|&dr t | |&d'< |&d' |&di< ntjdDjdddjt+d.dk  tdHdI } t| | }!t|&d' t | |&d'< |&d' |&di< nP|d- d.krtjdDjddd.dE tdFdG }!|&dr |&d'< |&d' |&di< n'tjdDjdddjt+d.dk  tdHdI }!|&d' |&d'< |&d' |&di< t |&d' d0krdo|&d'< |&ds dtkrdu|&ds< dv|&dw< n|&ds dxkrdy|&ds< dz|&dw< n|&ds d{krd||&ds< d}|&dw< |&d~ d urt.j/|&d~  |&d~< |&d d ur!t.j/|&d  |&d< tjj|&d d}<t|<j0dc t|<j1 |&d< t2jdj|&d dJd}=d	}>d	}?|=D ]}t!|}(|>d|(d  7 }>|?d|(d  7 }?qM|>d	krw|>dd  }@|>dd  }And	}@d	}At3jdj|&d dJd}Bd	}Cd	}D|BD ]}t!|}(|Cd|(d  7 }C|Dd|(d  7 }Dq|Cd	kr|Cdd  }E|Cdd  }Fnd	}Ed	}F|&d$ d}Gt4jj|Gdd5 }Hg }I|HD ]}t!|}(|I6|(d  |$dt|(d  7 }$q	 |&d d t|A d d t|E d |&d< |&d dks|&d dkr7tjj|&d d}Jt|&d d tt|Jj0dc t|Jj1  d |&d< n#tjj|&d d}Kt|&d d tt|Kj0dc t|Kj1  d |&d< t7jj|&d dJd5 $ }Lt8jj|&d d }Md0}Nd}O|MD ]}Pt!|P}Q|N|Qd  }N|Od }Oq{|N|O }Rt9jdj|&d ddddd5 }Sg }T|SD ]}Ut!|U}V|T6|V q|R|&d< |@|&d< |@|&d< |A|&d< |E|&d< |F|&d< d
|&d< |L|&d< |T|&d< |I|&d< |6|& q|$d	k	r|$dd  }$|$d}Wt4jj|Wddd5 }Xg }Y|XD ]}t!|}(|Y6|(d |(d d 	qnd	}Ft:d||j|!||YdW S t:dddW S  t;	yQ }Z zt<=d t:dt|ZiW  Y d }Z~ZS d }Z~Zww )Nr   rZ   rr   r   FrU   ay  SELECT Plan_plan.*, Plan_plan.goals as planGoal__goalName, utility_programtype.programTypeName as planType,Subscriber_user.first_name as createdBy_id__first_name,Subscriber_user.last_name as createdBy_id__last_name,Plan_plan.goals as planGoal,Plan_plan.price as planPrice,Plan_plan.originalPlanner_id as originalPlanner,Plan_plan.createdBy_id as createdBy,utility_programtype.programTypeName as programType__programTypeName,Subscriber_user.avatar as createdBy_id__avatar,Subscriber_user.id as coachId FROM Plan_plan left join utility_programtype on Plan_plan.programType_id = utility_programtype.id left join Subscriber_user on Plan_plan.createdBy_id = Subscriber_user.id left join Plan_selectedabilities on Plan_plan.id = Plan_selectedabilities.plan_id left join Plan_plangoals on Plan_plan.id = Plan_plangoals.plan_id left join Plan_plancountry on Plan_plan.id = Plan_plancountry.plan_idr  r   r   rl  r  Tzin Herez* where (Subscriber_user.first_name like '%searchStringz %' or Plan_plan.planName like '%z'%' or Subscriber_user.last_name like '%z%')ZinHere1ZinHere2z" where (Plan_plan.planName like '%z%') r  r  z and (z where (z Plan_plan.programType_id = z or )r   ZinHEre3z% Plan_selectedabilities.ability_id = z--------------------------r2   ZinHEre5z Plan_plangoals.planGoal_id = r   z andz wherer&  r'  rH  r"  r   z# (Plan_plan.indianIosPrice BETWEEN r   z AND z (Plan_plan.iosPrice BETWEEN )Z
usd__rangerM  Zinr__maxZinr__minz  (Plan_plan.indianPrice BETWEEN z (Plan_plan.price BETWEEN r|   r!  z& Plan_plancountry.country_id = 88 and z' Plan_plancountry.country_id != 88 and ZpackageNameZ
apolloLifezD Plan_plan.createdBy_id != 165 AND Plan_plan.createdBy_id != 47 AND  Plan_plan.id is not null and activationStatus=1 and planStatus=1 AND Plan_plan.iosStatus = 1 GROUP BY Plan_selectedabilities.plan_id,Plan_plangoals.plan_id ORDER BY Plan_plan.programType_id,Plan_plan.planName ASCz Plan_plan.id is not null and activationStatus=1 and planStatus=1 GROUP BY Plan_plan.id, Plan_selectedabilities.plan_id,Plan_plangoals.plan_id ORDER BY Plan_plan.programType_id,Plan_plan.planName ASCrI  r  r   r  r  r  r  r  r   r4  r5  r6  r7  r8  r9  r>  r?  r@  rA  rB  r<  r=  rC  rD  rE  rF  rG  r   r   r   r   r   r   r   r(  r   plan_id__indianIosPriceplan_id__indianIosPrice__maxr)  r   r  r#  plan_id__iosPriceplan_id__iosPrice__maxr   rK  rL  rN  r*  r   r   rT  r   r   r   rU  r   r   rV  r   r   ru   r   rO  rE   r   r   rD   r   r   parentGoalName_idr   rP  rQ  rR  r   r   r   r   r   r   r   r   r   rC   rW  rX  rY  rZ  r   r   r   ability1rS  plan_goals1r   r   r[  r  GoalName)rU   rt   )r\   filterValuesr   r  r  parentGoalsr   r[   r   r   )>r:   r   rc   rG   r^   rd   r  r   r   r   r   r   cursorr-   r   r   rF   r   r  r  r   r   r   r1   r   r_   r   executer>   r   r"   r  r  ra   r$   r   r   r  r  r  r   r   r   r   re   rN  r*   r+   r   r   r!   r    rD   r   r   rL   r   r   r   r   r   r   )[rh   r   r   r   r  r  r  r   r  r  Zprogramtypeval
abilityValZgoalValZcoachPriceValr   r  ZfilterQueryprogramTypesZtempTextrm   ZselectedabilitiesZ	tempText1r  ZselectedgoalsZ	tempText2Z
coachPriceZmaxINRPriceMapValueZminINRPriceMapValuer  r  resultQueryr  r  r  clelebLikeArrcelebreviewArrZparentGoals1rk   rl   r  r   r  r  r  r  r  r  r  r  r  r  r  r   r   r   r  r  rN  r  r  
coachName1r   r   
abilities1r   planAbilities1r   r   	purposes1r   
planGoals1ZgoalsArrZplanParentGoalsr  r   r   r  r  r  r  r  r  r   r  r  r  r  Z	PrntGlArrZParentGoalsZparGoalsr   rn   rn   ro   	filterSql   sT  


  







(
 2























 (




r  c                 C   s   g }t jdj| ddddddd}| rC|D ]&}t|}|d d ur/tj|d  |d< |d d	 |d  |d
< |	| q|S d S )Nr|   rZ   r>  rU   r   rf  user_id__last_nameuser_id__avatarr   	celebName)
r   r^   r   r   r_   r   ra   r*   r+   r   )rv   ZlikeArrceleblikesValrm   r   rn   rn   ro   r    s    r  c                 C   s   g }t jdj| dddddddjd	d
jdd}| rK|D ]&}t|}|d d ur7tj	|d  |d< |d d |d  |d< |
| q"|S d S )Nr|   r   rU   r   rf  r  rE  r  Tr?  r   r@  r   r  )r   r^   r   r   r_   r  r   ra   r*   r+   r   )rv   Z	reviewArrr  rm   r   rn   rn   ro   r    s,   r  c                 C   s   t j }tj }|D ]b}t|}|d dks|d d krn|d d}|D ]F}t|}|D ]=}||d krltdd|d|d d|d	  tjj|d	 |d	 d
}	|		 rZtd q/tjj
|d	 |d	 ddd}
|
  q/q'qtdddS )Nr2   r   r  r  this Came Here For Testing-------r  PlanId------>rU   )r  rq   zExisting Goalsr6  r  Trecords inserted successfullyr[   )r   r^   r_   rD   ra   r   rc   r    r   r   r  rg   r   )rh   planPurposesr   rm   r   ZpurposesValrk   rl   r  ZexistingPurposesZcreatePlanPurposesrn   rn   ro   insertPlanPurposes  s8   


r  c                 C   s   t j }tj }|D ]b}t|}|d dks|d d krn|d d}|D ]F}t|}|D ]=}||d krltdd|d|d d|d  tjj|d |d d	}	|		 rZtd
 q/tjj
|d |d ddd}
|
  q/q'qtdddS )Nr   r   r  r  r  r  r  rU   )r  rq   zExisting Abilitiesr6  r  Tr  r[   )r   r^   r_   rE   ra   r   rc   r!   r   r   r  rg   r   )rh   r  r   rm   r   r  rk   rl   r  ZexistingAbilitiesZcreatePlanAbilitiesrn   rn   ro   insertPlanAbilities  s<   


r  c           2      C   s  t  }|| }|d kr3d}tjdjd|d d }| r2|D ]}t|}|d |d< q#d}n(d}t	 }| j
d	d }|rI||d
 }	nd}	tjj|	d}
|
j}|dkr[d}t| jd}t|d d}|dd}tj j|d d}d}| r|D ]^}t|}tjj|d d }| r|D ]#}t|}|d d}|d d}|d d}|d ||d < q|dkr|d |d< |d dkrd|d< tjdj|d dd}d }|D ]}t|}|d!|d  7 }q|d kr|dd  }nd }tjd"j|d dd#}d }|D ]}t|}|d!|d#  7 }q|d kr7|dd  }nd }tjj|d$ d}|jd% |j } | |d&< |j|d'< |j|d(< |d) |d$ krvtjj|d) d}!|!jd% |!j } | |d*< |d+ d, t| d- d. t| d- |d+< |d/ d0ks|d/ d1krtjj|d$ d}"t|d+ d2 tt|"jd% t|"j  d3 |d+< nA|d) |d$ krtjj|d) d}!|!jd% |!j } | |d*< tjj|d) d} t|d+ d2 tt| jd% t| j  d3 |d+< t jj|d dd4! " }#t#jj|d d5 }$d}%d}&|$D ]}'t|'}(|%|(d6  }%|&d }&q |%|& })||d7< ||d8< d9|d:< |#|d;< |t$|# }|)|d<< |d$ |d=< |d> |d?< t%jd@j|d d5dAdBdCdD! }*g }+|*D ]},t|,}-|+&|- qt|d? dkrdE|dF< dG|dH< n|d? dIkrdJ|dH< dK|dF< n|d? dLkrdM|dH< dN|dF< |dO |dP< |d$ |d=< |+|dQ< t'jj|d dR }.|. r|.D ]}/t|/}0||0dS dT}1qq|d dT}1qt(|1d|dUS t(dVdiS )WNFr|   r   rU   r!  r   r"  TREMOTE_ADDRcountry_namer   rt   r   rq   r   r   rZ   rr   r   r   r4  r5  r6  r7  r8  r9  r*  r   rK  rE   r   r   r   rD   r   r   r   r   r  Z
coachCoverr   rO  r   rP  rQ  rR  r   r   r   r   r   r   r   r   r   rS  r   r   r   r   r   r.  r   rC   rW  rX  rY  rZ  r   r   rT  r   rY   rU  r   r1  rV  r   r   r   r[  r  r$  )r5  ZPlanJson)r   r\   r  r\   ))r:   r   r1   r^   r   r   r_   r   ra   rQ   METArd   r   rH   rU   r   r   r   r   r   	b64decoder   r   r$   r!   r    r-   r   r   r   r\  r   rL   r   r   r   re   r   r   r   r   )2rh   r   r   r  r  r  r  gipr   countryName	countryIdr   
codeDecodecodeDecodeSplitr   r  rk   r@  r  rm   r   r  r  r  r   r  r   r   r   r   ZcoachValuesr   r  r   r  r  r  r  r  r  r   r  r  r  r  ZdraftedDetailsdfZdfObjr?  rn   rn   ro   viewPlan_by_id  s6  







 (


r	  c              
   C   s   t  }zU|| }t| jd}|d krQtd tjj	|d d}d|_
|  tjj|d d  }|rItjj	|d d}d	|_
|  tdd
dW S tdddW S  tyw } ztd tdt|iW  Y d }~S d }~ww )Nr   hererq   rv   Tr   rU   rr   r   zReview Submitted Successfullyr[   Fr   r   r   )r:   r   r   r   r   r   rc   r   r^   rd   r   rg   r#   r   r_   r  r   r   r   r   r   )rh   r   r   rj   ZupdatedraftedPlanZreviewdCommentsZupdateStatusr   rn   rn   ro   sendForReview  s*   

r  c                 C   s  t  }z|| }|d kr|d dkr|d dkrd| jv r-| jd dkr-t| jd }nt}d| jv rC| jd dkrCt| jd }nd}|d | }|| }tjddjdd	d
	ddddddddddddd}g }t
|}	| r||| }
|
D ]V}t|}d	|d< |d d |d  |d< |d |d kr|d |d< d|d< nd|d< tjj|d d	  }|r|d |d< |d |d < nd	|d< d|d < || q|td!||	d"W S td#d$d%W S td#d&d%W S  ty } ztd' td(t|iW  Y d }~S d }~ww ))Nrt  rZ   r  rowsr   pager3  r-   r   r   planId__planStatusr  r   ZplanId_id__planNameZplanId_id__pricer"  ZplanId_id__planDescriptionZplanId_id__createdBy_idZplanId_id__originalPlanner_idZplanId_id__originalPlanId_idZplanId_id__licencePolicyZ)planId_id__originalPlanner_id__first_nameZ(planId_id__originalPlanner_id__last_nameZplanId_id__advPlanZliscenceStatusr   r   r   r  r   ZreiviewStatusr  ZreviewTr\   r  totalFInvalid Userr[   r   r   r   )r:   r   ry   re   r,   r   r^   r   r   r_   r  r   ra   r#   r  r   r   r   r   r   r   )rh   r   r   r  r  r  totprogramsr  r  rj   rm   proObjZprocommentsr   rn   rn   ro   programsTobeReviewed  sj   




r  c              
   C   s   t  }z7|| }t| jd}|d kr3td tjj	|d |d dd}|
  tddd	W S td
dd	W S  tyY } ztd tdt|iW  Y d }~S d }~ww )Nr   r  rq   commentsrZ   )rq   r  r   TComments Saved Successfullyr[   Fr   r   r   )r:   r   r   r   r   r   rc   r#   r^   r  rg   r   r   r   r   r   )rh   r   r   rj   createplancomr   rn   rn   ro   createPlanComments  s&   

r  c              
   C   s   t  }zm|| }t| jd}|d kritd d|v rO|d dkrOtjj	|d |d dd}|
  tjj|d d	}|d |_|
  td
ddW S tjj|d d	}|d |_|
  td
ddW S tdddW S  ty } ztd tdt|iW  Y d }~S d }~ww )Nr   r  r   rY   r(  r  rZ   )Exercise_idr  r   rr   Tr  r[   zExercise activated successfulyFr   r   r   )r:   r   r   r   r   r   rc   r'   r^   r  rg   rC   rd   ra  r   r   r   r   r   )rh   r   r   rj   r  Zexstatusr   rn   rn   ro   createEXComments  s6   



r  c              
   C   s   t  }z5|| }t| jd}|d kr1td tjj	|d d
  }td|d dW S tdd	dW S  tyW } ztd
 tdt|iW  Y d }~S d }~ww )Nr   r  rq   r   Tr  r[   Fr   r   r   )r:   r   r   r   r   r   rc   r#   r^   r   r_   r  r   r   r   r   r   )rh   r   r   rj   r  r   rn   rn   ro   reviewsofplan;  s   

r  c           
      C   s@  t  }z}|| }|d kryg }tjddjddddddd	d
dddddddddd}|D ]B}t|}t|d
  |d
 dkrPt	jj
|d
 d}|rP|j|d
< |d	 dkrkt	jj
|d	 d}|rg|j|d	< nd|d	< || q.td|dW S tdddW S  ty }	 ztd tdt|	iW  Y d }	~	S d }	~	ww )Nr3  r|   rZ   r   r  
planId__idplanId__priceplanId__indianPriceplanId__indianIosPriceplanId__iosPricer  planId__iosStatusplanId__planNameplanId__planLogoplanId__programType_idplanId__planPhotor  r  createdBy__last_nameplanId__planDescriptionrL  Tr   Fr   r[   r   r   r:   r   r   r^   r   r   r_   ra   rc   rF   rd   rN  r   r   r   r   r   r   
rh   r   r   r  r   rm   r   iosPricevalindianiosPricevalr   rn   rn   ro   getPlanPricesN  F   



r/  c              
   C   s  t  }z_|| }|d kr[t| jd}tjj|d d}t	jj|d d}|r/|j
|_nd|_t	jj|d d}|rB|j
|_nd|_|d |_|d	 |_|  td
ddW S tdddW S  ty } ztd tdt|iW  Y d }~S d }~ww )Nr   r  rr   r#  )rN  r   r"  r!  r$  Tz!Plan details updated successfullyr[   Fr   r   r   )r:   r   r   r   r   r   r   r^   rd   rF   rM  r   r)  r*  r   rg   r   r   r   r   r   )rh   r   r   rj   r   r-  r.  r   rn   rn   ro   updatePlanPricess  s0   





r1  c           
      C   s@  t  }z}|| }|d kryg }tjddjdddddddd	d
ddddddddd}|D ]B}t|}t|d	  |d	 dkrPt	jj
|d	 d}|rP|j|d	< |d dkrkt	jj
|d d}|rg|j|d< nd|d< || q.td|dW S tdddW S  ty }	 ztd tdt|	iW  Y d }	~	S d }	~	ww )Nr3  r|   rZ   r  r  r   r!  r"  r#  r  r$  r%  r&  r'  r(  r  r  r)  r*  r   rL  Tr   Fr   r[   r   r   r+  r,  rn   rn   ro   getPublishedPlanPrices  r0  r2  c           (      C   s  d}t jjdd}|j}t }g }d}t }| jdd }|r(||d }	nd}	t	jj|	d}
|
j
}|d	kr:d
}|d
krC|d7 }n|d7 }|d7 }|| t|}|D ]}t|}|d d t|d  }t|d}t|d}|d |d< |d d |d  |d< |d d |d  |d< t|d dkrd|d< n|d
krt|d t| |d< |d |d< n|d |d< |d dkrd|d< d |d!< n|d d"krd#|d!< n
|d d$krd%|d!< |d& d urtj|d&  |d&< |d' d urtj|d'  |d'< tjj|d( d}t|jd t|j |d)< tjd*j|d d+d,}d-}d-}|D ]}t|}|d.|d,  7 }|d.|d,  7 }q/|d-krY|dd  }|dd  }nd-}d-}tjd/j|d d+d0}d-}d-}|D ]}t|}|d.|d0  7 }|d.|d0  7 }qr|d-kr|dd  }|dd  }nd-}d-}	 |d1 d2 t| d3 d4 t| d3 |d1< |d5 d6ks|d5 d7krtjj|d8 d}t|d1 d9 tt|jd t|j  d: |d1< n#tjj|d( d} t|d1 d9 tt| jd t| j  d: |d1< t jj|d d+d;! " }!t#jj|d d< }"d}#d}$|"D ]}%t|%}&|#|&d=  }#|$d }$q-|#|$ }'|'|d>< ||d?< ||d@< ||dA< ||dB< ||dC< dD|dE< |!|dF< |$| qVt%d
||dGS )HNFrZ   rr   z  SELECT Plan_plan.*, Plan_plan.goals as planGoal__goalName, utility_programtype.programTypeName as planType,Subscriber_user.first_name as createdBy_id__first_name,Subscriber_user.last_name as createdBy_id__last_name,Plan_plan.goals as planGoal,Plan_plan.price as planPrice,Plan_plan.originalPlanner_id as originalPlanner,Plan_plan.createdBy_id as createdBy,utility_programtype.programTypeName as programType__programTypeName,Subscriber_user.avatar as createdBy_id__avatar,Subscriber_user.id as coachId FROM Plan_plan left join utility_programtype on Plan_plan.programType_id = utility_programtype.id left join Subscriber_user on Plan_plan.createdBy_id = Subscriber_user.id left join Plan_selectedabilities on Plan_plan.id = Plan_selectedabilities.plan_id left join Plan_plangoals on Plan_plan.id = Plan_plangoals.plan_id left join Plan_plancountry on Plan_plan.id = Plan_plancountry.plan_id r  r  r   r  r   T, where Plan_plancountry.country_id = 88 and - where Plan_plancountry.country_id != 88 and r  r   r   rU   r   r   r   r   r   r(  r   r   r   rK  r*  r   r   r   rT  r   r   r   r   r   r   r   ru   r   rO  rE   r   r   r   r   rD   r   r   rP  rQ  rR  r   r   r   r   r   r   r   r   r   r   r   r   r  rS  r  r   r   r   )r\   r  r  )&rG   r^   rd   r  r   r  rQ   r   r   rH   rU   r  r>   ra   r   r   r   r   r   re   r  r  r*   r+   r-   r   r   r!   r   r   r_   r    rL   r   r   r   r   r   )(rh   r  r  r  r  r   queryr  r  r   r  r  r  rk   rl   r   r   r   r  r   r   r  rm   r   r   r  r   r   r  r   r  r   r   r  r  r  r  r  r  r   rn   rn   ro   store  s   









 r7  c           C      C   s&  d}t jjdd}|j}g }g }t| jd}t }| j	dd }|r-|
|d }	nd}	tjj|	d}
|
j}|d	kr?d
}tjjd	d }|D ]}t|}||d  qJtjtd	d  }|D ]}t|}||d  qf|d
krt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&j|d' ddd|d(d)d}n/t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&j|d' ddd|d(d)d}g }g }g }d*}|D ]O}t|}|d d+ t|d  }t|d,}t|d-}|d |d.< tjj|d d/ }| r*|D ]}t|}q|d0 |d0< nd1|d0< |d d2 |d  |d3< |d |d4< t|d d*krNd5|d< n|d
kret|d% t| |d< |d |d4< t jd6j|d d7d8}d9} |D ]}!t|!}"| d:|"d8  7 } qx| d9kr| dd  }#nd9}#t!jd;j|d d7d<}$d9}%|$D ]}!t|!}"|%d:|"d<  7 }%q|%d9kr|%dd  }&nd9}&|d  |d krt"jj|d  d}'|'j#}(|(|d=< |d d> t|# d? d@ t|& d? |d< |d! dAks|d! dBkr(t"jj|d d})t|d dC tt|)j#d2 t|)j$  dD |d< nA|d  |d krFt"jj|d  d}'|'j#d2 |'j$ }(|(|d=< t"jj|d  d}(t|d dC tt|(j#d2 t|(j$  dD |d< t%jj|d d7dE& ' }*t(jj|d dF }+d*},d}-|+D ]}.t|.}/|,|/dG  },|-d }-q|,|- }0||d  |#|dH< |&|dI< |d |dJ< dK|dL< |*|dM< |t|* }|0|dN< |d |dO< |d |dP< |d |dQ< |dJ dRkrdS|dT< dU|dJ< n|dJ dVkrdW|dT< n|dJ dXkr dY|dT< |d d urt)j*|d  |d< |d d ur t)j*|d  |d< |d |dZ< |d |dO< || qt+jd[d\d}1g }2|1D ]}3t|3}4d]|4d^< |2|4 q@t"jj|d_ }5g }6|5D ]}7t|7}8t,jj|8d dd`' }9|9|8da< tjj|8d d/ }:|:D ]}t|};q|8db d ur|8db |8dc< nd9|8dc< |7d |8dO< |7dd d2 |7de  |8d3< g }<tjj|8d dfd}=|=D ]}>t|>}?|<|?d  q|<|8dg< t-jj|8d d/ }@|@ r|@D ]}At|A}B|Bdh dikrd|8dj< qdk|8dj< qnd|8dj< |6|8 q^t.d
||2|6|||dlS )mNFrZ   rr   r   r  r  r   r  r   Tr#  rq   rz   r{   r|   rU   r   ru   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  rE   r   r   r   r   rD   r   rO  rP  rQ  rR  r   r   r   r   r   r   r   r   rS  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   rB   r   rs  r  r  )/rG   r^   rd   r  r   r   r   r   rQ   r   r   rH   rU   r"   r   r_   ra   r   r   r   r   r   r   r   r   r   r   r/   r   re   r  r  r!   r    r-   r   r   rL   r   r   r   r*   r+   r   r0   r1   r   )Crh   r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r   r   r  r   r  rk   rl   r   r   r   r  r  r  r   r  rm   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  rn   rn   ro   r   =  s  






 



r   c                 C   s  g }t jjdd }|D ]{}t|}|d }|d }|d d t|d  }t|d}t|	d}	|	d |d< d	}
d
}d}|}dt|d  }|d d |
 d | }|d d | d | }|d d | d | }|
||d |
||d |
||d qt|dkr|D ]L}|d }|d }dd}d|i}ddi}tj|t||d}| }t|j tjj|d d}| rtd qtjj||d |d}|  qtdddS tdd dS )!NrZ   r}   rU   r   r   r   r   r   r4  r5  r6  r7  r5  r8  r9  r:  r;  rv   r<  r=  r4  r>  r?  r@  rB  r   rC  TzResults Inserted Successfullyr   Fz	Empty Set)r   r^   r   r_   ra   r   r   r   r   r   r   r  rJ  rK  rL  r   rM  rc   rN  r$   r   r  rg   r   )rh   rO  rl  rm   rl   rv   r   r   r   r   rd  re  rf  rg  r;  rh  ri  rj  rk  r  rm  rn  rA  ro  rp  rq  rr  rn   rn   ro   goo_shorten_url  sX   


r8  c           :   
   C   s|  t  }z|| }|d kr|d }tjjdd}|j}t| j	d}g }g }t
 }	|d }
tjj|
d}d}|d dkrF|d	7 }n|d
7 }|d dkrU|d7 }n(tjj|d d }|D ]}t|}|t|d  qb|dd| d 7 }t|d |	| t|	}tjjddd tdd }|jdkr|d dkrtjdjdddd tdd }t|t| }nXtjdjdddd tdd }t|t| }n:|d dkrtjdjdddd tdd }t|}ntjdjdddd tdd }t|}g }g }|D ]e}t|}t jj|d d }|! ra|D ]$}t|}|d "d }|d! "d"}|d "d#}|d$ ||d% < q<t#jj|d dd&$ }t#jj|d dj%d'd(j%d)d*$ }||d+< ||d,< d%|d-< d%|d.< d)|d/< |d0 d1 t|d  }t&'|(d2}t|"d3} | d |d4< |d5 d6 |d7  |d8< |d5 d6 |d7  |d5< d9|v r|d9 d:kr|jdkr>|d dkrtjdjdddd td;d< }|d= |d< |d |d>< n'tjdjddd?t)dd@  tdAdB }|dC |d< |d |d>< t*|d d%kr<dD|d< n`|d dkrttjdjdddd td;d< }t| t+jj|dE}!|!j,}t+j j|d= dE}"n0tjdjddd?t)dd@  tdAdB }t+jj|dE}!|!j,}t+j j|dC dE}"|"D ]}#t|#}$|$dF }%q|%|d< t|d d%krdD|d< nt*|d d%krdD|d< n|jdkrA|d dkrtjdjdddd tdd }t|| }t|dG t| |d< |d |d>< ntjdjddd?t)dd@  tdd }t|| }t|d t| |d< |d |d>< nP|d dkrjtjdjdddd tdd }|dG |d< |d |d>< n'tjdjddd?t)dd@  tdd }|d |d< |d |d>< t|d d%krdD|d< |dH dIkrdJ|dH< dK|dL< n|dH dMkrdN|dH< dO|dL< n|dH dPkrdQ|dH< dR|dL< |dS d urt-j.|dS  |dS< |dT d urt-j.|dT  |dT< tjj|dU d}&t|&j/d6 t|&j0 |dV< t1jdWj|d ddX}'d)}d)}(|'D ]}t|}|dY|dX  7 }|(dY|dX  7 }(q|d)krC|dd  })|dd  }*nd)})d)}*t2jdZj|d dd[}+d)},d)}-|+D ]}t|}|,dY|d[  7 },|-dY|d[  7 }-q\|,d)kr|,dd  }.|,dd  }/nd)}.d)}/t3|.d\kr|.d d\ }.|.d]7 }.t3|)d^kr|)d^ dkr|)d d\ })n|)d d^ })|)"d})|)d% d] })|d_ d` t|* da db t|. da |d_< |dc ddks|dc dekr	tjj|df d}0t|d_ dg tt|0j/d6 t|0j0  dh |d_< n#tjj|dU d}1t|d_ dg tt|1j/d6 t|1j0  dh |d_< t4jj|d ddi5 $ }2t6jj|d dj }3d%}4d}5|3D ]}6t|6}7|4|7dk  }4|5d }5qM|4|5 }8|8|dl< |)|dm< |)|dn< |*|do< |.|dp< |/|dq< dr|ds< |2|dt< || q#t7d'||j||duW S t7dvdwdxW S  t8y }9 zt9:dy t7dzt|9iW  Y d }9~9S d }9~9ww ){Nr   rZ   rr   r   rU   r3  r"  r   r4  r5  ZcategoryLevelr  a   Plan_plan.id is not null and activationStatus=1 and planStatus=1 AND Plan_plan.iosStatus = 1 and Plan_plan.programType_id = 1 GROUP BY Plan_plan.id, Plan_selectedabilities.plan_id,Plan_plangoals.plan_id ORDER BY Plan_plan.programType_id,Plan_plan.planName ASCcategorymappedAbility_id Plan_plan.id is not null and activationStatus=1 and planStatus=1 AND Plan_plan.iosStatus = 1 and Plan_selectedabilities.ability_id in ( r  z ) GROUP BY Plan_plan.id, Plan_selectedabilities.plan_id,Plan_plangoals.plan_id ORDER BY Plan_plan.programType_id,Plan_plan.planName ASCz--------------------------SGrI  r   r  rH  r   r  r  r  r  r  r   r4  r5  r6  r7  r8  r9  r   r>  Tr?  r   r@  rA  rB  rC  rD  rE  r   r   r   r   r   r   r   r(  r   r&  r'  r  r  r)  r   r  r#  r  r  r   rK  rL  rN  r*  r   r   rT  r   r   r   rU  r   r   rV  r   r   ru   r   rO  rE   r   r   rD   r      ...   r   rP  rQ  rR  r   r   r   r   r   r   r   r   r   r   r   r   r  rS  r  r   r   r   )r\   r  r   r  r  Fr   r[   r   r   );r:   r   rG   r^   rd   r  r   r   r   r   r   r  r-   r&   r   r_   ra   r   r   joinrc   r  r>   r   r  r  r   r   r"   r   r  r  r$   r   r   r   r   r  r   r   r   r   re   rF   rN  r*   r+   r   r   r!   r    r  rL   r   r   r   r   r   r   ):rh   r   r   r   r  r  requestJsonr   r   r  r   r  r6  
categoriesrm   r   r  r  r  r  r  r  rk   rl   r  r  r  r  r  r  r   r   r   r  r  rN  r  r  r  r   r  r   r  r   r   r  r   r  r   r   r  r  r  r  r  r  r   r   rn   rn   ro   filter_abilityO  s  





















 


rC  c           ;   	   C   s  g }i }g }g d}ddg}ddg}t  }|D ]Y}tjj|d }|D ]}	t|	}
|t|
d  q&|D ]8}|D ]2}dt| d	 }|d
krQ|d7 }n|g krZ|d7 }n|dd	| d 7 }|
| t|}tjjddd tdd }|dkrtjdjdddd tdd }t|}ntjdjdddd tdd }t|}g }g }|D ]}t|}tjj|d d }| r|D ]#}	t|	}
|
d d}|d d}|d d }|
d! ||d" < qtjj|d dd# }tjj|d djd$d%jd&d' }||d(< ||d)< t|d }t|d }||d*< ||d+< d"|d,< d"|d-< d&|d.< 	 |d/ d0 t|d  }t|d1}t|d2} | d |d3< |d4 d5 |d6  |d7< |d4 d5 |d6  |d4< |dkr|dkrtjdjdddd td8d9 }t| tjj |d:}!|!j!}tj j|d; d:}"n0tjdjddd<t"dd=  td>d? }tjj |d:}!|!j!}tj j|d@ d:}"|"D ]}#t|#}$|$dA }%q|%|d< t#|d d"krdB|d< nit$|d d"krdB|d< n[|dkr7tjdjdddd tdd }|dC |d< |d |dD< n'tjdjddd<t"dd=  tdd }|d |d< |d |dD< t#|d d"krkdB|d< |dE dFkr{dG|dE< dH|dI< n|dE dJkrdK|dE< dL|dI< n|dE dMkrdN|dE< dO|dI< |dP d urt%j&|dP  |dP< |dQ d urt%j&|dQ  |dQ< t'jj |dR dS}&t|&j(d5 t|&j) |dT< t*jdUj|d ddV}'d&}(d&})|'D ]}	t|	}
|(dW|
dV  7 }(|)dW|
dV  7 })q|(d&kr|(dd  }*|(dd  }+nd&}*d&}+t+jdXj|d ddY},d&}-d&}.|,D ]}	t|	}
|-dW|
dY  7 }-|.dW|
dY  7 }.q)|-d&krS|-dd  }/|-dd  }0nd&}/d&}0t,|/dZkrh|/d dZ }/|/d[7 }/t,|*d\kr|*d\ dkr}|*d dZ }*n|*d d\ }*|*d}*|*d" d[ }*|d] d^ t|+ d_ d` t|/ d_ |d]< |da dbks|da dckrt'jj |dd dS}1t|d] de tt|1j(d5 t|1j)  df |d]< n#t'jj |dR dS}2t|d] de tt|2j(d5 t|2j)  df |d]< t-jj|d ddg.  }3t/jj|d dh }4d"}5d}6|4D ]}7t|7}8|5|8di  }5|6d }6q|5|6 }9|9|dj< |*|dk< |*|dl< |+|dm< |/|dn< |0|do< dp|dq< |3|dr< t|ds t| ds | }:|||:< ||dt< ||du< q|| q=q8qt0d$|dvS )wN)rZ   rY   r1  r  r  r6  r   r0  r'  Zandroidr9  r;  a   SELECT Plan_plan.*, Plan_plan.goals as planGoal__goalName, utility_programtype.programTypeName as planType,Subscriber_user.first_name as createdBy_id__first_name,Subscriber_user.last_name as createdBy_id__last_name,Plan_plan.goals as planGoal,Plan_plan.price as planPrice,Plan_plan.originalPlanner_id as originalPlanner,Plan_plan.createdBy_id as createdBy,utility_programtype.programTypeName as programType__programTypeName,Subscriber_user.avatar as createdBy_id__avatar,Subscriber_user.id as coachId FROM Plan_plan left join utility_programtype on Plan_plan.programType_id = utility_programtype.id left join Subscriber_user on Plan_plan.createdBy_id = Subscriber_user.id left join Plan_selectedabilities on Plan_plan.id = Plan_selectedabilities.plan_id left join Plan_plangoals on Plan_plan.id = Plan_plangoals.plan_id left join Plan_plancountry on Plan_plan.id = Plan_plancountry.plan_id  where Plan_plancountry.country_id = z and r  z Plan_plan.id is not null and activationStatus=1 and planStatus=1 AND Plan_plan.iosStatus = 1 and Plan_plan.programType_id = 1 GROUP BY Plan_selectedabilities.plan_id,Plan_plangoals.plan_id ORDER BY Plan_plan.programType_id,Plan_plan.planName ASCz Plan_plan.id is not null and activationStatus=1 and planStatus=1 AND Plan_plan.iosStatus = 1 and Plan_selectedabilities.ability_id = 0 GROUP BY Plan_selectedabilities.plan_id,Plan_plangoals.plan_id ORDER BY Plan_plan.programType_id,Plan_plan.planName ASCr<  r  zz ) GROUP BY Plan_selectedabilities.plan_id,Plan_plangoals.plan_id ORDER BY Plan_plan.programType_id,Plan_plan.planName ASCrZ   rI  r   r  r   r  r  r  r  r  rU   r   r4  r5  r6  r7  r8  r9  r   r>  Tr?  r   r@  rA  rB  r<  r=  rC  rD  rE  r   r   r   r   r   r   r   r(  r   r  r  rL  r)  r  r#  r  r  r   rN  rK  r*  r   r   r   rT  r   r   r   rU  r   r   rV  r   r   ru   r   rr   rO  rE   r   r   rD   r   r=  r>  r?  r   rP  rQ  rR  r   r   r   r   r   r   r   r   r   r   r   r   r  rS  r  r   r   r   _r  r  )r\   r  )1r   r  r&   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   rc   rF   rd   rN  r   r  re   r*   r+   r-   r   r   r!   r    r  rL   r   r   r   );rh   ZabilitiesArrZmairArrr   rB  r   ZdeviceTypeArrr  catrm   r   ctZdevTr6  r  r  r  r  r  r  rk   rl   r  r  r  r  r  r  r  r  r   r   r   r  r  rN  r  r  r  r   r   r  r   r  r   r   r  r   r  r   r   r  r  r  r  r  r  r   ZcatNamern   rn   ro   loadCategoryFiltert  sF  





 
















  \rG  c                 C   sZ  t  }	z|| }|d }|d k	rt }|d }tjjdd}|j}t| j	
dd | j	
ddkr@t| j	
d}ni }|d }	tjj|	d}
g }tjj|djdd	 }t|d
krotjj|djdd	 }| r|D ]}t|}qv|d }|d }	tjj|d }| r|D ]}t|}|| qtjj|d }tjj|dd  }tjdj|dddd}|D ]}t|}|d }|d }qg }g }g }g }g }g }g } i }!i }"d}#i }$d
}%t| |}&t|& tjj|ddddd}'g }(d})|' r2|'D ]!}*t|*}+t|+d dd|+d< |(|+ |+d |!|+d < qg },|D ]}t|}-tjdj|-d dd}.d}/|.D ]}0t|0}1|/d|1d  7 }/qP|/dkrl|/dd  }2nd}2tjdj|-d dd}3d}4|3D ]}0t|0}1|4d|1d  7 }4q|4dkr|4dd  }5nd}5|5|-d< |2|-d< |5|-d < |2|-d!< |-d" d urtj |-d"  |-d"< d#|-d$< d%|-d&< d'|-d(< d)|-d*< ||-d+< ||-d< ||-d,< |dkrqd-|v rq|d- d.krq|
j!d/kr&|d0 d1kr|-d2 |-d3< |-d3 |-d4< |-d2 |-d5< n|-d5 |-d3< |-d3 |-d4< t"|-d3 d
kr%d6|-d3< n|d0 d1kr9t#j j|-d2 d7}6nt#j j|-d5 d7}6|6D ]}7t|7}8|8d8 }9qF|9|-d3< |d0 d1krc|-d2 |-d5< t"|-d3 d
krpd6|-d3< nbt"|-d3 d
krd6|-d3< nT|
j!d/kr|d0 d1kr|-d9 |-d3< |-d3 |-d4< n-|-d3 |-d3< |-d3 |-d4< n |d0 d1kr|-d9 |-d3< |-d3 |-d4< n|-d3 |-d3< |-d3 |-d4< t$|-d3 d
krd6|-d3< d}:tj j|dd:};d }<| r|;D ]}=t|=}>|>d }<qt%jj|<d; }?|? re|?D ]`}@t|@}Ag |Ad<< g |Ad=< t&jd>j|Ad d? }B|B r]|BD ]5}Ct|C}D|Dd@ dkrD|Dd@ d krD|Ad< |Dd@  |DdA dkr[|DdA d kr[|Ad= |DdA  q'|A|"|AdB < qt'jj|-d dddCdDddE(d}E|ED ]}Fd}Gt|F}H|%d }%|:d }:t)|:|HdF< t*jj|Hd dGdHdDddI(d}I|ID ]}Jd}Kt|J}L|%d }%|Gd }GdJt)|Gd  |LdK< t)|:dL t)|G |LdF< t+jj|Ld dMdNdOddPdQ(d}M|MD ]d}Nt|N}O|%d }%|Kd }Kt)|:dL t)|G dL t)|K |OdF< dRt)|Kd  |OdS< t,jj|Od dTdUdOddVdWdX(d}P|PD ]}Qd}Rt|Q}S|%d }%|)d })t)|:dL t)|G dL t)|K dL t)|) |SdF< dYt)|)d  |SdZ< t-jd[j|Sd d\d]d^dOdd_dWd`dadbdcdddedfdgd dhdidjdkdldmdn(d}T|TD ]|}Ud}Vt|U}W|%d }%|#dot)|Wdb  7 }#|Wdc d ur|Wdc dkr|Wdc dpkr|#dot)|Wdc  7 }#|Rd }Rt)|:dL t)|G dL t)|K dL t)|) dL t)|R |WdF< |Wd] |Wdq< t.jj|Wd drdldsdtdOddudWdvdhdidjdkdmdn(d}X|XD ]}Yt|Y}+|%d }%|Vd }Vt)|:dL t)|G dL t)|K dL t)|) dL t)|R dL t)|V |+dF< dwt)|Vd  |+dx< |+d |&dy v rLd)|+dz< d|+d{< d
|+d|< n|+d |&d} v rbd)|+dz< d|+d~< d
|+d|< nd'|+dz< d
|+d|< |+dv dkrud)|+dz< 	 d|!v rd|+d< |<d ur|+d |"v r|"|+d  }Zd)|+d< |Zd |+d< |Zd |+d< |Zd |+d< |Zd |+d< |Zd |+d< |Zd |+d< |Zd |+d< |Zd |+d< |Zdm |+d< |Zdn |+d< nd'|+d< ||+ q	 i }[d|!v rddi}[d|Wd< |W|[|d}\||\ g }q~	 i }]d|!v rddi}]d|Sd< |S|]|d}^||^ g }q"	 i }_d|!v r+ddi}_d|Od< d|!v r8ddi}_d|Od< |O|_|d}`||` g }qi }ad|!v rVddi}ad|Ld< d|!v rcddi}ad|Ld< |L|a|d}b||b g }q|H|d}c||c g }qzd'}dd'}ed'}fd
}gd
}hdt)|#dd   d }i|/|i t0|}jg }k|jD ]i}lt|l}Wd
|Wdh< |Wd dkr|Wd dkrd)}dn"|Wd dkrd)}end'}dd'}en|Wd dkrd)}dn	|Wd dkrd)}e|Wd dkrd)}f|fd)kr|Wd dkrd}gnd}g|Wd dkrd}hnd}h|k|W qd}md}n|gdkr|ndot)d 7 }n|hdkr+|ndot)d 7 }n|dd'kr8|mdot)d 7 }m|ed'krE|mdot)d 7 }mt|md t)|d d t)|e  |ndkrtd|n tdt)|ndd   d  dt)|ndd   d }o|/|o t0|}p|pD ]}qt|q}r|k|r q|mdkrtd tdt)|mdd   d  dt)|mdd   d }s|/|s t0|}t|tr|tD ]}ut|u}v|k|v qt1|	|k},|,g kr|kD ])}w|wd }xd'}y|,D ]}z|zd |xkr|zd |wd< d)}yq|yd'krd
|wd< qq|kD ]"}{t2jj|{d d }||| r(||D ]}}t|}}~| |~ qqg }t3 }|kD ]}|d |vrF|| |4|d  q1|-||| |(|dddddddddddddddddddddddddddddddddddddddddddddddd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͜	}$q6t5d|$iW S t5d'ddМW S t5d'ddМW S  t6	y, } zt78dҡ t5dt)|iW  Y d }~S d }~ww )NrU   r   rZ   rr   r   rh   r   r0  rm  r   r1  rq   r   r   r-   r   r  r   rn  r_   rW  r  r   ro  rD   r   r   rE   r   r   rS  r   r2   ru   rp  rq  rr  rs  Fr  Tr  r  r   r&  r'  rH  r"  r   r)  r   r   r   rK  rL  rN  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  rt  r  r  r  r  r  r  r  ru  rf   r  r  rv  rw  r  r  rF  rG  rE  r#  rH  r`  r  r  r   r!  rx  ry  r$  rz  r`   r%  r{  r|  r   r}  r~  r  r  r  r  	setStatusr  r  r  r  r  ZWorkWeightDoner*  ZadvTimeDoner+  ZadvDistanceDoner  ZadvSpeedDoneZadvHeightDoner  r  r6  r  rY   r  r  r  r2  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.id IN ( z )r  r  r  r  ZbaseeeeeeeeeeexxxxxxxxxZddddddddolympicZbaseExr  r  r  rW  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rt   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  )	r5  baseTmaxArrr6  metabolicValuesr  r7  r  r  r  r   r  r[   r   r   r   )9r:   r   r   r  rG   r^   rd   r  rc   r   r   r   r   r-   rL   r   r_   r  r   ra   r)   r   r   r   r   r   r  r   r  r    r!   r*   r+   r   re   rF   r  rM   r   r   r   r   r   r   r   r   r   r  r>   r  r(   r`   rb   r   r   r   r   )rh   r   r   r  r  r   r  r  r  r   r  rK  r  rk   r   rk  ZbaseTmaxDetailsZbtmZbtmObjr   r  r  r  r  r   r  r8  r9  r:  r;  r<  r=  rL  r  r  r>  r?  r   r  r  r  rL  r  rl   r  r@  r   r   rm   r   r   r   r  r   r  rN  r  r  rA  r  r  r  r  r  r  r  r  r  r  rB  rC  rD  rE  rF  rG  rH  rI  rJ  rK  rM  rN  rO  rP  rQ  rR  rS  rT  rU  r(  rV  r  r  rW  r  rX  r  rY  r  rZ  r[  r  r  r  r  r  r\  r  r]  r^  r  r  ZxopValr  r  r  ZxbpValr  r  r  r  r  r  r  exeidexMetabolicValuesmevmevObjrp  seenr_  r   rn   rn   ro   completePlanJsonAdvanced_  s>  










"







$

	






















 

























*
rR  c              
   C   s
  t  }z|| }|d krt }|d dkr|d dkrd| jv r1| jd dkr1t| jd }nt}d| jv rG| jd dkrGt| jd }nd}|d | }|| }d}|| t|}	g }
t	|	}|	r|	|| }|D ]]}g }t
|}tjj|d d	 }| r|D ]}t
|}|| q||d
< |d dkr|d dkr|d d krd|d  |d< n|d dkr|d d krd|d  |d< |
| qntd|
|dW S tdddW S tdddW S  ty } ztd tdt|iW  Y d }~S d }~ww )Nrt  rZ   r  r  r   r  a  SELECT *,utility_exercise.id AS exID,utility_videos.videoLink AS video_id__videoLink,utility_videos.youtubeUrl AS video_id__youtubeUrl FROM `utility_exercise` LEFT JOIN `utility_advexercises` ON utility_advexercises.exercise_id = utility_exercise.id LEFT JOIN `utility_videos` ON utility_exercise.video_id = utility_videos.id WHERE utility_exercise.accessLevel =1 AND utility_exercise.id IS NOT NULLexIDrJ  Z	metValuesvideo_id__youtubeUrlrh   https://www.youtube.com/watch?v=&https://s3.amazonaws.com/stratfitmediaTr  Fr  r[   r   r   r   )r:   r   r   r  ry   re   r,   r  r>   r  ra   r(   r^   r   r_   r   r   r   r   r   r   r   )rh   r   r   r  r  r  r  r  r6  r  r  r  rj   rm   ZmetValuesArrr  Z
metaValuesZmetValZmetaObjr   rn   rn   ro   exerciseTobeReviewedI  sb   




rW  c              
   C      t  }|| }zQ|dkrR|d }g }g }tjj|dd }|D ]}t|}||d  q#t	jj|ddd}	|	D ]}
t|
}|| q>t
d|dW S t
d	d
dW S  tyx } ztd t
dt|iW  Y d }~S d }~ww )Nr   rU   r   
exerciseIdr   rT   Tr   Fr   r[   r   r   )r:   r   rO   r^   r   r_   r   ra   r   rC   r   r   r   r   r   rh   r   r   r   exArrZexValuesZuserExDetailsr  r  	exDetailsrm   r   r   rn   rn   ro   getuserExDetails  ,   

r]  c              
   C   rX  )Nr   rU   r   r   r   r   Tr   Fr   r[   r   r   )r:   r   rO   r^   r   r_   r   ra   r   r   r   r   r   r   r   rZ  rn   rn   ro   getuserPlans  r^  r_  c                 C   s   t  }z|| }|d }|d krtj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}g }g }g }|D ]}t|}	|	d |	d< tjj|	d d }
|
D ]]}t|}||	d< |d |	d< |d |	d< |d |	d< |d  |	d < |d! |	d!< |d" |	d"< |	d d#kr|	d d$kr|	d d krd%|	d  |	d< qU|	d d$kr|	d d krd&|	d  |	d< qU|	d d#kr|	|	 |	d d'kr|	|	 |	d d(kr|	|	 q<t
|||d)W S W d S  ty } ztd* t
d+t|iW  Y d }~S d }~ww ),NrU   rB   r   rT   ra  rf  rb  rh  exerciseTypeexIconpreExInstructionspostExInstructionsr  weightExistsdistanceExists
timeExists
repsExistsr  setInstructionsheightExistsspeedExiststimeShortestre  rc  rT  rS  rJ  ZextracoloumnstmaxReps
tmaxWeighttmaxDistancetmaxTime	tmaxSpeed
tmaxHeightrZ   r   rU  rV  r   rY   r  r   r   )r:   r   rC   r^   r   r   r_   ra   rK   r   r   r   r   r   r   )rh   r   r   r   r  ZActiveExArrZInActiveExArrZRejectedExArrrj   r  ZadvExercisesadvZadvObjr   rn   rn   ro   getDraftedExs  s   




4
rs  c              
   C   s  t  }z?|| }t| jd}|d }|d krAtjj|d d}|j	d krH|j	dkrHtjj|j	d}|j
dkrDtddd	W S td
 tjjd5i d|jd|jd|jddd|jd|jd|jd|jd|jd|jd|jd|jd|jd|d|jd|jd|jd|jd|jd|jd|j d |j!d!|j"d"|d#|}|#  |j$|_%|j$|_	|#  t&jj'|j$d$( }|D ]}	t)|	}
t&jj|
d% |j$||d&}|#  qt*jj'|j$d$( }|D ]}t)|}t*jj|d' |j$||d(}|#  qt+jj'|j$d)( , }t+jj|j$|d* |d+ d||d,}|#  t-jj|j$d-d.d|d/d0}|#  td1d2d	W S W d S  t.yc } zt/0d3 td4t1|iW  Y d }~S d }~ww )6Nr   rU   rq   rr   r   r   FzCopied plan not published yet.r[   zNew plan copyr.  r   r   r~   r   r   r   r`  r,  r2   r   r   ru   r   r  proposedStater   r   r   r*  r)  r   r  r   r  r   r  r  r  r  r  r$  r#  )r"  r$  r#  r   r   r  r  rZ   r  r  TzPlan copied.r   r   rn   )2r:   r   r   r   r   r   r   r^   rd   copyPlan_idr~   r   rc   r  r.  r   r   r   r   r   r`  r,  r2   r   r   ru   r  rt  r   r   r   r*  r)  r   r  rg   rU   r  r    r   r_   ra   r!   r   r  r?   r   r   r   r   )rh   r   r   rj   r   r  ZexistingplanZplanCopyr  rm   r   Z	goalscopyZplanAbilitesobjZdictValZabilitiescopyZdraftedPlanDetailsZdraftplancopyplanMonetizationr   rn   rn   ro   plancopy  s   


	


	R
rx  c              
      s  t  }z|| }td }|d kr|d }|d }tjjdd}|j}| jddkr5t	
| jd}ni }|d }	tjj|	d}
|d}t| |d u rctd	 |d t| }td
|iW S td tjj|djdd }t|dkrtjj|djdd }| r|D ]}t|}q|d   fddt|D }t| || }td
|iW S W d S tdddW S  ty } ztd tdt|iW  Y d }~S d }~ww )NdefaultrU   r   rZ   rr   r   r   r   z#-------COMING FROM SERVER----------r   z"-------COMING FROM CACHE----------r0  rm  r   r1  rq   c                    s    g | ]\}}|d   kr|qS r  rn   ).0r_  valuerk  rn   ro   
<listcomp>  s     z*completePlanJsonCached.<locals>.<listcomp>Fr   r[   r   r   )r:   r   rR   rG   r^   rd   r  r   r   r   r   r-   rc   r  getPlanStructurer   rL   r   r_   r  r   ra   	enumerater   r   r   r   )rh   r   r   rS   r  r   r  r  r  r   r  loaddatar  rk   r   Z	dataIndexr@  r   rn   r|  ro   completePlanJsonCachedZ  sP   



	
r  c           \      C   sD  t d }| jddkrt| jd}ni }tjjdd }g }|	 r |D ]}t
|}|d }tjj|dd  }tjd	j|d
ddd}	|	D ]}
t
|
}|d }|d }qTg }g }g }g }g }g }g }i }i }g }i }d}t| |}t| tjj|ddddd}g }d}|	 r|D ] }t
|}t|d dd|d< || |d ||d < qg } tjdj|d dd}!d}"|!D ]}#t
|#}$|"d|$d  7 }"q|"dkr|"dd  }%nd}%tjdj|d dd}&d}'|&D ]}#t
|#}$|'d|$d  7 }'q |'dkr|'dd  }(nd}(|(|d< |%|d< |(|d< |%|d< |d d ur>tj|d  |d< d |d!< d"|d#< d$|d%< d&|d'< ||d(< ||d< ||d)< d})tjj|d ddd*d+dd,d}*|*D ]}+d},t
|+}-|d }|)d })t|)|-d-< tjj|-d d.d/d+dd0d}.|.D ]e}/d}0t
|/}1|d }|,d },d1t|,d  |1d2< t|)d3 t|, |1d-< tjj|1d d4d5d6dd7d8d}2|2D ]}3t
|3}4|d }|0d }0t|)d3 t|, d3 t|0 |4d-< d9t|0d  |4d:< tjj|4d d;d<d6dd=d>d?d}5|5D ]}6d}7t
|6}8|d }|d }t|)d3 t|, d3 t|0 d3 t| |8d-< d@t|d  |8dA< tjdBj|8d dCdDdEd6ddFd>dGdHdIdJdKdLdMdNddOdPdQdRd}9|9D ]}:d};t
|:}<|d }||<dI  |<dJ d ur|<dJ dkr|<dJ dSkr||<dJ  |7d }7t|)d3 t|, d3 t|0 d3 t| d3 t|7 |<d-< |<dD |<dT< tjj|<d dUdVdWdXd6ddYd>dZdOdPdQdRd}=|=D ]}>t
|>}|d }|;d };t|)d3 t|, d3 t|0 d3 t| d3 t|7 d3 t|; |d-< d[t|;d  |d\< |d |d] v r8d&|d^< d|d_< d|d`< n|d |da v rNd&|d^< d|db< d|d`< nd$|d^< d|d`< |dZ dkrad&|d^< dc|v rjdc|dd< || qi }?de|v rdddei}?de|<dd< |<|?|df}@||@ g }qri }Adg|v rdddgi}Adg|8dd< |8|A|dh}B||B g }qi }Cdi|v rdddii}Cdi|4dd< dj|v rdddji}Cdj|4dd< |4|C|dk}D||D g }qi }Ed|v rdddi}Ed|1dd< dl|v rdddli}Edl|1dd< |1|E|dm}F||F g }q|-|dn}G||G g }qqd$}Hd$}Id$}Jd}Kd}Lt jj|dodpdqddrdsdtdudvdwdxdydzd{d|d}d~ddddddd}Mg }N|MD ]I}Ot
|O}<d|<dO< |<dy dkrRd&}J|<d dkr\d&}Hn	|<d dikred&}I|Jd&kr|<d dkrtd}Kndi}K|<d dkrd}Lndi}L|N|< q?g }Pg }Q|Kdikr|Qd |Ldikr|Qd |Hd$kr|Pd |Id$kr|Pdi t!|Qdkrt jj|Qdodpdqddrdsdtdudvdwdxdydzd{d|d}d~ddddddd}R|RD ]}St
|S}T|N|T qt!|Pdkr*t jj|Pdodpdqddrdsdtdudvdwdxdydzd{d|d}d~dddddddjdd}U|U	 r*|UD ]}Vt
|V}W|N|W q	 |ND ]"}Xt"jj|Xd d }Y|Y	 rN|YD ]}Zt
|Z}[||[ qAq-||d< |N|d< ||d< ||d< ||d< ddddddddddddddddddddddddddddddddcddddddcddddddcddddddddddddddddg
|d< ddiddiddiddiddiddiddiddiddig	|d< ddddddgddddjddddlddddddgddddddddddlddddlddddlddddddddddgd|d< || q*|#d|tj$ |S d S )Nry  r   r   rZ   r}   rU   r   r   r-   rr   r   r  r   r   rq   rn  r_   rW  r  r   ro  rD   r   r   rE   r   r   rS  r   r2   ru   rp  rq  rr  rs  Fr  Tr  r  r   r  r   r  r  r  r  r  r  r  r  r	  r  r  r
  r  r  r  r  r  r  r  r  rt  r  r  r  r  r  r  r  ru  rf   r  r  rv  rw  r  r  rF  rG  rE  r  r   r!  r#  rx  ry  r$  rz  r`   r%  r{  r|  r   r}  r~  r  r  r  r  r  r6  r  rY   r  r  r1  r  r2  r   ra  rT   rb  rc  rd  re  rf  rg  rh  r  r  r  r  ra  rb  rc  rd  re  rf  rg  r  rh  r  r  )r  rJ  r5  r6  rL  r  r7  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rt   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   )%rR   r   r   r   r   r   r^   r   r_   r   ra   rL   r   r   r   r  rc   r   r  r   r    r!   r*   r+   r   r   r   r   r   r   r   r   rC   r  r(   r`   SESSION_VALIDITY)\rh   rS   r  r   r   rk   r@  rk  r  r  r  r  r   r  r8  r9  r:  r;  r<  r=  rL  r  r  r>  r?  r   r  r  r  rL  r  rl   r  r   r   rm   r   r   r   r  r   rA  rB  rC  rD  rE  rF  rG  rH  rI  rJ  rK  rM  rN  rO  rP  rQ  rR  rS  rT  rU  r(  rV  r  rW  r  rX  r  rY  r  rZ  r[  r  r  r  r  r  r\  r]  r^  r  r  r  r  r  r  r  r  rM  rN  rO  rP  rn   rn   ro   r~    sD  









$































  r~  c                 C   s   t  }zN|| }|d krJg }tj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|}|| q6t	d|dW S t	dddW S  t
yp } ztd  t	d!t|iW  Y d }~S d }~ww )"NrC   rB   rZ   T)Zexercise_id__accessLevelZexercise_id__exerciseStatusZparentExercise_id__isnullrX  rW  Zexercise_id__weightExistsZexercise_id__distanceExistsZexercise_id__timeExistsZexercise_id__repsExistsZexercise_id__speedExistsZexercise_id__heightExists	maxWeightmaxRepsmaxTimemaxDistancemaxSpeed	maxHeightrl  rm  rn  ro  rp  rq  tmaxTestInstZ exercise_id__video_id__videoLinkr   Fr   r[   r   r   )r:   r   rK   r^   r   r   r_   ra   r   r   r   r   r   r   )rh   r   r   r  advExDetailsrm   r   r   rn   rn   ro   getAllAdvEx  s6   

r  )r   re	django.dbr   django.core.mailr   Zdjango.formsr   django.shortcutsr   django.db.modelsr   r   django.httpr   r	   django.template.loaderr
   Zpip._internal.req.req_installr   ImportErrorZpip.req.req_installr   r   r   r   r   r   r   r   ZCelebrity.modelsr   r   ZPlan.modelsr   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   StratFitr*   ZStratFit.settingsr+   r,   Subscriber.modelsr-   r.   r/   r0   r1   r2   Subscriber.serializersr3   rest_framework.decoratorsr4   r5   r6   rest_framework.responser7   Subscriber.Authenticationr8   r9   r:   r;   r<   django.views.decorators.cacher=   ZSubscriber.viewsr>   Zpartner.modelsr?   Zutility.modelsr@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   ZUserplan.modelsrL   rM   rN   rO   utility.viewsrP   rK  django.contrib.gis.geoip2rQ   django.core.cacherR   rS   rp   rw   r   r   r  r   r   r_  rl  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/  r1  r2  r7  r   r8  rC  rG  rR  rW  r]  r_  rs  rx  r  r~  r  rn   rn   rn   ro   <module>   s0   \ 8


6


 



    

 
|
 
y
  
2
   P
)

(
  





     
'

%

&

+



T



B
$

/

Y



!

#



y


   =



 




9







"


"  \
7
  $ 
l
   
j

7





>

]
-  
h
