U
    '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k
r   d d	lmZ Y nX 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 ]p}t jj|d}tt|d  t|d dkrtd d|_	|
  qBt|d dkrBtd	 d|_	|
  qBt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   $/var/www/html/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 ]}t
|}|d dks|d dkrtjj|d d}t|d	 d tt|jd t|j  d |d	< nFtjj|d d}	t|d	 d tt|	jd t|	j  d |d	< |d dkrPd}
q|d }
qnd }
g }g }|D ]}t
|}|| qltd|||
dW S td d!d"W S W nB tk
r } z"td# td$t|i W Y S d }~X Y nX d S )%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   sr    

          


r   c           
   
   C   sp  t  }z || }t| jd}|d kr&tjddj	|d d
ddddd	d
dd}|D ]}t|}|d
 dks|d
 dkrtjj|d d}t|d d tt|jd t|j  d |d< qbtjj|d d}t|d d tt|jd t|j  d |d< qbtd|dW S W nB tk
rj }	 z"td tdt|	i W Y S d }	~	X Y nX d S )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   s\    

      


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s|d dkr*tjj|d d }t|d d! tt|jd" t|j  d# |d< nFtjj|d d }t|d d! tt|jd" t|j  d# |d< 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r4|dd  }nd'}tjj|d d%d+  }tjj|d d, }d-}d}|D ]"}t|}||d.  }|d }qz|| }||d  ||d< ||d
< |d |d/< |d |d0< d1|d2< |d	 |d3< ||d4< ||d5< |d |d6< |d
 |d7< |d |d8< |d0 d9krDd:|d;< d<|d0< n.|d0 d=kr\d>|d;< n|d0 d?krrd@|d;< |d d k	rtj|d  |d< |d |dA< |d |d6< || qxtjdBdCdD}g }|D ] }t|} dE| dF< ||  qtjj|dG }!g }"|!D ]X}#t|#}$tjj|$d ddH }%|%|$dI< tjj|$d dJ }&|&D ]}'t|'}(qV|$dK d k	r~d'|$dL< nd'|$dL< |#d |$d6< |#dM d" |#dN  |$dO< g })tjj|$d dPd}*|*D ]}+t|+},|)|,d  q|)|$dQ< tjj|$d dJ }-|- rF|-D ].}.t|.}/|/dR dSkr8dT|$dU< ndV|$dU< qndT|$dU< |"|$ tjj|d }0qtdW|||"|0j dXW S tdYdZd[W S W nB t!k
r }1 z"t"#d\ td]t|1i W Y S d }1~1X Y nX d S )^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   sD   

                



 









r  c           	   
   C   s  t  }|| }z|d krt| jd}tjj|d d	ddddd}|D ]^}t
| t|}|d d	krPtjd
ddj|d d }t
| tdd	|d  W S qPtddiW S tdddW S W nB tk
r } z"td tdt|i W Y S d }~X Y nX d S )Nr   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>  s0    
  

r   c           s   3   C   s  t  }zt|| }t| jd}t| |d krj|d }tjj	|d}t
jj	dd}|j}g }g }	d}
tjdjd|d }| r|D ]}t|}|d	 |d
< qd}
tjjdd }|D ]}t|}||d  qtjtdd  }|D ]}t|}|	|d  q |
dkr6d|kr|d dkrd|k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}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}q@d.|kr|d. dkrd|k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}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|d0d,d}q@d1|kr@|d1 dkr@tjj|d1 d }|D ]}t|}t| |d }qBd|k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}nZt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}n
d|kr*|d dkr*d|k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}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.|kr|d. dkrd|k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}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|	d0d,d}n"d1|kr@|d1 dkr@tjj|d1 d }|D ]}t|}t| |d }qPd|k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}nZt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 ]}t|} tjj| d d9 }!|! r.|!D ]H}"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 }*|* r|*D ]}+t|+},q|,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 	rxd| 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|krf|d dkrf|j%dVk
rtjjdddW& 't(d%dX }5|d
 dk
r| d' | d< | d | dU< n| d% | d< t)| d d2krddY| d< ntjjdddW& 't(d%dX }6t*jj	|6dZ}7|7j+}5|d
 dkrt*j j| d' dZ}8nt*j j| d% dZ}8|8D ]}9t|9}:|:d[ };q*|;| d< t)| d d2krBdY| d< nt)| d d2krdY| d< n|j%dVkr|d
 dkrt,| d( t-| | d< | d | dU< n$t,| d t-| | d< | d | dU< n@|d
 dkr| d( | d< | d | dU< n| d | d< | d | dU< t-| d d2krBdY| d< t.jd\j| d d9d]}<d}=|<D ]}"t|"}#|=d^|#d]  7 }=qh|=dkr|=dd  }>nd}>t/jd_j| d d9d`}?d}@|?D ]}"t|"}#|@d^|#d`  7 }@q|@dkr|@dd  }And}A| d# | d kr8t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< n| 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q|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rJdw| dx< dy| dn< n>| dn dzkrjd{| dn< d|| dx< n| dn d}krd~| dn< d| dx< | d d k	rt4j5| d  | d< | d" d k	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 ]N}Vt|V}Wt8jj|Wd dd# }X|X|Wd< tjj|Wd dD }Y|YD ]}+t|+}Zq|Wd d k	r|Wd |Wd< nd|Wd< |Vd |Wds< |Vd dS |Vd  |WdT< g }[tjj|Wd dd}\|\D ]}]t|]}^|[|^d  qX|[|Wd< tjj|Wd dD }_|_ r|_D ].}`t|`}a|ad	 dkrd|Wd< nd|Wd< qnd|Wd< |U|W qt|U t9jdj|dDdddddddddd
}bd}ci }di }ei }fg }gd}hd}id}j|b rd}c|bD ]:}t|}e|ed d krP|ed |ed< |ed d|ed< qPt:jj|d3 }kd}l|k rd}l|kD ]}t| t|}dqt;jj|d3dddddddddddiddd}m|m r.d}i|mD ] }t| t|}f|g|f qtjj|d3jdd4gd5 }n|n r^d}jd}ht<jj	dd}ot<jj	dd}ptjj	|d}qt=d||Q|U||j%|j>|j?||e|d|g|c|l|h|i|d |d |d |d |d |d |d |d |d |d |d |j|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 W nB tAk
r }r z"tBCd t=dt|ri W Y S d }r~rX Y nX d S )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   sessiontokenemailis_superuser	is_activer   otpphoner   	phoneCode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)&r\   r   rB   r   
totalcountr   userTypeuserIdr  profiler2   rl  isProfileSet	isGoalSet	isPlanSet	isTmaxSetcoders  userDetailsr   fnamelnameru  rv  r   r   rw  isFreeTrailrx  r   rt  	phonecode
coverImageandroidVersion
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   r  rU   versionr   r   r   )srh   r   r   	coachInfor   r  currencyValuesr  indianPlanArrotherPlanArrindia	countryIDconconObjindianPlansinpinpObj
otherPlansrw  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  fitProQuerySetr  dataGoalObj
dataFitObjdataTmaxObjtmaxArrr  r  r  goalDetailsr  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 }q|d	kr|dd  }nd	}tjdj	|d dd}d	}|D ]}t
|}|d
|d  7 }q |d	kr8|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 ]V}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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 ]t}*d}+t
|*},|d }||,d/  |,d0 d k	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 ]}.t
|.}/|d }|+d }+t|d t| d t| d t|# d t|' d t|+ |/d< d8t|+d  |/d9< |
|/ q(|,|
d:}0|	|0 g }
qR|(|	d;}1||1 g }	q|$|d<}2||2 g }q6| |d=}3||3 g }q||d>}4||4 g }qttjj	|d? }5g }6|5D ]}7t
|7},|6|, qT||6|d@}qntdA|iW S tdBdCdDW S W nB tk
r }8 z"tdE tdFt|8i W Y S d }8~8X Y nX d S )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 k	r8||
|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< |d k	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 ]r}"d}#t|"}$|d }|	|$d(  |$d) d k	r|$d) d+kr|$d) d,kr|	|$d)  | d } t|d t| d t| d t| d t|  |$d< |$d$ |$d-< tjj|$d d.d/ddd0d}%|%D ]}&t|&}'|d }|#d }#t|d t| d t| d t| d t|  d t|# |'d< d1t|#d  |'d2< ||' q`|$|d3}(||( g }q||d4})||) g }q||d5}*||* g }q\||d6}+||+ g }q||d7},||, g }qtjj|	d8d9d:dd;d<d=d>d?d@dA
}-g }.||
|d < |||d < |-D ]}/t|/}$|.|$ q|
|dB}qN|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  s\   
 
 

 
$
     
      

 









   rl  c           J      C   s	  t  }	zv|| }|d }tjj|djdd }| 	rl|D ]}t|}qD|d k	rZt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 ]0}t|}t|d dd|d< || q|D ]&}t|}|d d k	rPt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 ]}"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 ]})d}*t|)}+|d }||+d6  |+d7 d k	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 ]X}-t|-}|d }|*d }*t|d  t| d  t| d  t| d  t|& d  t|* |d< dDt|*d  |dE< |d |dF kr
dG|dH< d|dI< d|dJ< n<|d |dK kr6dG|dH< d|dL< d|dJ< ndM|dH< d|dJ< tjj|d
 djdNgdO }.|dC dkr|dG|dH< |. r|.D ]}t|}/t
|/ |/d }0q|0|dP< || qdt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 r|6D ]}t|}8|8d }9qjdP|9i}7|9|'dP< |'|7|dT}:||: g }qtjj|d
 djdUdVgdO };i }<|; r|;D ]}t|}=|=d }>qdP|>i}<|>|#dP< |#|<|dW}?|
|? g }q\tjj|d
 djddXgdO }@i }A|@ r|@D ]}t|}B|Bd }Cq^dP|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}q"td|iW S tdMddW S ntdMddW S W nB tk
	r }I z"td tdt|Ii W Y S d }I~IX Y nX d S )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   rz  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  }zD|| }|d }|d kr:tjj|djdd }| r(|D ]}t|}qN|d }|d }tj j|d}	tj	dj|dd}
|
D ]}t|}|d }qt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}| rf|D ]2}t|}t|d dd|d< || q2|	D 	]}t|}|d d k	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 ]F}*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}.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 ]X}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 ]2}5d}6t|5}7|d }||7d>  |7d? d k	r|7d? dEkr|7d? dFkr||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 krd|dP< d|dQ< d
|dR< n<|d |dS k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 }<q8|<|dW< |"d k	rtjj|"|d dX }=|= r|=D ]}>t|>}?qd|dY< |?dZ |dZ< |?d[ |d\< |?d] |d^< |?d_ |d_< nd|dY< || qtjj|d d	jd`gdV }@i }A|@ rJ|@D ]}t|}B|Bd }Cq"dW|Ci}A|C|7dW< |7|A|da}D||D g }q2t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 r|OD ]}t|}Q|Qd }RqdW|Ri}P|R|,dW< |,|P|dh}S||S g }q|(|di}T||T g }q4d}Ud}Vtjj|djdkdlddmdndodpdqdrds
}Wg }X|WD ]>}Yt|Y}7dt|7dl k	rFd}Undu|7dl k	rXd}V|X|7 	q&g }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}qjtd|iW S tdddW S ntdddW S W nB tk
r }^ z"t !d tdt|^i W Y S d }^~^X Y nX d S )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 Squatrz  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   sx  t  }z(|| }|d }|d kr|d }tjjdd}|j}t| jdd | jddkrxt	
| jd}ni }|d }tjj|d}	tjj|djdd	 }
t|
d
krtjj|djdd	 }
|
 r|
D ]}t|}q|d }|d }tjj|d }tjj|dd  }tjdj|dddd}|D ]}t|}|d }|d }qNg }g }g }g }g }g }i }i }g }i }d
}t| |} t|  tjj|ddddd}!g }"d}#|! r |!D ]B}$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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 k	r:tj|'d"  |'d"< d#|'d$< d%|'d&< d'|'d(< d)|'d*< ||'d+< ||'d< ||'d,< |dkrd-|kr|d- d.kr|	jd/kr|d0 d1kr|'d2 |'d3< |'d3 |'d4< |'d2 |'d5< n|'d5 |'d3< |'d3 |'d4< t|'d3 d
krd6|'d3< n|d0 d1kr.t j j|'d2 d7}0nt j j|'d5 d7}0|0D ]}1t|1}2|2d8 }3qH|3|'d3< |d0 d1kr|'d2 |'d5< t|'d3 d
krbd6|'d3< nt|'d3 d
krd6|'d3< n|	jd/kr|d0 d1kr|'d9 |'d3< |'d3 |'d4< n|'d3 |'d3< |'d3 |'d4< n@|d0 d1kr0|'d9 |'d3< |'d3 |'d4< n|'d3 |'d3< |'d3 |'d4< t!|'d3 d
krbd6|'d3< d}4tj j|dd:}5d }6| r|5D ]}7t|7}8|8d }6qt"jj|6d; }9|9 r|9D ]}:t|:};g |;d<< g |;d=< t#jd>j|;d d? }<|< rv|<D ]j}=t|=}>|>d@ dkrD|>d@ d krD|;d< |>d@  |>dA dkr
|>dA d kr
|;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 ]\}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 ]}Od}Pt|O}Qd
|Qdh< |d }||Qdb  |Qdc d k		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 ]z}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 k
r8d)|%dt< d|%du< d
|%dv< n<|%d | dw k
rdd)|%dt< d|%dx< d
|%dv< nd'|%dt< d
|%dv< |%dp dk
rd)|%dt< dy|k
rdy|%dz< |6d k	r|%d |k
r||%d  }Td)|%d{< |Td| |%d|< |Td} |%d~< |Td |%d< |Td |%d< nd'|%d{< ||% 	qi }Ud|kr.dzdi}Ud|Qdz< |Q|U|d}V||V g }qi }Wd|krjdzdi}Wd|Mdz< |M|W|d}X||X g }q i }Yd|krdzdi}Yd|Idz< d|krdzdi}Yd|Idz< |I|Y|d}Z||Z g }q~i }[d|krdzdi}[d|Fdz< d|krdzdi}[d|Fdz< |F|[|d}\||\ g }q|B|d}]||] g }qd'}^d'}_d'}`d
}ad
}bt,jj|dddddddddddddd}cg }d|cD ]}et|e}Qd
|Qdh< d
|Qd< |Qd dkrd)}`|Qd dkrd)}^n|Qd dkrd)}_|`d)kr&|Qd dkr
d}and}a|Qd dkr"d}bnd}b|d|Q qg }fg }g|adkrP|gd |bdkrd|gd |^d'krx|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r|dD ]P}n|nd }od'}p|&D ]8}q|qd |okr|qd |nd< d)}pn|pd'krhd
|nd< qhqT|'|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 nt.d'ddǜW S W nB t/k
rr }r z"t01dɡ t.dt&|ri W Y S d }r~rX Y nX d S )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defaultTmaxrz  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  s2   



 





"






 
   
    
$    
        	

      
















   









          


        












)
r  c           
      C   sr   g }t jj| d }|rn|j}|j}|j}|D ]<}|d }tjj||||d }	|	r0|	|	j
|	jd q0|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   s  i }i }t jj|dddgddddd}g }| r|t| |}t| |D ]*}t|}|d }	|d }
t|	 |
dks|
dkr|d	 D ]f}t| tjjt	|	|d
 
 }t| |d k	rtjj|d d 
 }|d k	rd||d < q|
dkrN|d D ]t}t| tjjt	|	|d
 
 }t| |d k	rtjj|d d 
 }t| |d k	rd||d < qqN||dS )Nr1  r  r{  )rq   r  rq   rn  r_   rW  ri  )rf   r  rU   r!  rZ   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    sP    




r  c              
   C   s  t  }zP|| }|d }|d krVt| jd}d|kr|d dkrtd tjj	|d |d d
 }| r|D ]}t|}q|td	|d
 dW S td	ddW S ntjj	|d |d d}| r t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 nB tk
r } z"td tdt|i W Y S d }~X Y nX d S )NrU   r   Z
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  s@    







r  c           /      C   s
  t  }
z|| }|d }|d k
rt| jd}d|d kr|d d dkrtd |d d }tjj	|d}|d d |_
|d d |_|d d	 }d
|kr|d
\}}	}
n|}t|d ||_d|_|d d |_|d d |_|d d dkrl|d d d}tjj|d }| rDtjj|d }|D ]"}tjj||||d}|  qH|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 kr|d d dkrd|_|d d |_|d d |_||_||_d|d krp|d d dkrp|d d |_d|d kr|d d dkr|d d |_ d|d kr|d d dkr|d d |_!|  d|d krB|d d dkrBt"jj|ddd}| rtd n$d}t"jj|d|d|dd }|  d!|d kr|d d! dkrd"|d kr|d d" dkrt"jj|d#dd}| rd#}|d d" }|D ]}t#|}|d }qt"jj	|d$}||_$d%|_%||_&||_'||_(|  td& nd#}|d d" }d'|d krB|d d' d(krBd)}nJd'|d krh|d d' d*krhd+}n$d'|d kr|d d' d,krd-}t"jj|d%|||d.}d'|d kr|d d' dkr|d d' |_)||_*nd |_)d |_*|  nHt"jj|d#dd}|D ],}t#|}|d }t"jj	|d$} |   qd/|d kr2|d d/ dkr2d0|d kr2|d d0 dkr2t"jj|d1dd}!|! r d1}|d d0 }|!D ]}t#|}|d }qt"jj	|d$}||_$d|_%||_&||_'||_(|  td2 n0d1}|d d0 }t"jj|d|||dd }|  nHt"jj|d1dd}"|"D ],}#t#|#}$|$d }%t"jj	|%d$}&|&  qLt+dd3|j,|j
d4W S tjj|d d d5}'|' rt+d6d7d8W S tjj|d d |d d |d d	 d|d d |d d |d d |d d |||d9}(d|d krJ|d d dkrJ|d d |(_d|d krx|d d dkrx|d d |(_ d|d kr|d d dkr|d d |(_!td: |(  d|d kr|d d dkr|d d d})|)D ]$}tjj||(j,||d}|  qd|d krn|d d dkrn|d d d}*|*D ]$}tjj||(j,||d}+|+  qH|(j,}t|d; |(j
},tjj	|d}-||-_-|-  d|d kr|d d dkrd}t"jj|d|d|dd }|  d!|d k
r|d d! dk
rd"|d k
r|d d" dk
rd#}|d d" }d'|d k	rZ|d d' d(k	rZd)}nJd'|d k	r|d d' d*k	rd+}n$d'|d k	r|d d' d,k	rd-}t"jj|d%|||d.}d'|d k	r|d d' dk	r|d d' |_)||_*nd |_)d |_*|  d/|d k
rt|d d/ dk
rtd0|d k
rt|d d0 dk
rtd1}|d d0 }t"jj|d|||dd }|  t+dd<||,d4W S W nB t.k

r }. z"t/0d= t+d>t1|.i W Y S d }.~.X Y nX d S )?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  }zx|| }|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 n@ tk
r } z"td	 td
t|i W Y S d }~X Y nX d S )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  }z|| }|d }|d krtjjdddd}tjdddd}g }g }|D ]}t|}	||	 qV|D ]}
t|
}|| qrt	d||d	W S W n@ t
k
r } z"td
 t	dt|i W Y S d }~X Y nX d S )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  }z~|| }t| jd}g }|d krttjj|d d}|j	dkr`t
dddW S d|kr|d d kr|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}nZ|d }|d	ks|d
ks|dks|dkrt
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 ]4}|d }|d dks|d dkrd} qq|dkr|D ]}	|	d }tjj|d |d d|d |d  ||d!}|  |j}|	d" }|D ]4}|d# }tjj|d|d$ |d  ||d%}|  |j}|d& }tt|d' |D ]} | d( }!tjj|d|!d) |!d* ||d+}"|"  |"j}#| d, }$|$D ]}%|%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|+kr|+d; dkr|+d5 |,_d<|+kr|+d< |,_d=|+krtd>|+d=  |+d= |,_d?|+kr|+d? |,_d;|+kr |+d; d kr |+d; |,_d@|+krB|+d@ d krB|+d@ |,_ dA|+krd|+dA d krd|+dA |,_!dB|+kr|+dB d kr|+dB |,_"dC|+kr|+dC d kr|+dC |,_#dD|+kr|+dD d kr|+dD |,_$|,  |,j}-dE|+krT|+dE d krTt%jj|d |+d3 dF}.|.& rtdG n8t%jj|+d3 |d |+dE |+dH |+dI |+dJ dK}/|/  |+d4 }0|+d6 dkrr|+d4 }0t|+d6  tt'dL t(d|0D ]}1t)jj|-d|+d5 |+d* ||dM}2d/|+kr|+d/ |2_d;|+kr|+d; d kr|+d; |2_d@|+kr|+d@ d kr|+d@ |2_ dA|+kr0|+dA d kr0|+dA |2_!dB|+krR|+dB d krR|+dB |2_"|2  q|+d6 dkrdN|+kr|+dN |2_*|2  |+d6 dkrnt)jj|-d|+d6 |+d* ||dM}2d/|+kr|+d/ |2_d;|+kr|+d; d kr|+d; |2_d@|+kr|+d@ d kr|+d@ |2_ dA|+kr0|+dA d kr0|+dA |2_!dB|+krR|+dB d krR|+dB |2_"dN|+krf|+dN |2_*|2  |2j}3tdO q@qqqTqnB|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' t|dP dkrtdQ t(ddPD ]}4|D ]} | d( }!tjj|d|!d) |!d* ||d+}"|"  |"j}#| d, }$|$D ]}%|%d- }&tjj|#d|&d. |&d/ |&d* ||d0}'|'  |'j}(|%d1 })|)D ]r}*|*d2 }+tjj|+d3 |(d|+d4 |+d5 |+d6 |+d* |+d7 |+d8 |+d9 ||d:},d5|+k	rt|+d; dk	rt|+d5 |,_d<|+k	r|+d< |,_d=|+k	rtd>|+d=  |+d= |,_d?|+k	r|+d? |,_d;|+k	r|+d; d k	r|+d; |,_d@|+k
r|+d@ d k
r|+d@ |,_ dA|+k
r$|+dA d k
r$|+dA |,_!dB|+k
rF|+dB d k
rF|+dB |,_"dC|+k
rh|+dC d k
rh|+dC |,_#dD|+k
r|+dD d k
r|+dD |,_$d=|+k
rtd>|+d=  |+d= |,_d?|+k
r|+d? |,_|,  |,j}-dE|+krJ|+dE d krJt%jj|d |+d3 dF}.|.& rtdG n8t%jj|+d3 |d |+dE |+dH |+dI |+dJ dK}/|/  |+d4 }0|+d6 dkrh|+d4 }0t|+d6  tt'dL t(d|0D ]}1t)jj|-d|+d5 |+d* ||dM}2d/|+kr|+d/ |2_d;|+kr|+d; d kr|+d; |2_d@|+kr|+d@ d kr|+d@ |2_ dA|+kr&|+dA d kr&|+dA |2_!dB|+krH|+dB d krH|+dB |2_"|2  q|+d6 dkrvdN|+krv|+dN |2_*|2  |+d6 dkrdt)jj|-d|+d6 |+d* ||dM}2d/|+kr|+d/ |2_d;|+kr|+d; d kr|+d; |2_d@|+kr|+d@ d kr|+d@ |2_ dA|+kr&|+dA d kr&|+dA |2_!dB|+krH|+dB d krH|+dB |2_"dN|+kr\|+dN |2_*|2  |2j}3tdO 	q qqjq`qt(ddRD ]:}4|D ],} | d( }!tdS tjj|d|!d) |!d* ||d+}"|"  |"j}#| d, }$|$D ]}%|%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|+kr|+d; dkr|+d5 |,_d<|+kr|+d< |,_d=|+krtd>|+d=  |+d= |,_d?|+kr|+d? |,_d;|+kr|+d; d kr|+d; |,_d@|+kr:|+d@ d kr:|+d@ |,_ dA|+kr\|+dA d kr\|+dA |,_!dB|+kr~|+dB d kr~|+dB |,_"dC|+kr|+dC d kr|+dC |,_#dD|+kr|+dD d kr|+dD |,_$d/|+kr|+d/ |,_d=|+krtd>|+d=  |+d= |,_d?|+kr|+d? |,_|,  |,j}-dE|+kr|+dE d krt%jj|d |+d3 dF}.|.& r^tdG n8t%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 ]}1t)jj|-d|+d5 |+d* ||dM}2d/|+kr|+d/ |2_d;|+kr.|+d; d kr.|+d; |2_d@|+krP|+d@ d krP|+d@ |2_ dA|+krr|+dA d krr|+dA |2_!dB|+kr|+dB d kr|+dB |2_"|2  q|+d6 dkrdN|+kr|+dN |2_*|2  |+d6 dkrt)jj|-d|+d6 |+d* ||dM}2d/|+kr|+d/ |2_d;|+kr.|+d; d kr.|+d; |2_d@|+krP|+d@ d krP|+d@ |2_ dA|+krr|+dA d krr|+dA |2_!dB|+kr|+dB d kr|+dB |2_"dN|+kr|+dN |2_*|2  |2j}3tdO q8qqqqq|D ]6}5t+jj|5dT |d |5d3 |5dU ||dV}6|6  q|D ]6}5t+jj|5dT |d |5d3 |5dU ||dV}6|6  q|D ]6}5t+jj|5dT |d |5d3 |5dU ||dV}6|6  qRt,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 ]0}?t|?}@tjj|@d d_}A|=j/|A_/|A  qb|=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 ]}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 nt=jj|R|Wd |Qdt}Y|Y  q|tjj|d_}Zd|Z_>|Z  du}[|j?}\|j@|Bdv}]tAdw|]}^tB|[|^|\ t
ddxdW S nt
ddydW S W nB tCk
r }_ z"tDEdz t
d{t2|_i W Y S d }_~_X Y nX d S )|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   rt  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inSeasonPeriod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payloadr@  rresultcheckShortUrlscreateShortUrlsZupdateDraftsubjectto_emailctxr]   r   rn   rn   ro   createPlanBuild"
  s
   


   "  




	

	
	















	
















 
	

	
	

















 

	

















	
	



















 

	
















 	






rv  c              
   C   sz  t  }t| jd}z|| }|d }t| |d kr0d|d d krtjj	|d d d |d
dd}t| | r|D ]}t|}qtjj|d d}t|d |_||_||_|  |j}	nHt|d d  tjjt|d |d d d ||d}
|
  |
j}	td	d
|	dW S W nB tk
rt } z"td tdt|i W Y S d }~X Y nX d S )Nr   rU   r   r5  r   r!  rW   )r#  r!  r   r  TDraft Saved Successfullyr\   r]   rP  r   r   )r:   r   r   r   r   r   rc   r   r^   r   r_   r   ra   rd   rL  r#  r   r  rg   rU   r  r   r   r   r   r   )rh   r   r#  r   r   
updateJsonrk   rl   updaterP  r  r   rn   rn   ro   savePlanJson  sJ    

 

r{  c           	   
   C   s&  t  }t| jd}z|| }|d krd|krV|d dkrV|d d krV|d }n|d }tjddj	||d d
d	d
d}| r|D ]6}t|}|d dkr|d
 dkrd|d
< qd|d
< qnddi}t|W S W nB tk
r  } z"td tdt|i W Y S d }~X Y nX d S )Nr   r   r   rU   r|   r2  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  s8    
 
  

r  c              
   C   s  t | jd}zFt }g }tjj|d dd}|	 rN|D ]}t
|}qF|d dd}t |}|d D ]^}	|	d D ]P}
|
d D ]B}|d	 D ]4}|d
 D ]&}t|d d  ||d d  qqqqqvtjj|ddddddddd}|D ]L}t
|}|d dkr ||d |d |d |d |d |d d q t|ddW S  tk
r } z"td tdt|i W Y S d }~X Y nX d S )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  sB    


   4
r  c              
   C   s  t  }t| jd}zt|| }|d }t| |d krtjj	|d |d
ddd}| rz|D ]}t|}ql|d d ks|d dkr|d }n|d d	d
}	t|	}d|d kr|d d |d< nfd|d kr|d d |d< nHd|d kr|d d |d< n(d|d kr2|d d |d< n|d }tjj|d d}
t||
_td ||
_||
_|
  |
j}tdd|dW S W nB tk
r } z"td tdt|i W Y S d }~X Y nX d S )Nr   rU   rq   r   r!  r"  r   rS  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   rL  r"  r   r  rg   rU   r   r   r   r   r   )rh   r   r#  r   r   ry  rk   rl   Z	protoJsonr  rz  rP  r   rn   rn   ro   saveprotocolJson7  sL    






r  c           	   
   C   s(  t  }t| jd}z|| }|d krd|krV|d dkrV|d d krV|d }n|d }tjddj	||d d
d	d
dd}| r|D ]6}t|}|d dkr|d dkrd|d< qd|d< qnddi}t|W S W nB tk
r" } z"td tdt|i W Y S d }~X Y nX d S )Nr   r   r   rU   r|   r2  rq   r|  r#  r"  r   r}  rZ   r   r\   Fr   r   r~  r  rn   rn   ro   getprotocolJsone  s:    
 
   

r  c                 C   s  t  }zz|| }t| jd}|d }|d krd|krz|d dkrzt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 ]}t
|}|d
 d krtj|d
  |d
< |d d krtj|d  |d< tjj	|d d }	|	 rd|	D ]H}
t
|
}|d d}|d d}|d d}|d ||d < qtjj	|d |dj	ddd}| r|| qd|k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 ]t}t
|}tjj	|d |dd}| r`tjj	|d |dj	ddd}| rj|| n
|| qd|k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 ]}t
|}d|d< d|d< tjj	|d |dj	ddd}| rtjj	|d d  }|rX|d dkrJd|d< |d  |d< nd|d< || qt|||d!W S W nB tk
r } z"td" td#t|i W Y S d }~X Y nX d S )$Nr   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    

            






r  c              
   C   s   t  }t| jd}zl|| }|d }t| |d krrtjj	|d d}d|_
||_|  tdddW S tdd	dW S W n@ tk
r } z"td
 tdt|i W Y S d }~X Y nX d S )Nr   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   s  t  }t| jd}z*|| }|d }|d kr&tjj||d d	d}t
jj|d d	d}|D ]}t|}qnt| g }	g }
|d dkr| r|D ]}t|}|d d	d
}qt|}|d }|D ]}|d }|D ]}|d }|D ]}|d }|D ]r}|d }|D ]^}|d }d|d krV|d }|d }|	||d n |d }|d }|
||d qq
qqqtd|	d td|
d g }g }|	D ]}||
kr|
| q|
} | D ]}!|!|kr||! q|	D ]}"|"|kr||" qt|d ntdddW S ntdddW S t||dW S  tk
r }# z"td tdt|#i W Y S d }#~#X Y nX d S ) 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   rQ  rR  rT  rV  rW  rX  rY  rN  rZ  r]  r  r^  ZlabelledExcercisesZlabelledExidZunlabelledExerZunlabelledexidoutputZoutput1itemZotherExercisesxx1r   rn   rn   ro   getTransitExId  st    







r  c              
   C   sT  t  }t| jd}z|| }|d }t| |d kr
d|kr
tjj	|d |d
dd}| r|D ]}t|}qpt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 nB tk
rN }
 z"td tdt|
i W Y S d }
~
X Y nX d S )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   rL  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  s@    




r  c              
   C   s  zt | jd}tjj|d dddd}|D ]}|d }|d }q6|d }t| |d }t| t	jj|d
dd	d
dddddd}g }	|D ]R}
t|
}|d |d< |d |d< |d |d< |d |d< |d |d< |	| qtjddt|t| }t|}g }|D ]b}t|}t	j
dd	d
dj|d dddddd}|D ]"}t|}t|d || q^q"t|	||tdW S  tk
r } z"td tdt|i W Y S d }~X Y nX d S )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  Zoffset1Zoffset2r  listrk   plandetailsZlast_twoZlast_two_in_ascending_orderr  rC  r   r  r_   r   rn   rn   ro   r#  _  sd    
   " 

r#  c                 C   s  t  }z|| }|d }t| |d krt| jd}tj	ddj
||d ddddd	}| r|D ].}t|}|d d kr|d d
krd}qtd}qtn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 ]}t|}|d d*ks|d d+krtjj|d% d}nFtjj|d d}t|d" d, tt|jd- t|j  d. |d"< |d |d/< |d" |d0< |d |d1< qn|D ]"}t|}|d2t|d3  7 }q|d
krZ|d4d  |d< |D ]"}t|}|d2t|d5  7 }q^|d
kr|d4d  |d < d
}|D ]}t|}|d6|d)  7 }q|d
kr|d4d  |d7< nd
|d7< |	D ]}t|}|d d8kr|d |d9< nZ|d d:krH|d |d;< |d |d<< |d |d< n&|d d*krn|d |d=< |d |d>< || qtdd?||d@W S W nB tk
r } z"tdA tdBt|i W Y S d }~X Y nX d S )CNrU   r   r|   r2  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    

(                 



r   c           
   
   C   s2  t  }z|| }|d }t| |d krtjj|ddd}| rNd}ntdddW S t	jj|dd}|D ]>}t
|}t|d  |d d krd}qvtdd	d  W S qv|dkr|dkrtdd
dW S ntdddW S W nB tk
r, }	 z"td tdt|	i W Y S d }	~	X Y nX d S )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  s.    

r  c           
   
   C   sZ  t  }z
|| }|d }t| |d krg }tjjddddd}|D ]}t|}|d |d< |d |d< |d d krd|d< d|d	< n,t|d  |d	< |d |d
< t|d  |d< t	jj|d d }|
 rt||d< nt||d< || qNtd|dW S W nB tk
rT }	 z"td tdt|	i W Y S d }	~	X Y nX d S )NrU   r1  )r  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  s6    



r  c                 C   sp  t  }z || }|d }t| g }|d krt| jd}tj	ddj
|d ddddd	d
dddd	}| r|D ]}t|}|d |d< |d	 d krd|d< nt|d	  |d< |d
 |d< |d |d< tjj
|d d }	|	 rt|	|d< nd|d< || qtd|dW S  tk
rj }
 z"td tdt|
i W Y S d }
~
X Y nX d S )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/  sN    

      



r  c              
   C   s   t  }z|| }|d }t| |d krt| jd}|d dkrNd}nd}tjj	|d d}|d |_
|  td	|d
W S tddd
W S W n@ tk
r } z"td tdt|i W Y S d }~X Y nX d S )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   s^  t  }z|| }|d }|d krtjjdd}|j}tjj|d}g }g }g }	g }
g }d}tjdj	d|d
 }| r|D ]}t|}|d |d	< qd
}tjj	dd
 }| r|D ]}t|}|
|d  qtj	tdd 
 }| r"|D ]}t|}||d  qtjj	dd
 }|D ]}t|}||d  q8tj	tdd 
 }|D ]}t|}|	|d  qr| 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 krvd| d< d| d< n,t| d  | d< | d | d< t| d  | d< |d
krd|kr|d dkrtjj	| d ddd|d 
 }!ntjj	| d dd|d!
 }!nTd|kr:|d dkr:tjj	| d ddd|	d 
 }!ntjj	| d dd|	d!
 }!|! r|!D ]P}"t|"}#| d |#d" krdtjj	|#d d#
d$  }$||$ }|| d%< qdt|!| d&< ||  q|jd'krf|d	 dkr"tjd(j	dddd) td*d+ }%t |%| }&nBtjd(j	ddd,	tdd  td-d. }%t |%| }&nx|d	 dkrt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 nB t"k
rX }( z"t#$d3 t!d4t%|(i W Y S d }(~(X Y nX d S )5NrU   rZ   rr   Fr|   r   r!  r   r"  Tr#  r  rq   rx   ry   r   r1  )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   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  rw  r  ZcDatar  r  Zdownloadcountr  r   rk   r  r  r  r  highestPrice_dollarr   rn   rn   ro   ionicgetcoachsp  s   






     






r  c              
   C   s   t  }z`|| }|d krTt| jd}tjj|d d}|j	}t
d|dW S t
dddW S W n@ tk
r } z"td	 t
d
t|i W Y S d }~X Y nX d S )Nr   r  )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  }zr|| }t| |d krh|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|kr|d d	kr|d d
ksd|kr|d d	kr|d d
kr|d dkr4|d dkr4d}	td |d|d  d |d  d |d  d 7 }n|d dkr~|d d
kr~d}	td |d|d  d |d  d 7 }n<|d d
kr|d dkrd}	td |d|d  d 7 }nPd|kr|d d	krd}	td |d|d  d |d  d |d  d 7 }d|kr|d d	krd}
|d d}|	dkrJ|d7 }n|d7 }d	}|D ]}|d| d 7 }qZ|d	kr||d d d 7 }d |kr&|d  d	kr&td! d}|
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 }t|d# d$|kr|d$ d	krtd% d}|dksr|
dksr|	dkr||d7 }n|d7 }|d$ d}d	}|D ]}|d&| d 7 }q|d	kr||d d d 7 }d'|k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*|krd|d* d+krd|jd,kr|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rB|d/t| d1 t| d 7 }n |d2t| d1 t| d 7 }nP|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r8|d;7 }n|d<7 }d*|kr|d* d+krd=|krx|d= d>krx|d?7 }|d@7 }n(d=|kr|d= d>kr|d?7 }|dA7 }t|d# || t|}tjjdddB td'dC }|jd,krz|d- d.kr>tjdDjddd.dE tdFdG } t| t | }!n:tjdDjddd.dE tdHdI } t| t | }!nt|d- d.krtjdDjddd.dE tdFdG } t| }!n2tjdDjddd.dE tdHdI } t| }!g }"g }#d	}$|D 	]}%t!|%}&t"jj|&d dJ }'|' rz|'D ]H}t!|}(|(dK dL})|)dM dN}*|*d dO}+|(dP |&|+d0 < q0t#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 	r8d|&dX< t#jj|&d |d d\ }1|1 	r|1D ]>}2t!|2}3|3dZ d	k	rb|3dZ d k	rb|3dZ |&dZ< d|&dY< 	qb|&d] d^ t|&d  }4t()|4*d_}5t|5d`}6|6d |&da< |&db dc |&dd  |&de< |&db dc |&dd  |&db< d*|kr|d* d+kr|jd,k
r|d- d.k
rtjdDjddd.dE tdfdg }!|&dh |&d'< |&d' |&di< nNtjdDjdddjt+d.dk  tdldm }!|&dn |&d'< |&d' |&di< t,|&d' d0kr do|&d'< q|d- d.krbtjdDjddd.dE tdfdg } t|  tjj| dp}7|7j-}!tj j|&dh dp}8n`t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r |d- d.krtjdDjddd.dE tdFdG } t| | }!t|&dr t | |&d'< |&d' |&di< nftjdDjdddjt+d.dk  tdHdI } t| | }!t|&d' t | |&d'< |&d' |&di< n|d- d.krRtjdDjddd.dE tdFdG }!|&dr |&d'< |&d' |&di< nNt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 k	r8t.j/|&d~  |&d~< |&d d k	rXt.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 }?q|>d	kr|>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q6|Cd	kr|Cdd  }E|Cdd  }Fnd	}Ed	}F|&d$ d}Gt4jj|Gdd5 }Hg }I|HD ]0}t!|}(|I6|(d  |$dt|(d  7 }$q|&d d t|A d d t|E d |&d< |&d dks:|&d dkrtjj|&d d}Jt|&d d tt|Jj0dc t|Jj1  d |&d< nFt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 qf|R|&d< |@|&d< |@|&d< |A|&d< |E|&d< |F|&d< d
|&d< |L|&d< |T|&d< |I|&d< |6|& q|$d	krJ|$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 W nB t;k
r }Z z"t<=d t:dt|Zi W Y S d }Z~ZX Y nX d S )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 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   s2   


 









(
 2
































 (


  

r  c                 C   s   g }t jdj| ddddddd}| r|D ]L}t|}|d d k	r^tj|d  |d< |d d	 |d  |d
< |	| q4|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}| r|D ]L}t|}|d d k	rntj	|d  |d< |d d |d  |d< |
| qD|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 ]}t|}|d dks<|d d kr|d d}|D ]}t|}|D ]z}||d kr^tdd|d|d d|d	  tjj|d	 |d	 d
}	|		 rtd q^tjj
|d	 |d	 ddd}
|
  q^qNq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  s<    

     
r  c                 C   s   t j }tj }|D ]}t|}|d dks<|d d kr|d d}|D ]}t|}|D ]z}||d kr^tdd|d|d d|d  tjj|d |d d	}	|		 rtd
 q^tjj
|d |d ddd}
|
  q^qNq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rfd}tjdjd|d d }| r|D ]}t|}|d |d< qFd}nPd}t	 }| j
d	d }|r||d
 }	nd}	tjj|	d}
|
j}|dkrd}t| jd}t|d d}|dd}tj j|d d}d}| r|D ]}t|}tjj|d d }| r|D ]H}t|}|d d}|d d}|d d}|d ||d < qB|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rx|dd  }nd }tjj|d$ d}|jd% |j } | |d&< |j|d'< |j|d(< |d) |d$ krt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+< n|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 }&qJ|%|& })||d7< ||d8< d9|d:< |#|d;< |t$|# }|)|d<< |d$ |d=< |d> |d?< t%jd@j|d d5dAdBdCdD! }*g }+|*D ]},t|,}-|+&|- q|d? dkr,dE|dF< dG|dH< n>|d? dIkrLdJ|dH< dK|dF< n|d? dLkrjdM|dH< dN|dF< |dO |dP< |d$ |d=< |+|dQ< t'jj|d dR }.|. r|.D ]}/t|/}0||0dS dT}1qn
|d dT}1qt(|1d|dUS t(dVdiS d 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  s2   









 (


r	  c              
   C   s   t  }z|| }t| jd}|d krtd tjj	|d d}d|_
|  tjj|d d  }|rtjj	|d d}d	|_
|  tdd
dW S tdddW S W n@ tk
r } z"td tdt|i W Y S d }~X Y nX d S )Nr   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   s4  t  }z|| }|d kr|d dkr|d dkrd| jkrb| jd dkrbt| jd }nt}d| jkr| jd dkrt| 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 ]}t|}d	|d< |d d |d  |d< |d |d krV|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 ntd#d&d%W S W nB tk
r. } z"td' td(t|i W Y S d }~X Y nX d S ))Nr  rZ   ru  rowsr   pager2  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  sr    

        



r  c              
   C   s   t  }zr|| }t| jd}|d krftd tjj	|d |d dd}|
  tddd	W S td
dd	W S W n@ tk
r } z"td tdt|i W Y S d }~X Y nX d S )Nr   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  }z|| }t| jd}|d krtd d|kr|d dkrt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 ntdddW S W nB tk
r( } z"td tdt|i W Y S d }~X Y nX d S )Nr   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  s2    



r  c              
   C   s   t  }zn|| }t| jd}|d krbtd tjj	|d d
  }td|d dW S tdd	dW S W n@ tk
r } z"td
 tdt|i W Y S d }~X Y nX d S )Nr   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   sN  t  } z|| }|d krg }tjddjddddddd	d
dddddddddd}|D ]}t|}t|d
  |d
 dkrt	jj
|d
 d}|r|j|d
< |d	 dkrt	jj
|d	 d}|r|j|d	< nd|d	< || q^td|dW S tdddW S W nB tk
rH }	 z"td tdt|	i W Y S d }	~	X Y nX d S )Nr2  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  sT    
           

r/  c              
   C   s  t  }z|| }|d krt| jd}tjj|d d}t	jj|d d}|r^|j
|_nd|_t	jj|d d}|r|j
|_nd|_|d |_|d	 |_|  td
ddW S tdddW S W nB tk
r
 } z"td tdt|i W Y S d }~X Y nX d S )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  s,    





r0  c           
      C   sN  t  } z|| }|d krg }tjddjdddddddd	d
ddddddddd}|D ]}t|}t|d	  |d	 dkrt	jj
|d	 d}|r|j|d	< |d dkrt	jj
|d d}|r|j|d< nd|d< || q^td|dW S tdddW S W nB tk
rH }	 z"td tdt|	i W Y S d }	~	X Y nX d S )Nr2  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  sT    
           

r1  c           (      C   s  d}t jjdd}|j}t }g }d}t }| jdd }|rP||d }	nd}	t	jj|	d}
|
j
}|d	krtd
}|d
kr|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rHd|d< n<|d
krxt|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 k	rtj|d&  |d&< |d' d k	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 }qj|d-kr|dd  }|dd  }nd-}d-}tjd/j|d d+d0}d-}d-}|D ].}t|}|d.|d0  7 }|d.|d0  7 }q|d-krD|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< nFt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 }$qd|#|$ }'|'|d>< ||d?< ||d@< ||dA< ||dB< ||dC< dD|dE< |!|dF< |$| qt%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    










 r6  c           C      C   s*  d}t jjdd}|j}g }g }t| jd}t }| j	dd }|rZ|
|d }	nd}	tjj|	d}
|
j}|d	kr~d
}tjjd	d }|D ]}t|}||d  qtjtd	d  }|D ]}t|}||d  q|d
krRt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 ]}t|}|d d+ t|d  }t|d,}t|d-}|d |d.< tjj|d d/ }| rV|D ]}t|}q8|d0 |d0< nd1|d0< |d d2 |d  |d3< |d |d4< t|d d*krd5|d< n.|d
krt|d% t| |d< |d |d4< t jd6j|d d7d8}d9} |D ]}!t|!}"| d:|"d8  7 } q| d9kr*| dd  }#nd9}#t!jd;j|d d7d<}$d9}%|$D ]}!t|!}"|%d:|"d<  7 }%qT|%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rRt"jj|d d})t|d dC tt|)j#d2 t|)j$  dD |d< n|d  |d krt"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 k	r"t)j*|d  |d< |d d k	rBt)j*|d  |d< |d |dZ< |d |dO< || qt+jd[d\d}1g }2|1D ] }3t|3}4d]|4d^< |2|4 qt"jj|d_ }5g }6|5D ]N}7t|7}8t,jj|8d dd`' }9|9|8da< tjj|8d d/ }:|:D ]}t|};q|8db d k	r4|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< ndk|8dj< qnd|8dj< |6|8 qt.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   r  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  rw  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 ]}|d }|d }dd}d|i}ddi}tj|t||d}| }t|j tjj|d d}| rtd ntjj||d |d}|  q$tdddS tdd dS d S )!NrZ   r}   rU   r   r   r   r   r   r3  r4  r5  r6  r5  r7  r8  r9  r:  rv   r;  r<  r4  r=  r>  r?  rA  r   rB  TzResults Inserted Successfullyr   Fz	Empty Set)r   r^   r   r_   ra   r   r   r   r   r   r   r  rI  rJ  rK  r   rL  rc   rM  r$   r   r  rg   r   )rh   rN  rl  rm   rl   rv   r   r   r   r   rd  re  rf  rg  r:  rh  ri  rj  rk  r  rm  rn  r@  ro  rp  rq  rr  rn   rn   ro   goo_shorten_url  sX    


r7  c           :   
   C   s  t  }z>|| }|d kr4|d }tjjdd}|j}t| j	d}g }g }t
 }	|d }
tjj|
d}d}|d dkr|d	7 }n|d
7 }|d dkr|d7 }nPtjj|d d }|D ]}t|}|t|d  q|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| }n:tjdjdddd tdd }t|t| }nt|d dkrtjdjdddd tdd }t|}n2tjdjdddd tdd }t|}g }g }|D ]}t|}t jj|d d }|! r|D ]H}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|k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>< nNtjdjddd?t)dd@  tdAdB }|dC |d< |d |d>< t*|d d%krdD|d< qD|d dkrtjdjdddd td;d< }t| t+jj|dE}!|!j,}t+j j|d= dE}"n`t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 }%qP|%|d< t|d d%krDdD|d< nt*|d d%krdD|d< n|jdkr|d dkr"tjdjdddd tdd }t|| }t|dG t| |d< |d |d>< nftjdjddd?t)dd@  tdd }t|| }t|d t| |d< |d |d>< n|d dkrtjdjdddd tdd }|dG |d< |d |d>< nNtjdjddd?t)dd@  tdd }|d |d< |d |d>< t|d d%krDdD|d< |dH dIkrddJ|dH< dK|dL< n>|dH dMkrdN|dH< dO|dL< n|dH dPkrdQ|dH< dR|dL< |dS d k	rt-j.|dS  |dS< |dT d k	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r|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	rh|)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_< nFt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
q|4|5 }8|8|dl< |)|dm< |)|dn< |*|do< |.|dp< |/|dq< dr|ds< |2|dt< || qJt7d'||j||duW S t7dvdwdxW S W nB t8k
r }9 z"t9:dy t7dzt|9i W Y S d }9~9X Y nX d S ){Nr   rZ   rr   r   rU   r2  r"  r   r3  r4  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  r5  
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   




























 
 

rB  c           ;   	   C   s	  g }i }g }ddddddg}ddg}d	d
g}t  }|D ]}tjj|d }|D ]}	t|	}
|t|
d  qT|D ]v}|D ]j}dt| d }|dkr|d7 }n(|g kr|d7 }n|dd	| d 7 }|
| t|}tjjddd tdd }|dkrDtjdjdddd tdd }t|}n2tjdjdddd tdd }t|}g }g }|D ]^}t|}tjj|d d }| r|D ]H}	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%|d0< d)|d1< |d2 d3 t|d  }t|d4}t|d5} | d |d6< |d7 d8 |d9  |d:< |d7 d8 |d9  |d7< |d	kr|dkrptjdjdddd td;d< }t| tjj |d=}!|!j!}tj j|d> d=}"n`tjdjddd?t"dd@  tdAdB }tjj |d=}!|!j!}tj j|dC d=}"|"D ]}#t|#}$|$dD }%q|%|d< t#|d d%krdE|d< nt$|d d%kr,dE|d< n|dkrztjdjdddd tdd }|dF |d< |d |dG< nNtjdjddd?t"dd@  tdd }|d |d< |d |dG< t#|d d%krdE|d< |dH dIkrdJ|dH< dK|dL< n>|dH dMkr"dN|dH< dO|dL< n|dH dPkr@dQ|dH< dR|dL< |dS d k	r`t%j&|dS  |dS< |dT d k	rt%j&|dT  |dT< t'jj |dU dV}&t|&j(d8 t|&j) |dW< t*jdXj|d ddY}'d)}(d)})|'D ].}	t|	}
|(dZ|
dY  7 }(|)dZ|
dY  7 })q|(d)kr,|(dd  }*|(dd  }+nd)}*d)}+t+jd[j|d dd\},d)}-d)}.|,D ].}	t|	}
|-dZ|
d\  7 }-|.dZ|
d\  7 }.q^|-d)kr|-dd  }/|-dd  }0nd)}/d)}0t,|/d]kr|/d d] }/|/d^7 }/t,|*d_kr(|*d_ dkr|*d d] }*n"|*d d_ }*|*d}*|*d% d^ }*|d` da t|+ db dc t|/ db |d`< |dd deksp|dd dfkrt'jj |dg dV}1t|d` dh tt|1j(d8 t|1j)  di |d`< nFt'jj |dU dV}2t|d` dh tt|2j(d8 t|2j)  di |d`< t-jj|d ddj.  }3t/jj|d dk }4d%}5d}6|4D ]"}7t|7}8|5|8dl  }5|6d }6q@|5|6 }9|9|dm< |*|dn< |*|do< |+|dp< |/|dq< |0|dr< ds|dt< |3|du< t|dv t| dv | }:|||:< ||dw< ||dx< q|| qqxq8t0d'|dyS )zNrZ   rY   r1  r  r{  r6  r   r/  r'  Zandroidr8  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 ASCrI  r   r  r   r  r  r  r  r  rU   r   r4  r5  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   rA  r   ZdeviceTypeArrr  catrm   r   ctZdevTr5  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  s*   





 























rF  c                 C   sd  t  }z|| }|d }|d kr
t }|d }tjjdd}|j}t| j	
dd | j	
ddkrt| j	
d}ni }|d }	tjj|	d}
g }tjj|djdd	 }t|d
krtjj|djdd	 }| r|D ]}t|}q|d }|d }	tjj|d }| rD|D ]}t|}|| q*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 }g } i }!i }"d}#i }$d
}%t| |}&t|& tjj|ddddd}'g }(d})|' rj|'D ]B}*t|*}+t|+d dd|+d< |(|+ |+d |!|+d < q&g },|D ]t}t|}-tjdj|-d dd}.d}/|.D ]}0t|0}1|/d|1d  7 }/q|/dkr|/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 k	rtj |-d"  |-d"< d#|-d$< d%|-d&< d'|-d(< d)|-d*< ||-d+< ||-d< ||-d,< |dkrd-|kr|d- d.kr|
j!d/krR|d0 d1kr|-d2 |-d3< |-d3 |-d4< |-d2 |-d5< n|-d5 |-d3< |-d3 |-d4< t"|-d3 d
krd6|-d3< n|d0 d1krxt#j j|-d2 d7}6nt#j j|-d5 d7}6|6D ]}7t|7}8|8d8 }9q|9|-d3< |d0 d1kr|-d2 |-d5< t"|-d3 d
krd6|-d3< nt"|-d3 d
krd6|-d3< n|
j!d/krR|d0 d1kr8|-d9 |-d3< |-d3 |-d4< n|-d3 |-d3< |-d3 |-d4< n@|d0 d1krz|-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; }?|? r|?D ]}@t|@}Ag |Ad<< g |Ad=< t&jd>j|Ad d? }B|B r|BD ]j}Ct|C}D|Dd@ dkr|Dd@ d kr|Ad< |Dd@  |DdA dkrT|DdA d krT|Ad= |DdA  qT|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 ]}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 k		rn|Wdc dk	rn|Wdc dpk	rn|#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 k
rd)|+dz< d|+d{< d
|+d|< n<|+d |&d} k
rd)|+dz< d|+d~< d
|+d|< nd'|+dz< d
|+d|< |+dv dk
rd)|+dz< d|!krd|+d< |<d k	r|+d |"k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< ||+ 	qi }[d|!krddi}[d|Wd< |W|[|d}\||\ g }	qi }]d|!krddi}]d|Sd< |S|]|d}^||^ g }qJi }_d|!krVddi}_d|Od< d|!krpddi}_d|Od< |O|_|d}`||` g }qi }ad|!krddi}ad|Ld< d|!krddi}ad|Ld< |L|a|d}b||b g }qP|H|d}c||c g }qd'}dd'}ed'}fd
}gd
}hdt)|#dd   d }i|/|i t0|}jg }k|jD ]}lt|l}Wd
|Wdh< |Wd dkr|Wd dkr|d)}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 qFd}md}n|gdkr<|ndot)d 7 }n|hdkrV|ndot)d 7 }n|dd'krp|mdot)d 7 }m|ed'kr|mdot)d 7 }mt|md t)|d d t)|e  |ndkr"t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 ]P}w|wd }xd'}y|,D ]8}z|zd |xkr|zd |wd< d)}yn|yd'krd
|wd< qʐq|kD ]D}{t2jj|{d d }||| r||D ]}}t|}}~| |~ q4qg }t3 }|kD ],}|d |kr`|| |4|d  q`|-||| |(|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͜	}$qrt5d|$iW S t5d'ddМW S nt5d'ddМW S W nB t6k
r^ } z"t78dҡ t5dt)|i W Y S d }~X Y nX d S )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  rE  rF  rD  r#  rG  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  rz  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  rJ  r  rk   r   rk  ZbaseTmaxDetailsZbtmZbtmObjr   r  r  r  r  r   r  r8  r9  r:  r;  r<  r=  rK  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_  sx   




 





"






 
   
    
$    
            


           






















 












         












*
rQ  c              
   C   s.  t  }z|| }|d krt }|d dkr|d dkrd| jkrj| jd dkrjt| jd }nt}d| jkr| jd dkrt| jd }nd}|d | }|| }d}|| t|}	g }
t	|	}|	r|	|| }|D ]}g }t
|}tjj|d d	 }| r4|D ]}t
|}|| q||d
< |d dkrx|d dkr|d d krd|d  |d< n,|d dkr|d d krd|d  |d< |
| qtd|
|dW S tdddW S ntdddW S W nB tk
r( } z"td tdt|i W Y S d }~X Y nX d S )Nr  rZ   ru  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exIDrI  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  r5  r  r  r  rj   rm   ZmetValuesArrr  Z
metaValuesZmetValZmetaObjr   rn   rn   ro   exerciseTobeReviewedI  s\    





rV  c              
   C   s   t  }|| }z|dkr|d }g }g }tjj|dd }|D ]}t|}||d  qFt	jj|ddd}	|	D ]}
t|
}|| q|t
d|dW S t
d	d
dW S W n@ tk
r } z"td t
dt|i W Y S d }~X Y nX d S )Nr   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  s(    

r[  c              
   C   s   t  }|| }z|dkr|d }g }g }tjj|dd }|D ]}t|}||d  qFt	jj|ddd}	|	D ]}
t|
}|| q|t
d|dW S t
d	d
dW S W n@ tk
r } z"td t
dt|i W Y S d }~X Y nX d S )Nr   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   rX  rn   rn   ro   getuserPlans  s(    

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rH|	d d$krp|	d d krpd%|	d  |	d< q|	d d$kr|	d d krd&|	d  |	d< q|	d d#kr|	|	 |	d d'kr|	|	 |	d d(kr||	|	 q|t
|||d)W S W nB tk
r } z"td* t
d+t|i W Y S d }~X Y nX d S ),NrU   rB   r   rT   ra  rf  rb  rh  exerciseTypeexIconpreExInstructionspostExInstructionsr  weightExistsdistanceExists
timeExists
repsExistsr  setInstructionsheightExistsspeedExiststimeShortestre  rc  rS  rR  rI  ZextracoloumnstmaxReps
tmaxWeighttmaxDistancetmaxTime	tmaxSpeed
tmaxHeightrZ   r   rT  rU  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|    

  





rp  c                 C   sj  t  }z|| }t| jd}|d }|d kr tjj|d d}|j	d kr|j	dkrtjj|j	d}|j
dkrtddd	W S td
 tjj|j|j|jd|j|j|j|j|j|j|j|j|j||j|j|j|j|j|j|j |j!|j"||d}|#  |j$|_%|j$|_	|#  t&jj'|j$d( }|D ]0}	t)|	}
t&jj|
d |j$||d}|#  q0t*jj'|j$d( }|D ]0}t)|}t*jj|d |j$||d}|#  qzt+jj'|j$d( , }t+jj|j$|d |d d||d}|#  t-jj|j$ddd|dd}|#  tddd	W S W nB t.k
rd } z"t/0d tdt1|i W Y S d }~X Y nX d S )Nr   rU   rq   rr   r   r   FzCopied plan not published yet.r[   zNew plan copy)r.  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   )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  rq  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    


	
ru  c              
      s  t  }zz|| }td }|d krp|d }|d }tjjdd}|j}| jddkrnt	
| jd}ni }|d }	tjj|	d}
|d}t| |d krtd	 |d t| }td
|iW S td tjj|djdd }t|dkrtjj|djdd }| r|D ]}t|}q"|d   fddt|D }t| || }td
|iW S ntdddW S W nB tk
r } z"td tdt|i W Y S d }~X Y nX d S )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   ry  ro   completePlanJsonCachedZ  sJ    





r~  c           \      C   sL  t d }| jddkr,t| jd}ni }tjjdd }g }|	 rH|D ]}t
|}|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 }g }i }d}t| |}t| tjj|ddddd}g }d}|	 r||D ]B}t
|}t|d dd|d< || |d ||d < q8g } 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 k	rt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 ]}/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 ]8}:d};t
|:}<|d }||<dI  |<dJ d k	rL|<dJ dkrL|<dJ dSkrL||<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] krzd&|d^< d|d_< d|d`< n<|d |da krd&|d^< d|db< d|d`< nd$|d^< d|d`< |dZ dkrd&|d^< dc|krdc|dd< || qi }?de|kr
dddei}?de|<dd< |<|?|df}@||@ g }qi }Adg|krFdddgi}Adg|8dd< |8|A|dh}B||B g }q:i }Cdi|krdddii}Cdi|4dd< dj|krdddji}Cdj|4dd< |4|C|dk}D||D g }qi }Ed|krdddi}Ed|1dd< dl|krdddli}Edl|1dd< |1|E|dm}F||F g }q@|-|dn}G||G g }qd$}Hd$}Id$}Jd}Kd}Lt jj|dodpdqddrdsdtdudvdwdxdydzd{d|d}d~ddddddd}Mg }N|MD ]}Ot
|O}<d|<dO< |<dy dkrd&}J|<d dkrd&}Hn|<d dikrd&}I|Jd&k	r|<d dkrd}Kndi}K|<d dk	r
d}Lndi}L|N|< qg }Pg }Q|Kdik	r8|Qd |Ldik	rL|Qd |Hd$k	r`|Pd |Id$k	rt|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 
qD|ND ]D}Xt"jj|Xd d }Y|Y	 
rb|YD ]}Zt
|Z}[||[ 
q
qb||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< || qT|#d|tj$ |S d S )Nrv  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  rE  rF  rD  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  r^  r_  r`  ra  rb  rc  rd  r  re  r  r  )r  rI  r5  r6  rK  r  r7  rz  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=  rK  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  rL  rM  rN  rO  rn   rn   ro   r{    s   

 





 
   
    
$     
            

















          








                      	


      
 


 

 


r{  c                 C   s   t  }z|| }|d krg }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|}|| qlt	d|dW S t	dddW S W n@ t
k
r } z"td  t	d!t|i W Y S d }~X Y nX d S )"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	maxHeightri  rj  rk  rl  rm  rn  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  sP    
                 
r  )r   re	django.dbr   django.core.mailr   Zdjango.formsr   django.shortcutsr   django.db.modelsr   r   django.httpr   r	   django.template.loaderr
   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   rJ  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/  r0  r1  r6  r   r7  rB  rF  rQ  rV  r[  r\  rp  ru  r~  r{  r  rn   rn   rn   ro   <module>   s,  \ 8

6



 



    

 |

 y

  2

   P)

(

  





     '

%

&

+



T



B

$
/

Y



!

#



y



   =



 



9







"



"  \7

  $ l

   j

7





>

]

-  h

