o
    H`                    @   sF  d dl Z d dlmZ d dlmZmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZmZ d dlmZ d d	lmZ d d
lmZmZmZ d dlmZ d dl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' d dl(m)Z)m*Z*m+Z+ d dl
mZ d dl,m-Z- d dl.m/Z/ d dl0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6 d dl7m8Z8m9Z9 d dl:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@ d dlAmBZB d dlCmDZDmEZEmFZFmGZGmHZH d dlImJZJ d dlKmLZL d dlMmNZN d dlOZOzd dlPmQZQ W n eRy   d dlSmQZQ Y nw d dlTmUZUmVZVmWZWmXZXmYZY ddlZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZemfZfmgZgmhZhmiZimjZjmkZkmlZlmmZmmnZnmoZompZpmqZqmrZr d dlsT d dltmuZu d dlvmwZw d dlxZxd dlyZyd dlmZ dd!d"Zze)d#d$ge*eEeHfe-d%d& Z{e)d#d$ge-d'd( Z|e)d#d$ge*eEeHfe-d)d* Z}d+d, Z~e)d#d$ge*eEeHfe-d-d. Ze)d#d$ge*eEeHfe-d/d0 Ze)d#d$ge*eEeHfe-d1d2 Ze)d#d$ge-d3d4 Ze)d#d$ge-d5d6 Ze)d#d$ge*eEeHfe-d7d8 Ze)d#d$ge-d9d: Zd;d< Zd=d> Ze)d#d$ge*eEeHfe-d?d@ Ze)d#d$ge*eEeHfe-dAdB Ze)d#d$ge*eEeHfe-dCdD Ze)d#d$ge*eEeHfe-dEdF Ze)d#d$ge*eEeHfe-dGdH ZdIdJ Ze)d#d$ge*eEeHfe-dKdL Ze)d#d$ge*eEeHfe-dMdN Ze)d#d$ge*eEeHfe-dOdP Ze)d#d$ge*eEeHfe-dQdR Ze)d#d$ge*eEeHfe-dSdT Ze)d#d$ge*eEeHfe-dUdV Ze)d#d$ge*eEeHfe-dWdX Ze)d#d$ge*eEeHfe-dYdZ Zd[d\ Ze)d#d$ge*eEeHfe-d]d^ Zd_d` Ze)d#d$ge*eEeHfe-dadb Ze)d#d$ge*eEeHfe-dcdd Ze)d#d$ge*eEeHfe-dedf Ze)d#d$ge*eEeHfe-dgdh Ze)d#d$ge*eEeHfe-didj Zdkdl Ze)d#d$ge*eEeHfe-dmdn Ze)d#d$ge*eEeHfe-dodp Ze)d#d$ge*eEeHfe-dqdr Ze)d#d$ge*eEeHfe-dsdt Ze)d#d$ge*eEeHfe-dudv Ze-dwdx Ze)d#d$ge*eEeHfe-dydz Ze)d#d$ge*eEeHfe-d{d| Ze)d#d$ge*eEeHfe-d}d~ Ze)d#d$ge*eEeHfe-dd Ze)d#d$ge*eEeHfe-dd Ze)d#d$ge*eEeHfe-dd Ze)d#d$ge*eEeHfe-dd Ze)d#d$ge*eEeHfe-dd Ze)d#d$ge*eEeHfe-dd Ze-dd Ze-dd Ze)d#d$ge*eEeHfe-dd Ze)d#d$ge*eEeHfe-dd Ze)d#d$ge*eEeHfe-dd Ze)d#d$ge*eEeHfe-dd Ze)d#d$ge*eEeHfe-dd Ze)d#d$ge*eEeHfe-dd Ze)d#d$ge*eEeHfe-dd Ze)d#d$ge*eEeHfe-dd Zdd Zdd Zdd Ze)d#d$ge*eEeHfe-dd Zdd Ze)d#d$ge*eEeHfe-dd Ze)d#d$ge*eEeHfe-dd Ze)d#d$ge*eEeHfe-dd Ze)d#d$ge*eEeHfe-dd Ze)d#d$ge*eEeHfe-dd Ze)d#d$ge*eEeHfe-dd Ze)d#d$ge*eEeHfe-dd ZdS )    N)settings)S3URLPAGING_ROWS)render)APIView)Response)cachescache)model_to_dict)timezone)UserPlanUserTestPlanUserActions)
connection)ValidationError)GoalsProgramTypeVideosPlanPurposesPlanAbilitiesPriceMappingPriceConversionCountry
TmaxLookup
AppVersionAdvExercisesNewExercise)api_viewauthentication_classespermission_classes)never_cache)dictfetchall)MaxMinAvgQFCount)CelebrityPlansLikesCelebrityUploads)UserFitnessProfiletrainerProfile
UserfollowUserAddressgoals)AuthResponseSerializer)StartFitAuthenticationSessionAuthenticationStartFitSessionUtilAuthResponseIsAuthenticated)PlanMonetization)
PlanRating)EmailMessage)logger)ListAPIViewListCreateAPIViewRetrieveAPIViewRetrieveUpdateDestroyAPIViewRetrieveDestroyAPIView   )Plan
Plan_levelPlan_PurposePlan_PeriodPlan_MesocyclePlan_Microcycles	Plan_DaysPlan_SessionsPlan_Activity
Plan_RoundPlan_ActionsDraftedPlan	PlanGoalsSelectedAbilitiesPlanShortUrlsPlanCountryCoachCountryPlanComments
PlanVideosPlanExComments
PlanExTmaxMetabolicValuesCategoryLevel
GymCountry)*)JsonResponsestatus$   c                    (   t jt j  d fddt| D S )N c                 3       | ]}t  V  qd S Nrandomchoice.0iZlettersanddigit uC:\Users\DELL\Desktop\soubhikg1894-stratfit-d75d91182fa3\soubhikg1894-stratfit-d75d91182fa3\services\Program\views.py	<genexpr>:       z num_and_alpha.<locals>.<genexpr>stringascii_lettersdigitsjoinrangeZ	strlengthrh   rg   ri   num_and_alpha8      rs   GETPOSTc           :      C   s  t  }z_|| }|d }|d kr\z,t| jd}tjddj	||d d
ddd	d}| r]|D ]#}t|}t| |d	 d
krS|d d
krSd
|d< nd|d< |d }q8n
ddi}t|W W S i }	t|d }
|
d }|d }|
d }t| dzdd}d|	d< d}g }t|D ]\}}|dd dkr|}|t| qd}|}d
}|rg }t|D ]\}}g }t||}||_||j }q|d d  }|rd}|d d  }nd}|s|d d  D ]}d}|jD ]}|}|t|j }d}|jD ]}|}|}qqtjj||jd d
|t|j|jd |jd ddd	}|  |jD ]}tjj||j|jd t|jd
dd|jd |jd d	} |   tjj|d}!td| j | j|!_|!  |jD ]}tjj||j| j|jd d
t|jddd|jd |jd d}"|"  td |jD ]j}#|#jD ]}$|$}%qt jj||j| j|"j|#jd d
t|#jdddd|#jd |#jd d }&|&  |#jD ]3}$t!jj||j| j|"j|&j|$jd d
ddt|$jdd|$jd |$jd d!}'|'  td" |$jD ]}(t"jjd{i d#|d$|jd%| jd&|"jd'|&jd(|'jdd
d)|(jd d*|(jd+ d, d-dd.dd/dd0dd1dd2|(jd d3|(jd })|)  t|(jd+ d, d4 |(jd+ d, d5kr2|(jD ]}*t#jjd{i d#|d$|jd%| jd&|"jd'|&jd(|'jd6|)jd7d8d9d:d;|(jd+ d, dd
d<t|(jd-dd.dd0dd1dd2| d3|*jd }+|+  	 td?|*jd+  d>|*jd+ v rtd@ dA|*jd+ v r|*jd+ },nd},dB|*jd+ v r|*jd+ }-nd}-t|-dC t$jjd{i d#|d$|jd%| jd&|"jd'|&jd(|'jd6|)jdD|+jdE|*jd+ d> dF|*jd+ dG dH|*jd+ dH dIddJdKdL|*jd+ dM dNddO|*jd+ dO dPd
dQddRddSddT|*jd+ dU dV|*jd+ dW dX|*jd+ dY dZ|,d[|-d\|*jd+ d] d^dd_dd`dad.dd0dd1dd2|*jd d3|+j%}.tdb d=|*jd+ v rrt|*jd+ d= dc dA|*jd+ v r|*jd+ },nd},dB|*jd+ v r|*jd+ }-nd}-t|-dC t$jjd{i d#|d$|jd%| jd&|"jd'|&jd(|'jd6|)jdD|+jdE|*jd+ d= dF|*jd+ dG dH|*jd+ dH dIddJdKdL|*jd+ dM dNddO|*jd+ dO dPd
dQddRddSddT|*jd+ dU dV|*jd+ dW dX|*jd+ dY dZ|,d[|-d\|*jd+ d] d^dd_dd`dad.dd0dd1dd2|*jd d3|+j%}.dd|*jd+ v r0|*jd+ dd dekr0|(jD ]"}/	 d=|/jd+ v r|/jd+ d= }0d>|/jd+ v r|/jd+ d> }0qt$jjd{i d#|d$|jd%| jd&|"jd'|&jd(|'jd6|)jdD|+jdE|0dHddIddJdKdL|*jd+ dM dNddO|*jd+ dO dPd
dQddRddSddTddVddXddZdd[dd\dd^ddfded_dd`dad.dd0dd1dd2|*jd d3|+j%}1tdg q]|(jd+ d, dhkr|(jD ]}2tdi t|2 t#jjd{i d#|d$|jd%| jd&|"jd'|&jd(|'jd6|)jd7|2jd d9d:d;|2jd+ d, dd
d<t|(jd-dd.dd0dd1dd2|2jd d3|2jd }+tdj |+  |2jD ]G}*t|* d=|*jd+ v rJtdk t$jjd{i d#|d$|jd%| jd&|"jd'|&jd(|'jd6|)jdD|+jdE|*jd+ d= dH|*jd+ dH dIddJdKdL|*jd+ dM dNddO|*jd+ dO dPd
dQddRddSddTddVddXddZdd[dd\dd^dd_ddFdd`dad.dd0dd1dd2|*jd d3|+j%}.qtdl |2jD ]}3d=|3jd+ v rd|3jd+ d= }4 nqQtdm|4 t$jjd{i d#|d$|jd%| jd&|"jd'|&jd(|'jd6|)jdD|+jdE|4dHd
dIddJdKdL|*jd+ dM dNddO|*jd+ dO dPd
dQddRddSddTddVddXddZdd[dd\dd^dd_ddFdd`dad.dd0dd1dd2|*jd d3|+j%dfde}.qq?qqÐqqaq&qtdn t&jj|dodp}5|5  t&jj|dqdp}6|6  tjj|dr}7d|7_'|7  tjj|dr}8d
|8_(|8  ds|	dt< t)|	W W S  t*y[ }9 zdu}9|9|	dt< W Y d }9~9W d S d }9~9ww tddvdwW S  t*y }9 zt+,dx tdyt-|9iW  Y d }9~9S d }9~9ww )|Nidutf-8User__idPlan__idplan_idcreatedBy_id	planId_idplanJsonr[   planId_id__planStatusr?   r   successFPlanInfoZplanstructurer\   c                    r]   )Nr^   c                 3   r_   r`   ra   rd   rg   rh   ri   rj   _   rk   z7ExercisesView.<locals>.num_and_alpha.<locals>.<genexpr>rl   rr   rh   rg   ri   rs   ]   rt   z$ExercisesView.<locals>.num_and_alphaTSuccessparentrootname   )	
plan_id_idperiod_namer[   num_of_mesocyclesnum_of_microcyclespdc_id	parent_idcreated_By_idmodified_By_id)	r   period_id_idmesocycles_namer   r[   r   r   r   r   rw   Meso)r   r   
meso_id_id
micro_namer[   num_of_days
total_loadr   r   r   r   zn2 will be days..)r   r   r   micro_id_idday_namer[   num_of_sessionsr   	rest_timer   r   r   r   )r   r   r   r   	day_id_idsession_namer[   r   r   num_of_exercisesr   r   r   r   zn4  is Activityr   r   r   r   r   session_id_idActivity_nameActivity_typedetailsZ
folderNamer   r   warm_upr   r   r   r   ZsghdddddddddddaZSimpleactivity_id_id
round_namerounddescriptionzRound exercises
round_typenum_of_actionsexerciseNameexerciseZdchccccccccccccscgsdcsdjZdhsjdgjshdgksgsjdgjsvcjhvsvcjsvspeedPotencyZspeedStrengthPotencyZEdjggggggggggggggggggggggggggggggggggggggggggggggggggggggfddddddddddddround_id_idexercise_id_idselected_RPEZselectedRPEnum_of_setsmin_repsmax_repsc   prescribed_repsnum_of_repsall_out	intensityintensity_rangecalculated_abilityintensity_levelextra_abilityhypertrophy_potencyZhypertrophyPotencylactate_generate_potencyZlactateGenerationPotencystrength_speed_potencyZstrengthSpeedPotencyspeed_potencyspeed_strength_potencymaxstrength_potencyZmaxStrengthPotencystrength_potency_zonestrength_endurance_potencyinstructionr^   ZhfkhfffffffffffffffffffffffffffffkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllZ*kjsdgsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagggtypewarmupaction_typeZhjkjffffffffgfhskfjsfsjComplexzComplex Roundzhi RoundzExercise ExistszExercise not Exists
exerciseIdZgdssssssssssssssshfX   r{   
country_id   pkzData stored successfullymessageplease enter valid idUser logged outr   r   something wrongmsgr\   rh   ).r3   get_user_insessionjsonloadsbodydecoderK   objectsselect_relatedfiltervaluesexistsdictprintrY   	enumerategetappendNodeZfind_childrenchildrenlenrC   createdatasaverD   rw   r@   r   duration_weeksrE   rF   rG   rH   rI   rJ   r   rO   
planStatusr[   r   	Exceptionr9   	exceptionstr):requeststratsessionutilusernameuserplanIdjsonDetailsdtdataObjdraftIdrespplanDetailsplanInfor   rs   rootnoder   rf   dZstillmorenodespresentZ
curr_nodesZcurrent_levelZ
next_levelnZcurrent_level_childscsZnumofmesocyclesZ	Meso_dataZnumberofmicrocyclesn1Z
Micro_dataZPeriodperiodr   ghZMicron2Zn3sessionZDaysSessionsZn4ZActivityZ
actionnodeZRoundsr   ZSpeedstrengthActionsactionexIdActionZn5Z	checknoder   planCountry1planCountry2planInfupdateDrafterh   rh   ri   ExercisesView<   s  



	



68>
DH
L 
L $
  

 i
r  c           -   #   C   s  | j }|d }z|rtjj|d}|j}tjj|ddddddddd	d
	}g }g }g }g }	g }
g }g }g }i }i }|D ]V}t|}t	jj|d dddddddd}t
| |d d  D ]&}|}tj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 ]}|}tj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ddddddddd}|d d  D ]w}|}tjj|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%ddddddd!d&d'd(d)d*d+d,d-d.d/dd0d1d2d3d4d5d6d7}#|#d d  D ]
}$|$}%||% q/|"|d8}&||& g }q ||d9}'|
|' g }q||
d:}(|	|( g }
q||	d;})||) g }	q||d<}*||* g }q~||d=}+||+ g }qa||d>}|| g }q>||d?< n	d@|d?< W t|S W t|S  ty }, zdA},dB|dC< |,|d?< W Y d },~,t|S d },~,ww )DNrw   r   r   r   r[   num_of_periodsr   Zactivation_statusZ	cover_imgZ	thumb_imgr{   r{   r   r   	period_idr  r   )meso_idr  r   r   r   )micro_idr  r   r   r   )day_idr  r   r   
session_idr  r   r   r   )activity_idr  exercise_idr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )ZActivityInfoZ
ActionInfo)SessionInfoZActivityList)ZDaysInfoZSessionList)Z	MicroInfoZDaysList)ZMesoInfoZ	MicroList)
PeriodInfoZMesoList)r   Z
PeriodListr   zplease subscribe a planr   Fr   )r   r   r   r   r{   r@   r   r   r   rC   r   rD   rE   rF   rG   rH   rJ   r   r   r   )-r   r   viduser1planidplan_detailsZ
period_ArrZmeso_ArrZ	micro_ArrZdays_ArrZsession_ArrZactivity_ArrZactions_ArrZplan_ArrZ	plan_dictr   Z	plan_dataZperiod_detailsdata1Zperiod_dataZmeso_detailsdata2Z	meso_dataZmicro_detailsdata3Z
micro_dataZdays_detailsZdata4Zday_dataZsession_detailsZdata5session_dataZactivity_detailsZdata6Zactivity_dataZaction_detailsZdata7Zaction_dataZact_dictsession_dictZ	days_dictZ
micro_dictZ	meso_dictZperiod_dictr  rh   rh   ri   PlanView  s   $
$$(,.2J















	r(  c                 C   s  | j }i }t }i }|d }i }|}t|}g }	z|| }
|
d }|
d krܐz|d }|rB|rAtd|d g }	|}|| }n|r>|d }g }g }	tjj|d	 }|d d  D ]}d|d< |
| q\tjj|d	 }|d d  D ]}d|d< |
| qwtjj|d	 }|d d  D ]}d|d< |
| qtjj|d	 }|d d  D ]}d	|d< |
| qtjj|d	 }|d d  D ]}d
|d< |
| qtjj|d	 }|d d  D ]}d|d< |
| qtjj|d	 }|d d  D ]}d|d< |
| qtjj|d	 }|d d  D ]}d|d< |
| q||d< ||d< |||d < |d }t|| tjj|d|d	ddd}| rtd |D ]R}t|}t| |d }t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)}| rtd* |D ]}t|}|	
| qqWtd+ g }	qWn
td, d }td- td.|d |	d/W W S  ty } zd0}||d1< W Y d }~W d S d }~ww td2d3d4W S  ty } ztd5 td6t|iW  Y d }~S d }~ww )7Nrw   session token: exists in cacher  r   
depthlevelr?               r      planuser_idr[   r{   r{   r[   zUserplan existsPlan_Actions__iduserplan_idheight	totalRepssessionStatusadvTimecreatedDateactionStatusplanaction_idr6  actionIntensityactionWorkWeightspeed
actionSkip
actionTmaxr3  advDistancer  
actionDateplanaction_id__day_id_idplanaction_id__activity_id_idplanaction_id__round_id_idplanaction_id__session_id_idzuserProgramActions existszuserProgramActions not existszdoes not existzWhat can I doT)r   ZplanStructureZplanCompletedr   r   Fr   r   r   r   )r   r3   r	   r   r   r   rC   r   r   r   r   rD   rE   rF   rG   rH   rI   rJ   setr   r   r   r   r   rY   r   r9   r   r   )r   r   r   r   r   r   infolookuptable_keycachesessionZuserPlanActionsr   r   r  r1  
perioddatarf   mesodata	microdatadaydatasessiondataactivitydata	rounddata
actiondatauserplanDetailsr   ZuserProgramIdZuserProgramActionsZuadataZudtplanidsr  rh   rh   ri   Plan_Detailsv  s   



F

rW  c           
   
   C   s   | j }i }z>|d }tjj|d }g }i }|d d  D ]	}||d  qdd }||D ]}tjj|d }||d< q/W t|S  ty^ }	 zd}	|	|d< W Y d }	~	t|S d }	~	ww )	Nrw   r  r   c                 S   $   g }| D ]}||vr| | q|S r`   r   )exercises_idr  numrh   rh   ri   duplicate_remove     
z&ExerciseList.<locals>.duplicate_remover   r   zplese enter valid id)	r   rJ   r   r   r   r   r   r   r   )
r   r   r   r  actionsrZ  rf   r\  	exercisesr  rh   rh   ri   ExerciseList  s*   
r`  c              
   C   s  t  }z|| }t| jd}|d }|d krt| jd}d|d d v rtjj|d d d |d	dd}t
| | rm|D ]}t|}qGtjj|d d}	t|d |	_||	_||	_|	  |	j}
n$t
|d d  tjjt|d |d d d ||d}|  |j}
td	d
|
dW S tdddW S  ty } ztd tdt|iW  Y d }~S d }~ww )Nrx   rw   r1  r   r~   r}   r~   r   r   r~   r}   modifiedBy_idTDraft Saved Successfullyr   r   r   Fr   r   r   r   )r3   r   r   r   r   r   rK   r   r   r   r   r   r   r   dumpsr   r}   rc  r   rw   r   rY   r   r9   r   r   )r   r   r   rJ  r   r   
updateJsonr   r   updater   
createJsonr  rh   rh   ri   savePlanJson  sN   


rj  c              
   C   s  t  }t| jd}z2|| }|d kr8tjj|d d	 }t
|d d d | r0|d d dkrtjj|d d }tjj|d d }tjj|d d }tjj|d d }tjj|d d }	tjj|d d }
tjj|d d }tjj|d d }tjj|d d}d|_|  nhtjj|d d }tjj|d d }tjj|d d }tjj|d d }tjj|d d }	tjj|d d }
tjj|d d }tjj|d d }tjj|d d}d|_|  tjj|d d	}| r(tjj|d d	}d|_|  td
ddW S tdddW S tdddW S  ty_ } ztd tdt|iW  Y d }~S d }~ww )Nrx   rw   r   r   r   Z-gggggggggggggggggggggggggggggggggggggggggggggr?   r   r   Tz%Plan changed to Daftmode successfullyr   F!There is no plan with this planIduser logged outr   r   )r3   r   r   r   r   r   r@   r   r   r   r   r   rJ   deleterI   rH   rG   rF   rE   rD   rC   r   r   r   rK   r[   rY   r   r9   r   r   )r   r   r!  r   programr1  roundsactivityr  daymicromesor  ProgramZDraftZ	Draftmoder  rh   rh   ri   publishToDraft(  sX   





rw  c              
   C   s  t  }t| jd}z|| }|d kr|d d krtjj|d d	 }t
jj|d d	 }tjj|d d	 }tjj|d d	 }tjj|d d	 }tjj|d d	 }	tjj|d d	 }
tjj|d d	 }tjj|d d	 }tjj|d d	 }tdddW S td	d
dW S td	ddW S  ty } ztd tdt|iW  Y d }~S d }~ww )Nrx   rw   rk  r   rl  Tz!Your Program Deleted Successfullyr   Frm  rn  r   r   )r3   r   r   r   r   r   rJ   r   r   ro  rI   rH   rG   rF   rE   rD   rC   r@   rK   rY   r   r9   r   r   )r   r   r   r   actrq  rr  r  rs  rt  ru  r  r1  draftr  rh   rh   ri   
deletePlanZ  s0   

rz  c              	   C   s  t jjddd}g }|D ]}t|}||d  qt| tj jd|d}t| g }g }g }g }	g }
g }g }i }t|d dd }g }g }|D ]S}t	|}t|d	 |d
 dkrp||d
  |	|d  ||	}|d
 dkr||d
  |
|d  ||
}|d
 dkr||d
  ||d  ||}qMt
||d< t
||d< t
||d< t
||d< t
||d< t
||d< td|d |d |d |d |d |d dS )Nr-  userTyperw   r?   )r   ZcreatedBy_id__inZfffffffffffffffffffffffffc                 S   rX  r`   rY  originalplanneroriginalr[  rh   rh   ri   r\    r]  z&programStats.<locals>.duplicate_removeZfgggggggggggggggggggggggggprogramType	createdByr,  Ztype1coach1Ztype2coach2Ztype3coach3T)r   BeginnerZBeginnerCoachIntermediateZIntermediateCoachAdvancedZAdvancedCoach)r*   r   r   r   r   r   r   r@   allr
   r   rY   )r   coachescoachr   ZcoachvalZ	fullplansZarray1Zarray2Zarray3r  r  r  Zlistofcoachslevelr\  Zlistofcoachs1Zlistofcoachs2plansrh   rh   ri   programStats  sV   

0r  c                 C   sR   t | jd}t|d }|d kr"t|d  tdddS tdddS )Nrx   keyTzCache was deleted Successfullyr   Fzplease enter valid key)r   r   r   r   r	   r   ro  rY   )r   rJ  rL  rh   rh   ri   deleteCache  s   r  c           
   
   C   s  t  }zf|| }t| jd}|d }|d krbt| jd}tjddj	||d d
ddd	}| rY|D ]}t|}|d	 d
krS|d d
krSd
|d< q<d|d< q<nddi}t|W S tdddW S  ty }	 ztd tdt|	iW  Y d }	~	S d }	~	ww )Nrx   rw   ry   rz   r{   r|   r   r[   r   r?   r   r   Fr   r   r   r   )r3   r   r   r   r   r   rK   r   r   r   r   r   r   rY   r   r9   r   r   )
r   r   r   rJ  r   r   r   r   r   r  rh   rh   ri   getDraftJson  s>   




r  c                 C   sF   i }t jjdd }g }|D ]}|| qd|d< ||d< t|S )Nr   r}   Tr   programs)r@   r   r   r   r   r   )r   r   r  Zprogramplanrf   rh   rh   ri   getprogramPlans  s   r  c                 C   sl   g }t jdj| ddddddd}| r4|D ]}t|}|d d	 |d  |d
< || q|S d S )Nry   r?   r{   r[   rw   r3  user_id__first_nameuser_id__last_nameuser_id__avatar 	celebName)r(   r   r   r   r   r   r   r   )r   likeArrceleblikesValvalvalObjrh   rh   ri   
celeblikes  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 ]}t|}|d d |d  |d< || q"|S d S )Nry   r  rw   r3  r  r  reviewsr  Treviews__isnullr^   reviews__exactr  r  )	r(   r   r   r   r   excluder   r   r   )r   	reviewArrr  r  r  rh   rh   ri   celebreviewList  s(   r  c           `   
   C   s  t d t }i }d}t|}|rbt d|d |}z(|| }t | |d kr;td|d |d |d |d	 d
W S tdddW S  tya } ztd tdt	|iW  Y d }~S d }~ww t d|d || }|d krbd}t
jjdd}|j}	t| jd}
t |
 g }t }d}d}d}d}d}|d }tjj|d}d}t | d|
v r|
d dkr|
d dksd|
v r8|
d dkr8|
d dkr8|
d dkr|
d dkrd}|d|
d  d |
d  d |
d  d  7 }nh|
d dkr|
d dkrd}t d! |d|
d  d |
d  d  7 }nC|
d dkr7|
d dkr7d}t d" |d#|
d  d$ 7 }n$d|
v r\|
d dkr\d}|d|
d  d% |
d  d |
d  d  7 }d&|
v r|
d& dkrd}|
d& d'}|dkr{|d(7 }n|d)7 }d}|D ]}|d*| d+ 7 }q|dkr||d d, d- 7 }d.|
v r|
d. dkrt d/ d}|dks|dkr|d(7 }n|d)7 }|
d. d'}d}|D ]}|d0| d+ 7 }q|dkr||d d, d- 7 }	 d1|
v r:|
d1 dkr:t d2 d}|dks|dks|dkr|d(7 }n|d)7 }|
d1 d'}d}|D ]}|d3| d+ 7 }q|dkr:||d d, d- 7 }d4|
v r6|
d4 dkr6|
d4 d'}d}|dksc|dksc|dksc|dkrh|d57 }n|d67 }d7|
v r|
d7 d8kr|jdkr|d9 d:kr|d;|d<  d= |d  d- 7 }n|d>|d<  d= |d  d- 7 }ntjj|d< |d gd? td@dA }tjj|d< |d gd? td@dB }t | t | tD ]} t| }!q|d9 d:kr|d;t	| d= t	| d- 7 }n9|d>t	| d= t	| d- 7 }n(|d9 d:kr&|dC|d<  d= |d  d- 7 }n|dD|d<  d= |d  d- 7 }|dksO|dksO|dksO|dksO|dkrT|d57 }n|d67 }d}"tjdEjd:|dF  }#|#! rnd}"|"dkrx|dG7 }n|dH7 }d7|
v r|
d7 d8kr	 dI|
v r|
dI dJkr|dK7 }|dL7 }n	 dI|
v r|
dI dJkr|dK7 }t dM |dN7 }|"| t#|}$t dO t$jjdddP td4dQ }%g }&g }'g }(d})g }*g }+g },g }-|$r1|$D ]}.t|.}/|-%|/d  |+%|/dR  |,%|/dS  qdTdU }0|0|-}*t |* tjj|0|+dV  }1tjj|0|,dV  }2i }3t&jj|*ddW dXj't(dYdZ}4|4D ]}5t |5d[ d\ |5d[ |3|5dX < q>	 t)jd]j|*d^ d_dX}6t*jd`j|*d^ dadbdX}7i }8i }9g }:g };|*D ];}<|6D ]}5|<|5dX kr|;%|5d_  |;|9|5dX < q}g };|7D ]}5|<|5dX kr|:%|5da  |:|8|5dX < qg }:qyt+jj|*dc  }=d<}>d}?|=D ]}@t|@}At,|Add t-krd<}Bn|Add }B|>|B }>|?d }?q|>|? }Ct.jdej|*d^ dfdgdhdidjdkdldX/ }Di }Eg }F|*D ]}<|DD ]}5|<|5dX kr|F%|5 |F|E|5dX < qg }Fqt0jj|*d^ dXdYj't(dYdZ}Gg }Hi }I|*D ]%}<|GD ]}5|<|5dX krY|H%|5d[  t1|H}J|J|I|5dX < g }Jq=g }Hq9|$D ]}.t|.}/d<}Ki }Lt2j  j|/d dm}M|M! r|MD ]}Nt|N}O|K|Odn  }K|K|Ldo< q~|Ldo |/dp< |/dq dr t	|/d  }Pt34|P5ds}Qt	|Qdt}R|Rd |/du< g }St	|/dv dw t	|/dx  |/dy< t	|/dv dw t	|/dx  |/dv< |ID ]}J|/d |Iv r|/d |Jkr|I|J |/dz< qd<|/dz< qt6jj|/d d{ d|}T|T! r|TD ]}.t|.}U|.d| |/d}< qndw|/d}< |/d~ dkr/d|/d~< d|/d< n|/d~ dkr?d|/d~< d|/d< n|/d~ dkrNd|/d~< d|/d< d|/d< |1D ]&}5t|5}<|<d |/dR kryt	|<d dw t	|<d  |/d< |/d |/d< qTd}V|/d dks|/d dkr|2D ]2}5t|5}<t |<d  |<d |/dS krt	|/d d t	t	|<d dw t	|<d   d |/d< qnd|/d  d }V	 |/d1 d'}Wt7jj|WdV d/ }Xg }Y|XD ]}t|}Z|Y%|Zd  |)d't	|Zd  7 })qd<|/d< d<|/d< d|/d< d<|/d< d|/d4< g }[|ED ](}.t |. |/d |Ev r5|/d |.kr3|[%|E|.  |[d< |/d< qd<|/d< q|3D ]}5|/d |5krSt |5|3|5  |3|5 |/d< q=|9D ]$}5|/d |5krzt |5|9|5  d8|9|5 };|;|/d< |;|/d< |;|/d< qW|8D ]$}5|/d |5krt |5|8|5  d8|8|5 };|;|/d`< |;|/d< |;|/d< q~|/d d kr|/d`  d'|/d  7  < d<}>d}?|=D ](}@t|@}A|AdX |/d krt,|Add t-krd<}Bn|Add }B|>|B }>|?d }?q|>|? }C|C|/d< |Y|/d< |%|/ qa|)dkr.|)dd  })|)d'}\t7jj|\dV dd/ }]g }^|]D ]}t|}Z|^%|Zd |Zd d qnd}_ng }g }^||d< |j|d< |%|d< |^|d	< t9|| t d td|d |d |d |d	 d
S tdddS )NhiZFilterSQLv2r)  r*  Tr1  luctypedollarHighestparentGoalsr   filterValuesr  r  r  FzUser has logged outr   r   r   zdoes NOT exists in cacheINRr?   r   rx   rw   a  SELECT Program_plan.*, Program_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,Program_plan.goals as planGoal,Program_plan.price as planPrice,Program_plan.originalPlanner_id as originalPlanner,Program_plan.createdBy_id as createdBy,utility_programtype.programTypeName as programType__programTypeName,Subscriber_user.avatar as createdBy_id__avatar,Subscriber_user.id as coachId FROM Program_plan left join utility_programtype on Program_plan.programType_id = utility_programtype.id left join Subscriber_user on Program_plan.createdBy_id = Subscriber_user.id left join Program_selectedabilities on Program_plan.id = Program_selectedabilities.plan_id left join Program_plangoals on Program_plan.id = Program_plangoals.plan_id left join Program_plancountry on Program_plan.id = Program_plancountry.plan_idcoachValr^   0planVal1* where (Subscriber_user.first_name like '%searchString#%' or Program_plan.planName like '%'%' or Subscriber_user.last_name like '%%')inHere1inHere2z! where (Program_plan.name like '%%') z%' or Program_plan.name like '%r  , and ( where ( Program_plan.programType_id =  or )	abilitiesinHEre3z( Program_selectedabilities.ability_id = r/   inHEre5! Program_plangoals.planGoal_id = price and where
deviceTypeiosuserCountryr   & (Program_plan.indianIosPrice BETWEEN r    AND   (Program_plan.iosPrice BETWEEN 
usd__rangeinrinr__maxinr__min# (Program_plan.indianPrice BETWEEN  (Program_plan.price BETWEEN ry   countryr3  ) Program_plancountry.country_id = 88 and * Program_plancountry.country_id != 88 and packageName
apolloLifeJ Program_plan.createdBy_id != 165 AND Program_plan.createdBy_id != 47 AND z Program_plan.id is not null and activationStatus=1 and planStatus=1 GROUP BY Program_selectedabilities.plan_id,Program_plangoals.plan_id ORDER BY Program_plan.programType_id,Program_plan.planName ASCzhere    in elsez Program_plan.id is not null and activationStatus=1 and planStatus=1 GROUP BY Program_plan.id,Program_selectedabilities.plan_id,Program_plangoals.plan_id ORDER BY Program_plan.programType_id,Program_plan.planName ASCzhere in 252activationStatusr   
price__maxoriginalPlannerr}   c                 S   rX  r`   rY  r}  rh   rh   ri   r\    r]  z$filterSql2.<locals>.duplicate_removeid__inplan_id__inr[   r{   r3  totalr  zhere countsr   r  ability_id__abilityr   planGoal_id__GoalNameplanGoal_idZplan__inratingr   r  exercise_id__exerciseNameexercise_id__exerciseDescexercise_id__videoexercise_id__thumb_imageexercise_id__cover_imageexercise_id__equipmentrk  r   microcyclesr   planName#ascii'
encodedurlcreatedBy_id__first_namer  createdBy_id__last_name	coachNameZ	planusersr  videovideosplanTypeSTARTERr  SptypeINTERMEDIATEr  IADVANCEDr  AplanCompetency
first_name	last_nameZoricoachNameplanDescriptionlicencePolicy3White-Label<br><h6>Copyright &copy; 2017 . All rights reserved.</h6>parentGoalName_idceleblikedPlancelebreviewPlanr  reviewsCountFreer_  planlikesCount, abilityability1planPurpose
plan_goalsplan_goals1othersZ
Planrating
parentGoalGoalNamerw   r   Z"fgffffffffffffffffffffffgggggggggg):r   r3   r	   r   r   rY   r   r9   r   r   r   r   inrValuer   r   r   r   r   cursorr*   splitcurrencyTyper   r   r  	aggregater"   r#   ZpriceMapValuesr   r.   r   r   r   executer!   r@   r   r(   annotater'   rM   rL   r7   r   floatrJ   distinctr   r   rD   base64	b64encodeencoderR   r   rp   rI  )`r   r   	filterSqlrK  rL  r   r  r!  currencyValuesr  	coachInfoplanArrxr  programtypeval
abilityValgoalValcoachPriceValuseriduserCurrencyfilterQueryprogramTypestempTextr  selectedabilities	tempText1val1selectedgoals	tempText2
coachPricemaxINRPriceMapValueminINRPriceMapValuer  ZpriceObjindia	countryIDresultQueryhighestPrice_dollarZarrgoalsclelebLikeArrcelebreviewArrparentGoals1arrayr~  partnerarrr   r   r\  ZplannerZPartner	planlikesplalikescountrf   planAbilityValsplanPurposesValspurposesr  purposeaj	ratingObj	totalRate	userCountrtrateObjRatingr  r_  ZexerviewexerdownloadUserspdictarr
dictionaryr[  sumweeksru  hgmicrossecret_code_plainsecret_code_encode
encodedVallikearr
planVideosr  ZcoachdetailsgoalsArrplanParentGoalsr  r  Exercise	PrntGlArrParentGoalsparGoals
planGoals1rh   rh   ri   
filterSql2  sx  

&


 &






(
 2





",
"

  


 


$rl  c           [   
   C   sd  t  }z|| }t| |d kr|d }tjjdd}|j}t|d t| j	
d}g }t }d}	d}
d}d}d}|d }tjj|d}d}d|v r\|d d	kr\|d d
ksld|v r|d d	kr|d d
kr|d dkr|d dkrd}	td |d|d  d |d  d |d  d 7 }nf|d dkr|d d
krd}	td |d|d  d |d  d 7 }nC|d d
kr|d dkrd}	td |d|d  d 7 }n&d|v r|d d	krd}	td |d|d  d |d  d |d  d 7 }d|v r=|d d	kr=d}
|d d}|	dkr|d7 }n|d7 }d	}|D ]}|d| d 7 }q"|d	kr=||d d d 7 }d |v r|d  d	krtd! d}|
dksY|	dkr^|d7 }n|d7 }|d  d}d	}|D ]}|d"| d 7 }qm|d	kr||d d d 7 }	 t|d# d$|v r|d$ d	krtd% d}|dks|
dks|	dkr|d7 }n|d7 }|d$ d}d	}|D ]}|d&| d 7 }q|d	kr||d d d 7 }d'|v r|d' d	kr|d' d}d}|dks|dks|
dks|	dkr|d(7 }n|d)7 }d*|v r|d* d+kr|jd,krK|d- d.kr:|d/|d0  d1 |d  d 7 }n|d2|d0  d1 |d  d 7 }ntjj|d0 |d gd3 td4d5 }tjj|d0 |d gd3 td4d6 }t| t| 	 |d- d.kr|d/t| d1 t| d 7 }n9|d2t| d1 t| d 7 }n(|d- d.kr|d7|d0  d1 |d  d 7 }n|d8|d0  d1 |d  d 7 }|dks|dks|
dks|	dks|dkr|d(7 }n|d)7 }d}tjd9jd.|d: }| r	d}|dkr|d;7 }n|d<7 }d*|v r8|d* d+kr8d=|v r3|d= d>kr3|d?7 }|d@7 }nd=|v rH|d= d>krH|d?7 }|dA7 }t|d# || t|}tjjdddB td'dC }	 g } g }!d	}"|D ]}#t|#}$tjj|$d dD }%|% r|%D ]$}t|}&|&dE dF}'|'dG dH}(|(d dI})|&dJ |$|)d0 < qt jj|$d ddK! }*t jj|$d dDj"ddLj"d	dM! }+|*|$dN< |+|$dO< t#|$d },t$|$d }-|,|$dP< |-|$dQ< d0|$dR< d0|$dS< d	|$dT< t jj|$d |d ddU }.|. rd|$dR< t jj|$d |d dV }/|/ rF|/D ]}0t|0}1|1dT d	krD|1dT d krD|1dT |$dT< d|$dS< q&|$dW dX t|$d  }2t%&|2'dY}3t|3dZ}4|4d |$d[< |$d\ d] |$d^  |$d_< |$d\ d] |$d^  |$d\< d*|v rv|d* d+krv|jd,kr|d- d.krt(jd`jddd.da tdbdc }5|$dd |$d'< |$d' |$de< n't(jd`jdddft)d.dg  tdhdi }5|$dj |$d'< |$d' |$de< t*|$d' d0krdk|$d'< n`|d- d.kr&t(jd`jddd.da tdbdc }6t|6 tjj|6dl}7|7j+}5tj j|$dd dl}8n0t(jd`jdddft)d.dg  tdhdi }6tjj|6dl}7|7j+}5tj j|$dj dl}8|8D ]}9t|9}:|:dm };qX|;|$d'< t,|$d' d0krudk|$d'< nt*|$d' d0krdk|$d'< n|jd,kr|d- d.krt(jd`jddd.da tdndo }6t-|6| }5t-|$dp t,| |$d'< |$d' |$de< nt(jd`jdddft)d.dg  tdqdr }6t-|6| }5t-|$d' t,| |$d'< |$d' |$de< nP|d- d.krt(jd`jddd.da tdndo }5|$dp |$d'< |$d' |$de< n't(jd`jdddft)d.dg  tdqdr }5|$d' |$d'< |$d' |$de< t,|$d' d0krPdk|$d'< |$ds dtkr`du|$ds< dv|$dw< n|$ds dxkrpdy|$ds< dz|$dw< n|$ds d{krd||$ds< d}|$dw< tjj|$d~ d}<t|<j.d] t|<j/ |$d< t0jdj|$d dDd}=d	}>d	}?|=D ]}t|}&|>d|&d  7 }>|?d|&d  7 }?q|>d	kr|>dd  }@|>dd  }And	}@d	}At1jdj|$d dDd}Bd	}Cd	}D|BD ]}t|}&|Cd|&d  7 }C|Dd|&d  7 }Dq|Cd	kr|Cdd  }E|Cdd  }Fnd	}Ed	}F|$d$ d}Gt2jj|Gdd3 }Hg }I|HD ]}t|}&|I4|&d  |"dt|&d  7 }"q3	 |$d d t|A d d t|E d |$d< |$d dksq|$d dkrtjj|$d d}Jt|$d d tt|Jj.d] t|Jj/  d |$d< n#tjj|$d~ d}Kt|$d d tt|Kj.d] t|Kj/  d |$d< t5jj|$d dDd3 ! }Lt6jj|$d d }Md0}Nd}O|MD ]}Pt|P}Q|N|Qd  }N|Od }Oq|N|O }Rt7jdj|$d dDddddddd3 }Sg }T|SD ]}Ut|U}V|T4|V q
|R|$d< |@|$d< |@|$d< |A|$d< |E|$d< |F|$d< d
|$d< |L|$d< |T|$d< |I|$d< |4|$ qtg }W|"d	kr||"dd  }"|"d}Xt2jj|Xddd3 }Y|YD ]}t|}&|W4|&d |&d d qgnd	}Ft8d||j||WdW S t8dddW S  t9y }Z zt:;d t8dt|ZiW  Y d }Z~ZS d }Z~Zww )Nr!  r?   r   rx   Frw   a  SELECT Program_plan.*, Program_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,Program_plan.goals as planGoal,Program_plan.price as planPrice,Program_plan.originalPlanner_id as originalPlanner,Program_plan.createdBy_id as createdBy,utility_programtype.programTypeName as programType__programTypeName,Subscriber_user.avatar as createdBy_id__avatar,Subscriber_user.id as coachId FROM Program_plan left join utility_programtype on Program_plan.programType_id = utility_programtype.id left join Subscriber_user on Program_plan.createdBy_id = Subscriber_user.id left join Plan_selectedabilities on Program_plan.id = Plan_selectedabilities.plan_id left join Program_plangoals on Program_plan.id = Program_plangoals.plan_id left join Program_plancountry on Program_plan.id = Program_plancountry.plan_idr  r^   r  r  r  Tzin Herer  r  r  r  r  r  r  z% where (Program_plan.planName like '%r  r  r  r  r  r  r  r  r  r  r  z% Plan_selectedabilities.ability_id = z--------------------------r/   r  r  r  r  r  r  r  r  r  r   r  r   r  r  r  r  r  r  r  r  ry   r  r  r  r  r  r  z Program_plan.id is not null and activationStatus=1 and planStatus=1  GROUP BY Plan_selectedabilities.plan_id,Program_plangoals.plan_id ORDER BY Program_plan.programType_id,Program_plan.planName ASCz Program_plan.id is not null and activationStatus=1 and planStatus=1 GROUP BY Program_plan.id, Plan_selectedabilities.plan_id,Program_plangoals.plan_id ORDER BY Program_plan.programType_id,Program_plan.planName ASCr  r  r  longUrl/r   =&shortUrlr  r  r  r  r  rJ  planreviewsr  r  r  r{   r3  r[   r{   r3  r  r  r  r  r  r  r  r  r  r@   plan_id__activationStatusplan_id__planStatusr   plan_id__indianIosPriceplan_id__indianIosPrice__maxindianIosPrice	planPricerv  rw  r   plan_id__iosPriceplan_id__iosPrice__maxiosPricer  r  usdplan_id__indianPriceplan_id__indianPrice__maxindianPriceplan_id__priceplan_id__price__maxr  r  r  r  r   r  r  r  r  r  r  r  oriCoachNamer   r  r  r   r  r  r  r   <br><br><font><b>Abilities:</b> </font><br><br><font><b>Purposes:</b> r	  r
  r  r}   r  r  r3  r1  r  rg  r  r  r  r  r  r  r  r7   r  r  r  r  r  r  	planUsersr_  r  r  r  r  r   r   r   r   )<r3   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   r(   countr  r  r  r'  r(  r)  rO   r%   intr  r%  r   r  r  rM   rL   r   r&  r   r   r7   rJ   rY   r   r9   r   )[r   r   r   r!  r+  r  r,  r-  r.  r  r/  r0  r1  r2  r3  r4  r5  r6  r7  r  r8  r9  r:  r;  r<  r=  r>  r?  r@  rA  rB  rC  rD  rE  rF  r   r   planurlsr  urlValurlVal1urlVal2rK  reviewscountclelebLikescelebReviewscelebplanlikescelebplanreviewscelbdtcelbObjr`  ra  rb  highestPricehighestPriceVal
highestValusdValuer  usdObj	dollarVal
coachName1planAbilityValr  
abilities1planAbilitiesplanAbilities1planPurposesValrN  	purposes1	planGoalsrk  re  rf  r  partnerNamer  downloadUsersrR  rS  rT  rU  rV  r  exercisesObjplanExsexexObjrj  rh  ri  r  rh   rh   ri   
filterSql1  s  


  







(
 2






















 .


r  c                 C   s  t  }z|| }t| jd}|d }|d krd|v r=|d dkr=tjdddddd	d
dddddj	d|d}ntjdddddd	d
dddddj	d|d}g }|D ]U}t
|}tjj	|d d }	|	 r|	D ]#}
t
|
}|d d}|d d}|d d}|d ||d < qntjj	|d |dj	ddd}| r|| qWd|v r|d dkrtjddddd
dj	d|d}ntjddddd
dj	d|d}t|j g }|D ]C}t
|}tjj	|d |dd}t|j | rtjj	|d |dj	ddd}t|j | r|| q|| qd|v rA|d dkrAtjddddj	d|dd}ntjddddj	d|dd}g }|D ]P}t
|}d|d< d|d< tjj	|d |dj	ddd}| rtjj	|d d  }|r|d  dkrd|d< |d! |d< nd|d< || qTt|||d"W S W d S  ty } ztd# td$t|iW  Y d }~S d }~ww )%Nrx   rw   advancedPlanr?   r  r   programType_idr  r  	planPhotoplanLogor  r  rz  r  )r   r}   r  rm  rn  r   ro  rp  rq  r   )r   r}   rZ   ra  )r   r}   advPlanr^   r  reviewStatusr[   reiviewComments
activeplaninactiveplanreviewProgramsr   r   )r3   r   r   r   r   r   r@   r   r   r   r   rN   r   r   rK   r   r   queryrQ   lastrY   r   r9   r   r   )r   r   r   rJ  r   plandatar-  r   planObjr  r  r  r  r  r  draftedPlandetails
plandetailinactiveplanArrdraftedPlandetails1drafted1plandetail1r  draftedPlandetails2r  r  rh   rh   ri   getplaninfo  s   













F
r  c           3      C   s&  t  }z|| }|d }|d krt| jd}d|d v r|d d dkrtd |d d }tjj	|d}|d d |_
|d d |_|d d	 }d
|v r^|d
\}}	}
n|}t|d ||_d|_|d d |_|d d |_d|d v r|d d dkr|d d |_d|d v r|d d dkrtjj|d }| rtjj|d d dd}|rtjj|jdj|d d d}ntjj||||d d d}|  |d d dkr|d d d}tjj|d }| rtjj|d }|D ]}tjj||||d}|  q|d d |_|d d dkr]|d d d}tjj|d }| rItjj|d }|D ]}tjj||||d}|  qKd|d v rp|d d dkrpd|_ |d d |_!|d d |_||_"||_#d|d v r|d d dkr|d d |_$d|d v r|d d dkr|d d |_%d|d v r|d d dkr|d d |_&|  d|d v r|d d d krt'jj|dd!d}| rtd" nd}t'jj|d#|d|d$d%}|  d&|d v r|d d& d krd'|d v r|d d' dkrt'jj|d(d!d}| rid(}|d d' }|D ]}t(|}|d }q>t'jj	|d}||_)d)|_*||_+||_,||_-|  td* nd(}|d d' }d+|d v r|d d+ d,krd-} n%d+|d v r|d d+ d.krd/} nd+|d v r|d d+ d0krd1} t'jj|d)|||d2}d+|d v r|d d+ dkr|d d+ |_.| |_/nd |_.d |_/|  n$t'jj|d(d!d}!|!D ]}t(|}|d }"t'jj	|"d}#|#  qd3|d v r||d d3 d kr|d4|d v r||d d4 dkr|t'jj|d5d!d}$|$ rcd5}|d d4 }|$D ]}t(|}|d }q8t'jj	|d}||_)d|_*||_+||_,||_-|  td6 n=d5}|d d4 }t'jj|d|||d$d%}|  n$t'jj|d5d!d}%|%D ]}&t(|&}'|'d }(t'jj	|(d})|)  qt0d d7|j|j
d8W S tjj|d d d9}*|* rt0d:d;d<W S tjj|d d |d d |d d	 d|d d |d d |d d |d d |||d=}+d|d v r|d d dkr|d d |+_d|d v r|d d dkr|d d |+_$d|d v r6|d d dkr6|d d |+_%d|d v rQ|d d dkrQ|d d |+_&td> |+  t1jjd|+j||d?},|,  d|d v r|d d dkrtjj|+j|d d ||d@}|  d|d v r|d d dkr|d d d}-|-D ]}tjj||+j||d}|  qd|d v r|d d dkr|d d d}.|.D ]}tjj||+j||d}/|/  q|+j}t|dA |+j
}0tjj	|d}1||1_2|1  d|d v r|d d d krd}t'jj|d#|d|d$d%}|  d&|d v r|d d& d krd'|d v r|d d' dkrd(}|d d' }d+|d v rY|d d+ d,krYd-} n%d+|d v rl|d d+ d.krld/} nd+|d v r~|d d+ d0kr~d1} t'jj|d)|||d2}d+|d v r|d d+ dkr|d d+ |_.| |_/nd |_.d |_/|  d3|d v r|d d3 d krd4|d v r|d d4 dkrd5}|d d4 }t'jj|d|||d$d%}|  t0d dB||0d8W S W d S  t3y }2 zt45dC t0dDt6|2iW  Y d }2~2S d }2~2ww )ENrw   rx   r1  r^   z ------------Update Plan---------r   rp  r  r   z<br><h6>CopyrightplanDescriptionsr?   r  r  r  r  r  r   )r  )r{   r}   rc  r  r  
ability_idr{   r}   rc  r/   r  r{   r}   rc  r	  r  r  advancePlanr  r  
directsellT)r   
license_idzDirect Selling already ExistsDirect SellingN/Ar   r  r  royaltycoach_id_idtemplateContentcobrand
cbroyalty1r,  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whlabroyalty1r-  z"White-Label Selling already Existsz$Program Details Updated Successfully)r   r   r   
planTypeId)r  FzProgram Name Already existsr   )r  r  r  r  r  r  r   r/   originalPlanner_idr}   rc  z++++ img path save +++++rb  )r{   r  r}   rc  z===planId====="Program Details Saved Successfullyr   r   )7r3   r   r   r   r   r   r   r@   r   r   r  r  	partitionr  r  r  r  r  rR   r   r   r   latestrw   rh  r   r   r   rM   ro  r/   rL   r	  r   r}   rc  r  r  r  r6   r   r   r  r  r  r  r  r  rY   rK   originalPlanId_idr   r9   r   r   )3r   r   r   r   r   r   
updatePlanplanDesheadseptailZ	planvideor  ZVideoplanabilitiesupdateAbilitiesdeleteAbilitiesr  createabilitites	plangoalsupdateGoalsdeleteGoalsr:  	saveGoalsdirecsellExistslicenseplaninfocoBrandExistsr  coBcoBObjcoBIdtempcontentcoBrandValuesdeleteCobIddeleteCobrandwhitelabelExistswhitelabValueswBwBObj
deletewbIddeletewbrandr   r1  ri  rN  r  saveAbility
playTypeIdoriplanr  rh   rh   ri   
createPlan  s\  

 
 

     

$

    
"










       
 $    "
    0
r   c           :   
   C   s  t  }|| }|d kr3d}tjdjd|d d }| r2|D ]}t|}|d |d< q#d}n(d}t	 }| j
d	d }|rI||d
 }	nd}	tjj|	d}
|
j}|dkr[d}t| jd}t|d d}|dd}tj j|d d}d}d}i }| rT|D ]}d}i }t|}tj j|d d}| r|D ]}t|}||d  }||d< q|d |d< tjj|d d }| r|D ]}t|}q|d |d< tjj|d d }| r|D ]#}t|}|d d}|d d}|d d} |d  || d < q|dkr|d! |d"< |d" dkr)d#|d"< tjd$j|d dd%}!d&}"|!D ]}t|}|"d'|d%  7 }"q<|"d&krX|"dd  }#nd&}#tjd(j|d dd)}$d&}%|$D ]}t|}|%d'|d)  7 }%qm|d* d kr|%d+|d*  7 }%|%d&kr|%dd  }&nd&}&tjj|d, d}'|'jd- |'j }(|(|d.< |'j|d/< |'j |d0< |d1 |d, krtjj|d1 d})|)jd- |)j }(|(|d2< |d3 d4 t!|# d5 d6 t!|& d5 |d3< |d7 d8ks|d7 d9krtjj|d, d}*t!|d3 d: t!t!|*jd- t!|*j  d; |d3< nA|d1 |d, kr=tjj|d1 d})|)jd- |)j }(|(|d2< tjj|d1 d}(t!|d3 d: t!t!|(jd- t!|(j  d; |d3< t"jj|d dd<# $ }+t%jj|d d= },d}-d}.|,D ]}/t|/}0|-|0d>  }-|.d }.q|-|. }1|#|d?< |&|d@< dA|dB< |+|dC< |t&|+ }|1|dD< |d, |dE< |dF |dG< t'jdHj|d ddIdJdKdLdMdNdO# }2g }3|2D ]}4t|4}5|3(|5 q|dG dkrdP|dQ< dR|dS< n|dG dTkrdU|dS< dV|dQ< n|dG dWkrdX|dS< dY|dQ< |d |dZ< |d, |dE< |3|d[< t)jj|d d\ }6|6 rF|6D ]}7t|7}8||8d] d^}9q6q|d&d^}9qt*|9d|d_S t*d`diS )aNFry   r   rw   r  r  r  TREMOTE_ADDRcountry_nameIndiar   rx   r{   r  r  r?   r   r   rk  r   r  r   r  r  r  rm  rn  r   ro  rp  rq  r  r  r  r   r  r^   r  r   r  r  r  r}   r  r  coachAvatar
coachCoverr  r  r  r  r  r  r	  r
  r  r  r  r3  r  r  r  r  r  r  r  r7   coachIdr  	planLevelr   r  r  r  r  r  r  r  r  r   r  r  r,  r  r  r-  r  r  planDurationr_  r~   r   )r   PlanJson)r1  r   r@  r   )+r3   r   r.   r   r   r   r   r   r   ZGeoIPMETAr   r  r   rw   r   r   r   r   r'  	b64decoder   r@   rD   rR   rN   rM   rL   r*   r  r  avatar	userCoverr   r   r&  r  r7   r  rJ   r   rK   rY   ):r   r   r   r@  rA  conconObjgipr  countryName	countryIdr   
codeDecodecodeDecodeSplitr   totalusercountr  rI  r   r\  r]  dataPlanObjru  r^  r_  r  r  r  r  r  r  r  r  abilitieslistsr  r  rN  r  coachValuesr  r  r  r  rR  rS  rT  rU  rV  r  r  r  r  r  draftedDetailsdfdfObjdataPlanDictrh   rh   ri   viewPlan_by_idQ  sZ  











 .


r   c                 C   sT   t | jd jd | jd }t |d tjj|d}| jd |_|  t	ddiS )Nmyfilez-------name--------r{   z--------------jdjs-----------r   r   T)
r   FILESr   r  r@   r   r   r  r   rY   )r   r   planpicrh   rh   ri   uploadphoto  s   

r$  c                 C   s  t  }z|| }|d }|d krtjdddjdddddd	d
ddddddddd}tjj|ddddd}|	 r|D ]f}t
|}|d dksT|d dkrxtjj|d d}t|d	 d tt|jd t|j  d |d	< n#tjj|d d}	t|d	 d tt|	jd t|	j  d |d	< |d dkrd}
qB|d }
qBnd }
g }g }|D ]}t
|}|| q	 td|||
dW S td d!d"W S  ty } ztd# td$t|iW  Y d }~S d }~ww )%Nrw   	Goals__idProgramType__idry   r?   r   r  planGoal__goalNamer  programType__programTypeNamer  createdBy_id__avatarr}   r   r  r	  r  r  r3  r[   r{   r[   r
  r  r   r  r  r  r,  r^   T)r   r   videosLinks
ActivePlanFr   r   r   r   )r3   r   r@   r   r   r   r   order_byr   r   r   r*   r   r   r  r  r   rY   r   r9   r   )r   r   r   r   r   rU  r   r   r  r  rV  dataArrdataArr1r   r  rh   rh   ri   r     sj   




r   c           
   
   C   sf  t  }z|| }t| jd}|d krtjddj	|d d
ddddd	d
dd}|D ]Y}t|}|d
 dksA|d
 dkretjj|d d}t|d d tt|jd t|j  d |d< q/tjj|d d}t|d d tt|jd t|j  d |d< q/td|dW S W d S  ty }	 ztd tdt|	iW  Y d }	~	S d }	~	ww )Nrx   r%  r&  rw   r   r  r(  r  r)  r	  r  r}   r
  r  r   r  r  r  Tr   r   r   r   )r3   r   r   r   r   r   r@   r   r   r   r   r   r*   r   r   r  r  rY   r   r9   r   )
r   r   r   r   r   r   r   r  r  r  rh   rh   ri   individualPlanDetails7	  sV   




r2  c           2      C   s  t  }z|| }|d kr|d }tjdddjddddddd	d
ddddddddddddddd}g }g }|D ]}t|}|d d t|d  }	t	
|	d}
t|
d}|d |d< |d dksp|d dkrtjj|d d }t|d d! tt|jd" t|j  d# |d< n#tjj|d d }t|d d! tt|jd" t|j  d# |d< tjd$j|d d%d&}d'}|D ]}t|}|d(|d&  7 }q|d'kr|dd  }nd'}tjd)j|d d%d*}d'}|D ]}t|}|d(|d*  d" 7 }q|d'kr|dd  }nd'}tjj|d d%d+  }tjj|d d, }d-}d}|D ]}t|}||d.  }|d }q9|| }||d  ||d< ||d
< |d |d/< |d |d0< d1|d2< |d	 |d3< ||d4< ||d5< |d |d6< |d
 |d7< |d |d8< |d0 d9krd:|d;< d<|d0< n|d0 d=krd>|d;< n|d0 d?krd@|d;< |d |dA< |d |d6< 	 || q<tjdBdCdD}g }|D ]}t|} dE| dF< ||  qtjj|dG }!g }"|!D ]}#t|#}$tjj|$d ddH }%|%|$dI< tjj|$d dJ }&|&D ]}'t|'}(q|$dK d ur+d'|$dL< nd'|$dL< |#d |$d6< |#dM d" |#dN  |$dO< g })tjj|$d dPd}*|*D ]}+t|+},|)|,d  qQ|)|$dQ< tjj|$d dJ }-|- r|-D ]}.t|.}/|/dR dSkrdT|$dU< qvdV|$dU< qvndT|$dU< |"|$ tjj|d }0qtdW|||"|0jdXW S tdYdZd[W S  ty }1 zt !d\ td]t|1iW  Y d }1~1S d }1~1ww )^Nrw   r%  r&  ry   r?   )r   r  r  r  r  r(  r  r)  programType__idr   r}   r  r*  r  r  r  r	  r  r  r  	iosStatusr  r  r  r  r
  r  r   r  r  r  r   r  r  r^   r  r   r  r3  r  r   r  r  r  r  r  r{  r  r7   r  planGoalr  r  r  r   BEGINNERr  r  r  r  r	  
Videos__idvideo__videoLinkr{   QR77PiSkDgA	videolinkr  followerUser_idr[   	followersr3  r  coachThumbnailr  r  r  r  
coachPlansr  r   r  coachLocationInternationalT)r   r   r   
allCoachesr  Fr   r   r   r   )"r3   r   r@   r   r   r   r   r   r   r'  r(  r)  r   r*   r   r  r  rM   rL   r   r&  r  r7   r   rR   r-   r,   r.   r   rY   r!  r   r9   r   )2r   r   r   r3  r   r-  planCoachesr   r   r`  ra  rb  r  r  r  r  r  r  r  r  rN  r  r  rR  rS  rT  rU  rV  r  rd  planVideoArrr  r  coachDetailscoachArrr  coach_id	followCnttrainerstrtrainercoachPlansArrr  plr@  userAddressuauAddrr4  r  rh   rh   ri   	planListsX	  s,  






 







rR  c              
   C   s  t  }|| }z|d krt| jd}tj j	|d |d d
 }g }|D ]}t|}||d  q*tjj	|dj|d |d d}tjj	|dj|d |d d}tjj	|dj|d |d d}	tjj	|dj|d |d d}
tjj	|dj|d |d d}tjj	|dj|d |d d}tjj	|dj|d |d d}tjj	|dj|d |d d}tjj	|dj|d |d d}td	d
dW S tdddW S  ty } ztd tdt|iW  Y d }~S d }~ww )Nrx   rw   orgId)r}   rc  r  )rc  r  )Zplan_id_id__in)r   r   Tz!plan details successfully changedr   Fr   r   r   )r3   r   r   r   r   r   r@   r   r  r   r   r   r   rh  rJ   rI   rH   rG   rF   rE   rD   rC   rY   r   r9   r   r   )r   r   r   r   r1  rG  r   ZplanIdsrx  rq  rr  r  rs  rt  ru  r  r  rh   rh   ri   	changeIds	  s4   
          
rT  c           	   
   C   s  t  }|| }z^|d kr_t| jd}tjj|d d	ddddd}|D ]/}t
| t|}|d d	krWtjd
ddj|d d }t
| tdd	|d  W S q(tddiW S tdddW S  ty } ztd tdt|iW  Y d }~S d }~ww )Nrx   r!  r  r{   r   r   rw   
periodName	In-SeasonPlanMesocylcer@   rC   ) mesocycle_id__period_id__plan_idT)r   r   mcCountr   Fr   r   r   r   )r3   r   r   r   r   r   rC   r   r   r   r   r   rE   r   r  rY   r   r9   r   r   )	r   r   r   r   seasonr   	seasonObjmicrocycleCountr  rh   rh   ri   checkInSeason

  s6   

r]  c           t      C   s  t  }t| jd}i }i }|d }t|}|r)|}|d r#z||d  }t|d d || }|d krt	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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dddddd d!d"dd#dddddg
d$d%id$d&id$d'id$d(id$d)id$d*id$d+id$d,id$d-ig	d.dd/d0d.d1d2d0d.d3d4d0d.d5d6d0d.d.d7d0gd.dd/d0d.dd/d0d.d5d2d0d.d5d2d0d.d5d4d0d.d.d6d0d.d.d7d0gd8d9W S t	d:d;iW S  t
y" } ztd< t	d=t|iW  Y d }~S d }~ww t	d:d;iS |d rŐzu|| }t| jd}	|d kr|d> }
tjj|
d?}tjjd.d?}|j}g }g }d@}tjdAjdB|
dC }| r|D ]}t|}|dD |dE< qrd}tjjdBdF }|D ]}t|}||dG  qtjtdBdF  }|D ]}t|}||dG  q|dkrAd|	v r8|	d dHkr8dI|	v r|	dI dJkrtjdKdLdAd>dMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcj|	d d.d.|dddedM}ntjdKdLdAd>dMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcj|	d d.d.|dddedM}ndf|	v r|	df dHkrdI|	v r|	dI dJkrtjdKdLdAd>dMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcj|	df d.d.|dgdedM}n>tjdKdLdAd>dMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcj|	df d.d.|dgdedM}ndh|	v r?|	dh dHkr?tjj|	dh d? }|D ]}t|}|dU }qdI|	v r|	dI dJkrtjdKdLdAd>dMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcj|d.d.|dddedM}ntjdKdLdAd>dMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcj|d.d.|dddedM}n~d|	v r|	d dHkrdI|	v r|	dI dJkrtjdKdLdAd>dMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcj|	d d.d.|dddedM}n5tjdKdLdAd>dMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcj|	d d.d.|dddedM}ndf|	v r3|	df dHkr3dI|	v r|	dI dJkrtjdKdLdAd>dMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcj|	df d.d.|dgdedM}ntjdKdLdAd>dMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcj|	df d.d.|dgdedM}ndh|	v r|	dh dHkrtjj|	dh d? }|D ]}t|}|dU }qLdI|	v r|	dI dJkrtjdKdLdAd>dMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcj|d.d.|dddedM}n-tjdKdLdAd>dMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcj|d.d.|dddedM}g }g } g }!d}"	 g }#g }$g }%| 
r|D ]}&t|&}'|$|'d>  |%|'dU  |#|'d\  qtjj|%di }(	 tjdAj|$djdGd>dkdldmdndojddpjdHdq})tjj|$d.drdGj t!dkds}*tjj|$|d> d.dt }+i },g }-|+D ]}.|.d> |,|.dG < |-|.dG  q;i }/g }0|*D ]}.|.du |/|.dG < |0|.dG  qTtjj|$djjddpjdHdqj t!dkds}1i }2g }3|1D ]}.|.du |2|.dG < |3|.dG  q	 t"jdvj|$djdwdG}4i }5i }6g }7g }8t#jdxj|$djdydG}9|$D ]}:|4D ]}.|:|.dG kr|7|.dw  |7|6|.dG < qg }7q|$D ]}:|9D ]}.|:|.dG kr|8|.dy  |8|5|.dG < qg }8qt$jj|$dz };g }<i }=g }>|$D ]4}:|;D ],}?|:|?dG kr>t%|?d{ t&kr(d}@n|?d{ }@|<|@ |<|=|?dG < |>|?dG  qg }<qt'jd|j|$djd}d~ddddddG( }Ag }Bi }C|$D ]}:|AD ]}.|:|.dG krv|B|. |B|Cd< qdq`t)jj|$djdGdkj t!dkds}Dg }Ei }F|$D ]%}:|DD ]}.|:|.dG kr|E|.du  t*|E}G|G|F|.dG < g }Gqg }Eqtjj|%d d?}Htjj|#d d?}I|I}J|D ]}&t|&}'|$|'d>  |%|'dU  	 |'dM d t|'d>  }Kt+,|K-d}Lt|L.d}M|Md. |'d< |( r|(D ]}Nt|N}Oq|Od |'d< nd|'d< i }P|6D ]}.|'d> |.kr:d/|6|. }7|7|'dV< |'dV }Qq"|A rbg }R|Cd D ]}.|'d> |.dG kr_|R|. |.|PdG< |R|'d< qGng |'d< |FD ]}G|'d> |Gkr|F|G |'d< |"t0|F|G  }"qh|'d> |0v r|/D ]}.|'d> |.kr|/|. |'d< qnd|'d< |'d> |3v r|2D ]}.|'d> |.kr|2|. |'d< qnd|'d< d}Sd.}Tg }U|'d> |>v r|U|= |UD ]}.|.|'d>  D ]}:|S|: }S|Td. }Tqېq|S|T }V|V|'d< nd|'d< d|'d< dH|'dn< |'d> |-v r|,D ]}.|'d> |.krd.|'d< qnd|'d< 	 d|'d< |'dX d |'dY  |'d< |'dX d |'dY  |'dX< |'dO |'d< g }Wg }X	 |$D ]-}:|)D ]!}&|'d> |&dG kri|&dl d |&dm  |&d< |X|& |X|'d< qIg }Xd|'d< qEdI|	v 	r|	dI dJk	r|j1dkrtjjd.d.d2 3t4d^d }Y|dE dBkr|'d` |'dO< |'dO |'d< n|'d^ |'dO< t0|'dO dkrd|'dO< ntjjd.d.d2 3t4d^d }Zt5jj|Zd}[|[j6}Y|dE dBkrt5j j|'d` d}\nt5j j|'d^ d}\|\D ]}]t|]}^|^d }_q|_|'dO< t0|'dO dk	rd|'dO< nnt0|'dO dk	r%d|'dO< n`|j1dk	rX|dE dBk	rEt7|'da t&| |'dO< |'dO |'d< n3t7|'dO t&| |'dO< |'dO |'d< n |dE dBk	rl|'da |'dO< |'dO |'d< n|'dO |'dO< |'dO |'d< t&|'dO dk	rd|'dO< |6D ]}.|'d> |.k	rd/|6|. }7|7|'dV< |'dV }Q|'dV |'d< 	q|5D ]}.|'d> |.k	rd/|5|. }8|8|'d< |'d }`	q|'d\ |'dU k	rtjj|'d\ d?}I|Ij8}J|J|'d< |'dQ d |7 d d |8 d |'dQ< |'d] dk	s|'d] dk
rt|'dQ d tt|Hj8d t|Hj9  d |'dQ< n%|'d\ |'dU k
r,|Ij8d |Ij9 }J|J|'d< t|'dQ d t|J d |'dQ< |!|'dU  |'dR |'d< d|'d< |'dU |'d< |'dP |'d< |'dS |'d< |'d dk
rod|'d< d|'d< n|'d dk
rd|'d< d|'d< n|'d dk
rd|'d< d|'d< t:jj|'d> dd}a|a 
r|aD ]}&t|&}b|&d |'d< 
qnd|'d< 	 |'dT |'d< |'dU |'d< |'d |d< ||' qng }tjj|!d }cg }d|cD ]}et|e}ft;jj|fd> d.d< }g|g|fd< tjj|fd> d }h|hD ]}Nt|N}iq|fd d ur|fd |fd< |fd |fd< ndH|fd< |ed> |fd< |ed d |ed  |fd< g }jtjj|fd> dōd>}k|kD ]}lt|l}m|j|md>  qC|j|fd< tjj|fd> d }n|n r|nD ]}ot|o}p|pdD dkr{d|fd< qhd|fd< qhnd|fd< |d|f 
q	 t=jjd.d?}qt=jjdd?}rtjj|
d̍}s||d< |d|d< |"|d< |j1|d< |j1|d< |d	 |d	< |d
 |d
< |d |d< |||d < |d }t>|| t	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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dddddd d!d"dd#dddddg
d$d%id$d&id$d'id$d(id$d)id$d*id$d+id$d,id$d-ig	d.dd/d0d.d1d2d0d.d3d4d0d.d5d6d0d.d.d7d0gd.dd/d0d.dd/d0d.d5d2d0d.d5d2d0d.d5d4d0d.d.d6d0d.d.d7d0gd8d9W S t	d@ddΜW S  t
y } ztd< t	d=t|iW  Y d }~S d }~ww d S )Nrx   coachidr  Z?gfrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrTr-  rG  r  	is_activer  r!  r  Hip Circlesr/  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)r   30	Each sideCricket / BaseballArm Swings - Over underr   FLoor Quadraceps StretchFloor Glute Stretch!Neck, Back, and Hamstring StretchClassic Hamstring StretchShoulders and Biceps StretchLower Back StretchFrog StretchCat StretchTriceps and Lat Reach Stretchr?   2   Setsre  r   r   <   r.  F   r-  P   Z   strength	explosive)r   r   rC  
totalcountr  r_  r  r!  
coverImagegeneralWarmupCooldownexerciseWarmupr   zUser has been logged outr   r   rw   r   Fry   r   r  r  r  r}  r{   r^   r  r  r%  r&  r  r  r  r(  r  r)  r3  r   r}   r  r*  r  r  r   r  r  r	  r  r4  rz  r  createdBy_id__userCoverr   r  r   r  r  r  pnameplanName__icontainsr   r  r  r!  )Zuser_id__inr  r3  r  r  r  r  r  r  r  r  )r  r3  r[   r  r   r  r   r  r  r  r   r  r  r  r  r  r  r  r   r  r  r  r  aboutTrainerTrainer Content Unavailabler  r_  r  r  r  r7   r  Zceleblikedplanr  r  r{  r  rr  nullr  r  iosPrice__maxr  r  r  r  r  r  r  r  r  r
  r  r  r  r  r  r  r  r5  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r	  ZIdr  r;  r=  r>  r?  r  r  r  r@  S   r  rA  rB  r,  r   r   r   )?r3   r   r   r   r   r	   r   r   r   rY   r   r9   r   r   r*   r   r   r  r.   r   r   r   r   r   rO   r   r%   r@   r.  r,   r(   r  r$  r'   rM   rL   r7   r   r%  rJ   r&  r   r   r'  r(  r)  r   rp   r  r!  r  r"  r"   r   r  r   r  r  rR   r-   r  r   rI  )tr   r   ZCoachIDZindividualuserplanZCOACHrK  rL  r   r  r,  r3  r4  r+  r  indianPlanArrotherPlanArrr@  rA  r  r  indianPlansinpinpObj
otherPlansotpotpObjr   getCoachObjcocoachObjcoachIDr-  
planValArrrD  r  r  rG  arraysr   r   trainerDetailsZreviewslikesZplanlikescountr  celebZCelebrf   rJ  rP  ZreviewcountreviewbrL  r   r  ZabbrO  rM  rQ  Z	RatingObjrW  RatingPercentcr^  Zrater  rX  r   rY  rZ  r[  r[  r  r  r  r`  ra  rb  rK  trObjZexercr  ZDfrS  rT  Zjhr  rc  Z	reviewarrr  r  r  r  r  r  r  r  rd  r  rF  rG  r  rH  rI  rJ  rL  rM  r  rN  r@  rO  rP  rQ  androidversion
iosversionrS  rh   rh   ri   individualuserplans1%
  s  





+






	

	

	

	

	
6"*
,
"










$



    
2




,
     r  c           r      C   s  t  }
z|| }t| jd}t| |d k
r|d }tjj	|d}t
jj	dd}|j}g }g }	d}
tjdjd|d }| rY|D ]}t|}|d	 |d
< qJd}
tjjdd }|D ]}t|}||d  qdtjtdd  }|D ]}t|}|	|d  q|
dkrd|v r|d dkrd|v r|d dkrtjddddddddddddddddd d!d"d#d$d%d&d'd(d)d*j|d dd|d+d,d}ntjddddddddddddddddd d!d"d#d$d%d&d'd(d)d*j|d dd|d+d,d}nd-|v r|d- dkrd|v rT|d dkrTt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}nFtjddddddddddddddddd d!d"d#d$d%d&d'd(d)d*j|d- dd|d.d,d}nd/|v r|d/ dkrtjj|d/ d }|D ]}t|}t| |d }qd|v r|d dkrtjddddddddddddddddd d!d"d#d$d%d&d'd(d)d*j|dd|d+d,d}ntjddddddddddddddddd d!d"d#d$d%d&d'd(d)d*j|dd|d+d,d}nd|v r|d dkrd|v ra|d dkrat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}n9tjddddddddddddddddd d!d"d#d$d%d&d'd(d)d*j|d dd|	d+d,d}nd-|v r
|d- dkr
d|v r|d dkrtjddddddddddddddddd d!d"d#d$d%d&d'd(d)d*j|d- dd|	d.d,d}ntjddddddddddddddddd d!d"d#d$d%d&d'd(d)d*j|d- dd|	d.d,d}nd/|v r|d/ dkrtjj|d/ d }|D ]}t|}t| |d }q#d|v rm|d dkrmt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-tjddddddddddddddddd d!d"d#d$d%d&d'd(d)d*j|dd|	d+d,d}g }g }g }d0}tjj|d1jdd2gd3d4dd5}| r|D ]}t|}|d5 d6|d5< || qg } g }!|D ]E}t|}"t|"d d7 | |"d  |!|"d  tjj|"d d8 }#|# r*|#D ]$}$t|$}%|%d9 d:}&|&d; d<}'|'d d=}(|%d> |"|(d0 < q|"d d? t|"d  })t|)d@}*t|*dA}+|+d |"dB< tjj|"d dC },|, rl|,D ]}-t|-}.q]|.dD |"dD< ndE|"dD< t |"d }/t!|"d }0|/|"dF< |0|"dG< t"jj|"d ddH# }1t"jj|"d d8j$ddIj$ddJ# }2|1|"dK< |2|"dL< d0|"dM< d0|"dN< d|"dO< t"jj|"d |d ddP }3t|3dQ |3 rd|"dM< t"jj|"d |d dR }4t|4dS |4 r|4D ]}5t|5}6|6dO dkr|6dO d kr|6dO |"dO< d|"dN< q|"d dT |"d   |"dU< |"d dT |"d   |"d< |"d |"dV< d|v r|d dkr|j%dWkrwtjjdddX& 't(d%dY }7|d
 dkrc|"d' |"d< |"d |"dV< n|"d% |"d< t)|"d d0krvdZ|"d< ntjjdddX& 't(d%dY }8t*jj	|8d[}9|9j+}7|d
 dkrt*j j|"d' d[}:nt*j j|"d% d[}:|:D ]};t|;}<|<d\ }=q|=|"d< t)|"d d0krdZ|"d< nnt)|"d d0krdZ|"d< n`|j%dWkr|d
 dkrt,|"d( t-| |"d< |"d |"dV< n3t,|"d t-| |"d< |"d |"dV< n |d
 dkr%|"d( |"d< |"d |"dV< n|"d |"d< |"d |"dV< t-|"d d0kr>dZ|"d< t.jd]j|"d d8d^}>d}?|>D ]}$t|$}%|?d_|%d^  7 }?qQ|?dkrm|?dd  }@nd}@t/jd`j|"d d8da}Ad}B|AD ]}$t|$}%|Bd_|%da  7 }Bq|Bdkr|Bdd  }Cnd}C|"d# |"d krtjj	|"d# d}D|Dj0}E|E|"db< |"d dc t|@ dd de t|C dd |"d< |"d$ dfks|"d$ dgkrtjj	|"d d}Ft|"d dh tt|Fj0dT t|Fj1  di |"d< nA|"d# |"d krtjj	|"d# d}D|Dj0dT |Dj1 }E|E|"db< tjj	|"d# d}Et|"d dh tt|Ej0dT t|Ej1  di |"d< tjj|"d d8dj2 # }Gt3jj|"d dk }Hd0}Id}J|HD ]}Kt|K}L|I|Ldl  }I|Jd }Jqc|I|J }M||"d  |@|"dm< |C|"dn< |"d |"do< dp|"dq< |G|"dr< |t)|G }|M|"ds< |"d |"dt< |"d |"du< |"d |"dv< |"do dwkrdx|"dy< dz|"do< n|"do d{krd||"do< d}|"dy< n|"do d~krd|"do< d|"dy< |"d |"d< |"d |"dt< t4jdj|"d d8dddd2 }Ng }O|ND ]}Pt|P}Q|O|Q q|O|"d< 	 ||" qg }R	 tjj|d }Sg }T|SD ]}Ut|U}Vt5jj|Vd dd# }W|W|Vd< tjj|Vd dC }X|XD ]}-t|-}YqQ|Vd d urg|Vd |Vd< nd|Vd< |Ud |Vdt< |Ud dT |Ud  |VdU< g }Ztjj|Vd dd}[|[D ]}\t|\}]|Z|]d  q|Z|Vd< tjj|Vd dC }^|^ r|^D ]}_t|_}`|`d	 dkrd|Vd< qd|Vd< qnd|Vd< |T|V q.t|T t6jdj|dCdddddddddd
}ad}bi }ci }di }eg }fd}gd}hd}i|a 	r(d}b|aD ]}t|}d|dd d k	r&|dd |dd< |dd d|dd< 	q
t7jj|d1 }jd}k|j 	rHd}k|jD ]}t| t|}c	q<t8jj|d1dddddddddddjddd}l|l 	ryd}h|lD ]}t| t|}e|f|e 	qhtjj|d1jdd2gd3 }m|m 	rd}id}gt9jj	dd}nt9jj	dd}otjj	|d}pt:i ddd|d|Rd|Td|d|j%d|j;d|j<d|d|dd|cd|fd|bd|kd|gd|hd|d i d|d d|d d|d d|d d|d d|d d|d dj|d d|d d|d d|id|d d|d d|d d|d d|d d|nj=|oj=ddddddӜddddddӜddddddӜddddddӜddddddӜddddddӜddddddӜddddddӜdd0ddddӜddddddӜg
ddiddiddiddiddiddiddiddiddig	dddddd;dddddddd2ddddddgdddddddddd2dddd2dddd2ddddddddddgddW S t:dddW S  t>y }q zt?@d t:dt|qiW  Y d }q~qS d }q~qww )Nrx   rw   r   r?   Fry   r   r  r  r  Tr}  r{   r^  r^   r  r  r%  r&  r  r  r  r(  r  r)  r3  r   r}   r  r*  r  r  r   r  r  r	  r  r4  rz  r  r  r   r  r  r  r  r!  r   r   r-  )
status__inr[   nextRenewalDatez%Y-%m-%dzdataObj{'id'}r  rm  rn  r   ro  rp  rq  r  r  r  r  r>  r  r  rJ  rr  r  r  r  r  r  r  r  r  rs  zHere celebplanlikesrt  r  r  r  r{  r  r  r  r  r  r  r   r  r  r   r  r  r  r  r  r
  r  r  r  r3  r  r  r  r  r  r  r  r  r7   r  r5  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  rA  rB  genderdobr7  
heightUnitweight
weightUnituser_id__iduser_id__emailr  trainingLeveldob1z%Y/%m/%dr;  exerciseId_idexerciseId_id__exerciseNamer   tmax
updateTmax
updateTypeupdatedDater6  
workWeightworkoutTestDater,  r   r   r   r   rC  r  r  r|  userIdr  profiler/   isProfileSet	isGoalSet	isPlanSet	isTmaxSetcodesessiontokenuserDetailsemailr   fnamelnameis_superuserr_  r  r  isFreeTrailphoner!  	phonecode	phoneCoder  androidVersionr`  r/  ra  rb  rc  ri  rj  rk  rl  rm  rn  ro  rp  rq  rr  rs  rt  ru  rv  rw  rx  ry  r   rz  r{  r|  r}  r~  r  r  r  r  r  r  r  r.  r  r  r  r  )
iosVersionr  r  r  r   r   r   r   )Ar3   r   r   r   r   r   r   r*   r   r   r   r  r.   r   r   r   r   r   rO   r   r%   r@   r.  r   strftimerN   r   r   r'  r(  r)  r,   r  r  r(   r  r  r!  r  r"  r"   r  r   r  r   r%  rM   rL   r  r  r&  r7   rJ   r-   r+   r/   r   r   rY   r|  rw   versionr   r9   r   )rr   r   r   r,  r3  r4  r+  r  r  r  r@  rA  r  r  r  r  r  r  r  r  r   r  r  r  r  r-  r  rD  r  	updetailsr   r  rG  r  r   r  r  r  r  r  r  r`  ra  rb  r  rK  r  r  r  rK  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rN  r  r  r  r  r  rR  rS  rT  rU  rV  r  r  r  r  r  rE  rF  rG  r  rH  rI  rJ  rL  rM  r  rN  r@  rO  rP  rQ  fitProQuerySetr  dataGoalObj
dataFitObjdataTmaxObjtmaxArrr  r  r  goalDetailsr  tmaxDetailsPlanDetailsr  r  rS  r  rh   rh   ri   individualuserplansT  s  



	

	
	
	

	














 

(






		




1
r  c           9      C   s  t  }z|| }t| jd}|d krtj j	|d d}g }g }g }g }g }	g }
g }i }d}|D ]}t
|}tjdj	|d dd}d	}|D ]}t
|}|d
|d  7 }qQ|d	krk|dd  }nd	}tjdj	|d dd}d	}|D ]}t
|}|d
|d  7 }q|d	kr|dd  }nd	}||d< ||d< d}tjj	|d dddddd}|D ]}d}t
|}|d }|d }t||d< tjj	|d ddddd}|D ]}d}t
|} |d }|d }dt|d  | d< t|d t| | d< tjj	| d dddddd}!|!D ]c}"d}#t
|"}$|d }|d }t|d t| d t| |$d< d t|d  |$d!< tjj	|$d d"d#ddd$d%d&}%|%D ]}&d}'t
|&}(|d }|#d }#t|d t| d t| d t|# |(d< d't|#d  |(d(< tjd)j	|(d d*d+d,ddd-d%d.d/d0d1d2})|)D ]}*d}+t
|*},|d }||,d/  |,d0 d ur|,d0 d	kr|,d0 d3kr||,d0  |'d }'t|d t| d t| d t|# d t|' |,d< |,d+ |,d4< tjj	|,d d5d6ddd7d%d2}-|-D ]B}.t
|.}/|d }|+d }+t|d t| d t| d t|# d t|' d t|+ |/d< d8t|+d  |/d9< |
|/ q|,|
d:}0|	|0 g }
q|(|	d;}1||1 g }	qY|$|d<}2||2 g }q| |d=}3||3 g }q||d>}4||4 g }qtjj	|d? }5g }6|5D ]}7t
|7},|6|, q||6|d@}q7tdA|iW S tdBdCdDW S  ty }8 ztdE tdFt|8iW  Y d }8~8S d }8~8ww )GNrx   r{   r   r   r   rw   r  r  r^   r  r?   r   r  r/   r  r   r   r   rU  pathr  r   r  	MesoCycle	meso_name-mesocycle_idno_of_sessions	totalInolr  dayOff
MicroCycler   microcycle_idno_of_excersicesr  restTimerepeatSession	sess_nameExercise__idr  exerciseName__exerciseNamer   r  r   exerciseName_idtransitExercise_idtransitLeveladvExerciseNULLEx_nameexcercise_idr   	excerciserI  set_nameExerciseInfo
setDetailsr  exerciseDetailsMicrocycleInfoSessionDetailsMesocycleInfoMicrocycleDetailsr  MesocycleDetailsr  )r   	ExercisesPeriodDetailsr1  Fr   r   r   r   )r3   r   r   r   r   r   r@   r   r   r   r   rM   r   rL   rC   r   rD   rE   rG   ZNewExcerciser   PlanSetsr   rY   r   r9   r   )9r   r   r   r   r   dataPeriodArrdataMesoArrdataMicroArrdataSessArr	dataExArr
dataSetArrexercisesListr  r  r   r  r  r  r  r  r  r  rN  r  periodCountperiodDetailsdt1	mesoCountdataPeriodObjmesocycleDetailsdt2
microCountdataMesoObjmicrocycleDetailsdt3sessionCountdataMicroObjsessionDetailsdt4excersiceCountdataSessObjexcersiceDetailsdt5setCount	dataExObjr  dt6r   
dataExDictdataSessDictdataMicroDictdataMesoDictdataPeriodDictallExecDetailsPlanExercisesdt7r  rh   rh   ri   viewPlanf  s\  






$











r9  c           0      C   s  t jddddj|d}g }g }g }g }g }g }g }	i }
i }i }d }d}|D ]>}t|}d}tjj|d dd	d
ddd}|D ]}d}t|}|d }|d }t||d< tjj|d ddddd}|D ]}d}t|}|d }|d }dt|d  |d< t|d t| |d< |d ur||
|d < tjj|d dddddd}|D ]i}d}t|}|d }|d }t|d t| d t| |d< dt|d  |d< |d ur|||d < t	jj|d ddddddd}|D ]}d} t|}|d }|d }t|d t| d t| d t| |d< d t|d  |d!< t
jd"j|d d#d$d%ddd&dd'd(d)d*
}!|!D ]}"d}#t|"}$|d }|	|$d(  |$d) d urs|$d) d+krs|$d) d,krs|	|$d)  | d } t|d t| d t| d t| d t|  |$d< |$d$ |$d-< tjj|$d d.d/ddd0d}%|%D ]B}&t|&}'|d }|#d }#t|d t| d t| d t| d t|  d t|# |'d< d1t|#d  |'d2< ||' q|$|d3}(||( g }qD||d4})||) g }q||d5}*||* g }q||d6}+||+ g }qj||d7},||, g }qBtjj|	d8d9d:dd;d<d=d>d?d@	}-g }.||
|d < |||d < |-D ]}/t|/}$|.|$ qT|
|dA}q'|S )BNr  r   rw   r  r   r   r   r  r{   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  r   r   r  rI  r  r  r  r	  r  r  r  exerciseStatusr   	equipmentderivedFormulaworkFormuladerivedFromexerciseDescvideo_id__videoLink)lastMeso	lastMicro)r@   r   r   r   r   rC   r   rD   rE   rG   PlanExcerciser   r   r  r   )0r   planIDr   r  r  r  r  r  r  r  lastMesoSesslastMicroSessr  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  r   r1  r2  r3  r4  r5  r6  r7  r8  rh   rh   ri   
getPlanArr  s8  



$










rG  c           J      C   s	  t  }z|| }|d }tjj|djdd }| r|D ]}t|}q"|d krtjdddddd	j|d
 d}g }g }	g }
g }g }g }g }i }d}t	| |d
 }t
| tjj|d
 dd
ddd}g }d}| r|D ]}t|}t|d dd|d< || qu|D ]}t|}d|d< d|d< d}tjj|d dd
ddddd}|D ]}d}t|}|d }|d }t||d< tjj|d dddddd}|D ]}d}t|} |d }|d }dt|d  | d< t|d  t| | d< tjj| d d!d"d#dd$d%d}!|!D ]d}"t|"}#|d }|d }t|d  t| d  t| |#d< d&t|d  |#d'< tjj|#d d(d)d#dd*d+d,d}$|$D ]}%d}&t|%}'|d }|d }t|d  t| d  t| d  t| |'d< d-t|d  |'d.< tjd/j|'d d0d1d2d#dd3d+d4d5d6d7d8d9d:d}(|(D ]W})d}*t|)}+|d }||+d6  |+d7 d ur|+d7 d;kr|+d7 d<kr||+d7  |&d }&t|d  t| d  t| d  t| d  t|& |+d< |+d1 |+d=< tjj|+d d>d?d@dAd#ddBd+dCd},|,D ]}-t|-}|d }|*d }*t|d  t| d  t| d  t| d  t|& d  t|* |d< dDt|*d  |dE< |d |dF v rsdG|dH< d|dI< d|dJ< n|d |dK v rdG|dH< d|dL< d|dJ< ndM|dH< d|dJ< tjj|d
 djdNgdO }.|dC dkrdG|dH< |. r|.D ]}t|}/t
|/ |/d }0q|0|dP< || q!t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 r7|6D ]}t|}8|8d }9q#dP|9i}7|9|'dP< |'|7|dT}:||: g }q^tjj|d
 djdUdVgdO };i }<|; rt|;D ]}t|}=|=d }>q`dP|>i}<|>|#dP< |#|<|dW}?|
|? g }qtjj|d
 djddXgdO }@i }A|@ r|@D ]}t|}B|Bd }CqdP|Ci}A|C| dP< | |A|
dY}D|	|D g }
q||	dZ}E||E g }	qtjj|d[ }Fg }G|FD ]}Ht|H}+|G|+ q||G||d\d]d^d_d^d`dadbd^d_d^d`dcdbd^d^d^d`dddbd^d^d^d`dedbd^dfd^d`dgdNd^d^dhd`didNd^djdhd`dkdNd^djdhd`dlddmdndod`dpdbd^d^d^d`g
dqdridqdsidqdtidqduidqdvidqdwidqdxidqdyidqdzig	ddbd{d|ddSd}d|ddVd~d|ddXdd|dddd|gdd]d{d|dd]d{d|ddXd}d|ddXd}d|ddXd~d|dddd|dddd|gdd}qtd|iW S tdMddW S tdMddW S  ty }I ztd tdt|IiW  Y d }I~IS d }I~Iww )Nrw   r  r?   rZ   r  r   r  r  r  r{   r   r   r  protocol_idr   r  r   r  "ztxEOSIcMc4genWarmupVideo2esZzqjO5CccooldownVideor   rU  r  r  r   r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  zSession r  r  r  r  r   r  r   intensityRanger  r  r  r   
warmupTyper^   r  r  r   r   	repsRangerepsRangeAbsr  
allOutStatrI  r  	macroSetsTalloutr
  desigProtocolID	microSets4Frp  )protocol_id__inprotoccolID	   )r  protocolr  r   )r  r[  r  r,  r.  )r
  r[  r  r-  )r  r[  r  r  r  r`  r/  ra  rb  rc  ri  rj  rk  rl  rm  rn  ro  rq  rr  rs  rt  ru  rv  rw  rx  ry  r   rz  r{  r|  r}  r~  r  r  r  r  r  r  r  r  r  r  r  )r   r  	Protocolsr  r  r  r  r1  zNo Plan Subscribedr   r   r   r   )r3   r   r   r   r   r   r   r   r@   
lastSetIdsr   rJ   r   r   replacer   rC   r.  r   rD   rE   rG   rC  r   r  r   rY   r   r9   r   )Jr   r   r   userIDr  r   r   r   r  r  r  r  r  r  r  r  r  
lastSetIDsprotocolDetailsprotocolJSONr&  dt12r   r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r'  r(  r)  r*  r+  r,  r-  r.  r/  r  r0  setProtocol
datasetObjsetProtocolIDexerProtocolexerProtocolJSONprotoExerObjexerProtocolIDr1  sessProtocolsessProtocolJSONprotosessObjsessProtocolIDr2  microProtocolmicroProtocolJSONprotoMicroObjmicroProtocolIDr3  mesoProtocolmesoProtocolJSONprotoMesoObjmesoProtocolIDr4  r5  r6  r7  r8  r  rh   rh   ri   ri  o  s  








$



























)
ri  c                 C   sz  i }i }t jj|g dddddd}g }| rt| |}t| |D ]}t|}|d }	|d }
t|	 |
dks?|
dkrw|d	 D ]3}t| tjjt	|	|d
 
 }t| |d urvtjj|d d 
 }|d urvd||d < qC|
dkr|d D ]7}t| tjjt	|	|d
 
 }t| |d urtjj|d d 
 }t| |d urd||d < qq%||dS )N)r-  r.  r/  )r{   rX  r{   rH  r   r  r-  r/  rA  )r  r  rw   r   r?   r.  rB  )rS  rV  )rJ   r   r   r   r   rG  r   r   rC  r  r  r  )r   rD  rS  rV  ra  rb  	PlanArrayr   r   
exerciseID
protocolIDsessObjlastExerDetailslastSetDetailsrh   rh   ri   r]  h  s\   

r]  c              
   C   s  t  }z|| }|d }|d krt| jd}d|v rU|d dkrUtd tjj	|d |d d
 }| rM|D ]}t|}q<td	|d
 dW S td	ddW S tjj	|d |d d}| rtjj|d |d d}	tt|d
  t|d
 tkrtdddW S |d
 }
|d |	_|d |	_|
|	_|	  td	ddW S tjj|d |d |d
 d}
|
  td	ddW S W d S  ty } ztd tdt|iW  Y d }~S d }~ww )Nrw   rx   
get_ratingr?   z------------1r3  r{   r3  r{   Tr  )r   r  r   FzPlease provide valid ratingr   zThanks for the rating)r{   r3  r  r   r   )r3   r   r   r   r   r   r   r7   r   r   r   r   r   rY   r   r   r  r{   r3  r  r   r   r   r9   r   r   )r   r   r   r   r   planrater   rV  r   r1  r  r  rh   rh   ri   createPlanRating  sN   



!
r  c              
   C   s   t  }z4|| }|d }|d kr0t| jd}tjj|d |d d	 }t
dddW S t
d	d
dW S  tyV } ztd t
dt|iW  Y d }~S d }~ww )Nrw   rx   r3  r{   r~  Tz plan rating successfully deletedr   Frn  r   r   )r3   r   r   r   r   r   r7   r   r   ro  rY   r   r9   r   r   )r   r   r   r   r   r   r  rh   rh   ri   deletePlanRating  s   

r  c           	   
   C   s   t  }z=|| }|d }t| |d kr>t| jd}tjj	|d d
ddd}|D ]}t|}q.tdd|dW S W d S  ty_ } ztd	 td
t|iW  Y d }~S d }~ww )Nrw   rx   r   r  r   Tr  )r   r   r   r   r   )r3   r   r   r   r   r   r   r@   r   r   r   r   rY   r   r9   r   r   )	r   r   r   r   r   r   r   r   r  rh   rh   ri   getPlanDetails  s"   


r  c              
   C   s   t  }zM|| }|d }|d krNtjjdddd}tjdddd}g }g }|D ]}t|}	||	 q+|D ]}
t|
}|| q9t	d||d	W S W d S  t
yo } ztd
 t	dt|iW  Y d }~S d }~ww )Nrw   r?   )programTypeStatusprogramTypeNamegoalName
goalStatusr  T)r   Detailsr  r   r   )r3   r   r   r   r   r   r   r   r   rY   r   r9   r   r   )r   r   r   r   r1  r/   r/  goalArrr   r   r  r   r  rh   rh   ri   getProgramType  s,   

r  c           `      C   s  t  }z6|| }t| jd}g }|d kr3tjj|d d}|j	dkr0t
dddW S d|v rg|d d krg|d }|d	ksN|d
ksN|dksN|dkrVt
dddW S tjj|d |ddddd}n,|d }|d	ks{|d
ks{|dks{|dkrt
dddW S tjj|d |ddddd}tjj|d}|D ]}	t|	}
q|
d }|
d dd}|
d dd}t|}|
d dd}t|}|d }|d }|d }|d }d}|D ]}|d }|d dks|d dkrd} nq|dkr|D ]}	|	d }tjj|d |d d|d |d  ||d!}|  |j}|	d" }|D ]}|d# }tjj|d|d$ |d  ||d%}|  |j}|d& }tt|d' |D ]m} | d( }!tjj|d|!d) |!d* ||d+}"|"  |"j}#| d, }$|$D ]G}%|%d- }&tjj|#d|&d. |&d/ |&d* ||d0}'|'  |'j}(|%d1 })|)D ]}*|*d2 }+tjj|+d3 |(d|+d4 |+d5 |+d6 |+d* |+d7 |+d8 |+d9 ||d:},d5|+v r|+d; dkr|+d5 |,_d<|+v r|+d< |,_d=|+v rtd>|+d=  |+d= |,_d?|+v r|+d? |,_d;|+v r
|+d; d kr
|+d; |,_d@|+v r|+d@ d kr|+d@ |,_ dA|+v r,|+dA d kr,|+dA |,_!dB|+v r=|+dB d kr=|+dB |,_"dC|+v rN|+dC d krN|+dC |,_#dD|+v r_|+dD d kr_|+dD |,_$|,  |,j}-dE|+v r|+dE d krt%jj|d |+d3 dF}.|.& rtdG nt%jj|+d3 |d |+dE |+dH |+dI |+dJ dK}/|/  |+d4 }0|+d6 dkr|+d4 }0t|+d6  tt'dL t(d|0D ]e}1t)jj|-d|+d5 |+d* ||dM}2d/|+v r|+d/ |2_d;|+v r|+d; d kr|+d; |2_d@|+v r|+d@ d kr|+d@ |2_ dA|+v r|+dA d kr|+dA |2_!dB|+v r#|+dB d kr#|+dB |2_"|2  q|+d6 dkr:dN|+v r:|+dN |2_*|2  |+d6 dkrt)jj|-d|+d6 |+d* ||dM}2d/|+v r_|+d/ |2_d;|+v rp|+d; d krp|+d; |2_d@|+v r|+d@ d kr|+d@ |2_ dA|+v r|+dA d kr|+dA |2_!dB|+v r|+dB d kr|+dB |2_"dN|+v r|+dN |2_*|2  |2j}3tdO qqsqOq$qn|D ]}	|	d }tjj|d |d d|d |d  ||d!}|  |j}|	d" }|D ]r}|d# }tjj|d|d$ |d  ||d%}|  |j}|d& }tt|d' t|dP dkrtdQ t(ddPD ]}4|D ]} | d( }!tjj|d|!d) |!d* ||d+}"|"  |"j}#| d, }$|$D ]b}%|%d- }&tjj|#d|&d. |&d/ |&d* ||d0}'|'  |'j}(|%d1 })|)D ]9}*|*d2 }+tjj|+d3 |(d|+d4 |+d5 |+d6 |+d* |+d7 |+d8 |+d9 ||d:},d5|+v r|+d; dkr|+d5 |,_d<|+v r|+d< |,_d=|+v rtd>|+d=  |+d= |,_d?|+v r|+d? |,_d;|+v r|+d; d kr|+d; |,_d@|+v r|+d@ d kr|+d@ |,_ dA|+v r|+dA d kr|+dA |,_!dB|+v r|+dB d kr|+dB |,_"dC|+v r-|+dC d kr-|+dC |,_#dD|+v r>|+dD d kr>|+dD |,_$d=|+v rOtd>|+d=  |+d= |,_d?|+v rY|+d? |,_|,  |,j}-dE|+v r|+dE d krt%jj|d |+d3 dF}.|.& rtdG nt%jj|+d3 |d |+dE |+dH |+dI |+dJ dK}/|/  |+d4 }0|+d6 dkr|+d4 }0t|+d6  tt'dL t(d|0D ]e}1t)jj|-d|+d5 |+d* ||dM}2d/|+v r|+d/ |2_d;|+v r|+d; d kr|+d; |2_d@|+v r|+d@ d kr|+d@ |2_ dA|+v r|+dA d kr|+dA |2_!dB|+v r|+dB d kr|+dB |2_"|2  q|+d6 dkr4dN|+v r4|+dN |2_*|2  |+d6 dkrt)jj|-d|+d6 |+d* ||dM}2d/|+v rY|+d/ |2_d;|+v rj|+d; d krj|+d; |2_d@|+v r{|+d@ d kr{|+d@ |2_ dA|+v r|+dA d kr|+dA |2_!dB|+v r|+dB d kr|+dB |2_"dN|+v r|+dN |2_*|2  |2j}3tdO qyqRq.q)qt(ddRD ]}4|D ]} | d( }!tdS tjj|d|!d) |!d* ||d+}"|"  |"j}#| d, }$|$D ]l}%|%d- }&tjj|#d|&d. |&d/ |&d* ||d0}'|'  |'j}(|%d1 })|)D ]C}*|*d2 }+tjj|+d3 |(d|+d4 |+d5 |+d6 |+d* |+d7 |+d8 |+d9 ||d:},d5|+v rO|+d; dkrO|+d5 |,_d<|+v rY|+d< |,_d=|+v rjtd>|+d=  |+d= |,_d?|+v rt|+d? |,_d;|+v r|+d; d kr|+d; |,_d@|+v r|+d@ d kr|+d@ |,_ dA|+v r|+dA d kr|+dA |,_!dB|+v r|+dB d kr|+dB |,_"dC|+v r|+dC d kr|+dC |,_#dD|+v r|+dD d kr|+dD |,_$d/|+v r|+d/ |,_d=|+v rtd>|+d=  |+d= |,_d?|+v r|+d? |,_|,  |,j}-dE|+v rD|+dE d krDt%jj|d |+d3 dF}.|.& r(tdG nt%jj|+d3 |d |+dE |+dH |+dI |+dJ dK}/|/  |+d4 }0|+d6 dkrS|+d4 }0t|+d6  tt'dL t(d|0D ]e}1t)jj|-d|+d5 |+d* ||dM}2d/|+v r|+d/ |2_d;|+v r|+d; d kr|+d; |2_d@|+v r|+d@ d kr|+d@ |2_ dA|+v r|+dA d kr|+dA |2_!dB|+v r|+dB d kr|+dB |2_"|2  qc|+d6 dkrdN|+v r|+dN |2_*|2  |+d6 dk	rQt)jj|-d|+d6 |+d* ||dM}2d/|+v r|+d/ |2_d;|+v 	r|+d; d k	r|+d; |2_d@|+v 	r!|+d@ d k	r!|+d@ |2_ dA|+v 	r2|+dA d k	r2|+dA |2_!dB|+v 	rC|+dB d k	rC|+dB |2_"dN|+v 	rM|+dN |2_*|2  |2j}3tdO qqqƐqqq|D ]}5t+jj|5dT |d |5d3 |5dU ||dV}6|6  	qf|D ]}5t+jj|5dT |d |5d3 |5dU ||dV}6|6  	q|D ]}5t+jj|5dT |d |5d3 |5dU ||dV}6|6  	qt,jj|d dWdX}7|7  t,jj|d dYdX}8|8  tjj|d dZd}9tj-d[d\d]j|d d^d}:t|9};t|:}<|<dk
rdR}<tjj|d d_}=d|=_.|<|=_/|;|=_0|=  tjj|d dZd}>|>D ]}?t|?}@tjj|@d d_}A|=j/|A_/|A  
q*|=j1}B|=j}C|Bd` t2|C }Dt34|D5da}Et2|E6d}F|Fd }Gdb}Hdc}Idd}J|B}Kdet2|G }L|Ldf dg |H dh |K }M|Ldf dg |I dh |K }N|Ldf dg |J dh |K }O|7|M|Cdi |7|N|Cdi |7|O|Cdi t|dkr|D ]O}P|Pdj }Q|Pdk }Rdl8dm}Sdn|Qi}Tdodpi}Ut9j:|St;|T|Udq}V|V }Wt|Vj< t=jj|Wd dr}X|X& 
rtds 
qt=jj|R|Wd |Qdt}Y|Y  
qtjj|d_}Zd|Z_>|Z  du}[|j?}\|j@|Bdv}]tAdw|]}^tB|[|^|\ t
ddxdW S t
ddydW S  tCyZ }_ ztDEdz t
d{t2|_iW  Y d }_~_S d }_~_ww )|Nrx   r{   r   r   Fz'Please update the prices and iOS Statusr   r  i  i)  73627721zThis is a dummy coach or gym idra  rw   r~   protocolJsonr   r  rI  progression
regressionskipr  r  rU  SpecificrV  Tr?   r   r   )r{   rU  r[   r   r   r}   rc  r  r  r   )r  r[   r   r   r}   rc  r  23456543456r
  r  r  )r  r[   r  r  r}   rc  r  r  r  r  )r  r[   r  r  r  r}   rc  r  r  ex_idr   r   	extra_setr   r   rO  )r  r  r[   r   r   r  r  r   r   rO  r}   rc  r  
exRestTimeinstructionszcoming Herer  r:  	advWeightrC  advSpeed	advHeightbaseDistance)r{   r  zalready ExistsbaseRepsbaseTime
baseWeight)r  r{   r  r  r  r  zhere I Come)r  r[   r   r  r}   rc  rR  zdetails Saved Successfullyr,  zeven Number of Microcylclesr.  zodd number of microcylesrH  r  )rH  r{   r  r   r}   rc  r   r   r   r  PlanMesocycle__idPlanPeriods__idrz   )$mesocycle_id__period_id__plan_id__idr   r  r  FacebookTwitter	Instagram"http://stratfit.net/#/planprofile/rn  utm_source=+&utm_medium=Link&utm_term=Organic&utm_name=urlr   r  r   5https://www.googleapis.com/urlshortener/v1/url?key={}'AIzaSyAXaSWj7trNg8Pq3PdBiOSHirnjcZlIZSorm  content-typeapplication/jsonr   headersrq  r   r{   rq  rm  zPlan published!)r  	plan_namezpublishplan.htmlzProgram Published SuccessfullyzUser LoggedOutr   r   )Fr3   r   r   r   r   r   r@   r   r   r4  rY   rK   r   r   r*   r   r^  rC   r   r   rw   rD   r   r   rE   rG   rC  r   r  specificInstructionr  r  exTimeexWeight
exDistancer@  r7  rT   r   rI  rq   r  rR  rJ   rO   r   r   r   r  r  r   r'  r(  r)  r   r   formatrequestspostrf  textrN   r[   r  r  render_to_string
officeMailr   r9   r   )`r   r   r   planBuildInfourlsplanIosStatusr   	draftJsoninstanceSubr   r   r   planjsonpublishplanjson	protocolsprotocolInfoprogressProtocolregressionProtocolskipprotocol
periodInfoinSeasonPerioddp	periodArr	periodValcreateperiodperiodIdmesoDetailsru  mesoVal
createmesomesoIdmicroDetailsrt  microValcreateMicromicroIdr(  sesssessVal
createsesssessId	exdetailsr  exValcreateexr
  planextmaxDetcreatePlanEXTmaxsetDatarf   	createsetsetIdr[  protoIdcreateProtocolr  r  countOfPeriodscountOfMicrocyclesr  r   r  updatePlanPeriodperperObjupdatePeriodplannamer   r`  ra  rb  	encodeUrl
utm_sourceutm_source1utm_source2utm_namer  url1url2url3ulr  r  post_urlpayloadr  rresultcheckShortUrlscreateShortUrlsr  subjectto_emailctxr   r  rh   rh   ri   createPlanBuild  s0  


  




	

	
	















	
















 
'	

	
	



















	
















 
	
	





















	
















   6	





r  c              
   C   s  t | jd}zt }g }tjj|d dd}|	 r|D ]}t
|}q!|d dd}t |}|d D ]/}	|	d D ](}
|
d D ]!}|d	 D ]}|d
 D ]}t|d d  ||d d  qQqKqEq?q9tjj|ddddddd}|D ]$}t
|}|d dkr||d |d |d |d |d |d d q|t|ddW S  ty } ztd tdt|iW  Y d }~S d }~ww )Nrx   r{   r
  r   r  r  r  r  r  r  r  r  r  r   r?  r;  rw   accessLevelexAbilitiesSkillexerciseCode)exNameexCoderw   exDescexEquipr  F)safer   r   )r   r   r   r   rI  rK   r   r   r   r   r   r^  r   addr   r.  r   rY   r   r9   r   r   )r   r   r  r/  r   vadataObj1jsonObjtestvmmiser  exTypeDetailsr   r   r  rh   rh   ri   getExerciseDetails  sN   

0
r  c              
   C   s  t  }t| jd}z|| }|d }t| |d krtjj	|d |d
ddd}| r|D ]}t|}q3|d d ksF|d dkrK|d }nM|d d	d
}	t|	}d|d v rg|d d |d< n1d|d v rv|d d |d< n"d|d v r|d d |d< nd|d v r|d d |d< n|d }tjj|d d}
t||
_td ||
_||
_|
  |
j}tdd|dW S W d S  ty } ztd tdt|iW  Y d }~S d }~ww )Nrx   rw   r{   ra  r~   r  r^   r  r  rI  r  r  r  
transitionr   zin Here TO UpdateTrd  re  r   r   )r3   r   r   r   r   r   r   rK   r   r   r   r   r   r^  r   rf  r  r}   rc  r   rw   rY   r   r9   r   r   )r   r   r   r   r   rg  r   r   	protoJsonr[  rh  r   r  rh   rh   ri   saveprotocolJson  sR   




r  c           	   
   C   s"  t  }t| jd}ze|| }|d krod|v r+|d dkr+|d d kr+|d }n|d }tjddj	||d d
d	d
dd}| rf|D ]}t|}|d dkr`|d dkr`d|d< qId|d< qInddi}t|W S W d S  ty } ztd tdt|iW  Y d }~S d }~ww )Nrx   r  r^   rw   ry   rz   r{   r|   r   r  r[   r   r?   r   r   Fr   r   )r3   r   r   r   r   r   rK   r   r   r   r   r   r   rY   r   r9   r   r   )	r   r   r   r   r   r   r   r   r  rh   rh   ri   getprotocolJson  s@   
 




r  c              
   C   s   t  }t| jd}z4|| }|d }t| |d kr9tjj	|d d}d|_
||_|  tdddW S tdd	dW S  ty_ } ztd
 tdt|iW  Y d }~S d }~ww )Nrx   rw   r   r   TzProgram deleted successfullyr   Frn  r   r   )r3   r   r   r   r   r   r   rK   r   r   r[   rc  r   rY   r   r9   r   r   )r   r   draftidr   r   	draftdatar  rh   rh   ri   deletedraftedplan  s$   

r  c           $   
   C   sr  t  }t| jd}z|| }|d }|d kr	tjj||d d	d}t
jj|d d	d}|D ]}t|}q7t| g }	g }
|d dkr| rb|D ]}t|}|d d	d
}qSt|}|d }|D ]Q}|d }|D ]H}|d }|D ]?}|d }|D ]6}|d }|D ]-}|d }d|d v r|d }|d }|	||d q|d }|d }|
||d qqq}quqmtd|	d td|
d g }g }|	D ]}||
v r|
| q|
} | D ]}!|!|vr||! q|	D ]}"|"|vr||" qt|d ntdddW S tdddW S t||dW S  ty8 }# ztd tdt|#iW  Y d }#~#S d }#~#ww ) Nrx   rw   r{   r|   r   r   r  r?   r  rI  r  r  r  r  r  r  z0-0-0-0r  r  r  )exnameexidz-----------XXXXXXXXXXXXXXXXXXXXXXXXXXFznot a rapid progression Planr   zUser Logged Out)labelled	unlabbeldr   r   )r3   r   r   r   r   r   rK   r   r   r   r@   r   r   r   r^  r   removerY   r   r9   r   r   )$r   r   r   r   r   r   r   r   
planValues	lablledExunlabelledExr   r   r  r  r  r  ru  r  rt  r(  r  r  r  r  labelledExcerciseslabelledExidunlabelledExerunlabelledexidoutputoutput1itemotherExercisesr.  x1r  rh   rh   ri   getTransitExId1  s   







r,  c              
   C   sP  t  }t| jd}z||| }|d }t| |d krd|v rtjj	|d |d
dd}| rf|D ]}t|}q6tjj|d d}t|d |_t|d  ||_||_|  tdd	d
W S tjj|d ||t|d d}	|	  tdd	d
W S W d S W d S  ty }
 ztd tdt|
iW  Y d }
~
S d }
~
ww )Nrx   rw   r{   ra  r~   r   rulesTzrecord Inserted Successfullyr   )r~   r}   rc  r  r   r   )r3   r   r   r   r   r   r   rK   r   r   r   r   r   r   rf  r  r}   rc  r   rY   r   r   r9   r   r   )r   r   r   r   r   rg  r   r   rh  
createRuler  rh   rh   ri   saveRuleJsonw  sH   


r/  c              
   C   s  zt | jd}tjj|d dddd}|D ]
}|d }|d }q|d }t| |d }t| t	jj|d
dd	d
dddddd}g }	|D ])}
t|
}|d |d< |d |d< |d |d< |d |d< |d |d< |	| qMtjddt|t| }t|}g }|D ]/}t|}t	j
dd	d
dj|d dddddd}|D ]}t|}t|d || qqt|	||tdW S  ty } ztd tdt|iW  Y d }~S d }~ww )Nrx   rw   r?   r+  r{   endstartr  UserExercise__idrg  r  	setNumber&userexercise__exerciseId__exerciseNamer8   userexercise__exerciseWorkWeightplanset__num_of_reps	numOfRepssetNamerepsDoner   r  z-id)planset__excercise__session__idz--------)r1  offset
userplanIdactivePlanIdr   r   )r   r   r   r   r   r   r   r   r   UserSetsr   r   r   rG   r.  r  reversedrY   activePlan_idr   r9   r   r   )r   r   rU  r  r{   r6  offset1offset2rJ  listr   plandetailslast_twolast_two_in_ascending_orderrI  r  r   userSetDetailsr   r  rh   rh   ri   r     sh   
"

r   c                 C   s"  t  }z|| }|d }t| |d krt| jd}tj	ddj
||d ddddd	}| rS|D ]}t|}|d d krO|d d
krOd}q:d}q:nd}tjj
|d d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(d)}g }tjj
|d d }tjj
|d d }tj	d*j
|d dd+}d
}d
}|D ]Q}t|}|d d,ks|d d-krtjj|d& d}n#tjj|d d}t|d# d. tt|jd/ t|j  d0 |d#< |d  |d1< |d# |d2< |d |d3< q|D ]}t|}|d4t|d5  7 }q|d
kr7|d6d  |d< |D ]}t|}|d4t|d7  7 }q9|d
krX|d6d  |d!< d
}|D ]}t|}|d8|d+  7 }q\|d
krz|d6d  |d9< nd
|d9< |	D ]}t|}|d |d:< td;|d  qt|	d< |
D ]G}t|}|d d=kr|d |d>< n-|d d?kr|d |d@< |d |dA< |d |d< n|d d,kr|d |dB< |d |dC< || qtddD||dEW S W d S  ty } ztdF tdGt|iW  Y d }~S d }~ww )HNrw   rx   ry   rz   r|   r   r  r[   r   r^   TFr  r  plan_id__planNameplan_id__num_of_sessionsr  r  r  r  r  rH  couponr   r   r/   r	  r  r  originalPlanIdr  r  r  r   r  r  r  r}   r  r4  r  r   r  r
  r  r  r  r  rp  r   r  r  r  r?   r  r  abilitiesNamesr  ZfvgdhjZggggggggggggggggr  r  2r  r  r  r  r  )r   r   r   protocolExistsr   r   )r3   r   r   r   r   r   r   rK   r   r   r   r   r   r   rR   r6   r@   rL   rM   r*   r   r   r  r  r   rY   r   r9   r   )r   r   r   r   r   protocoldetailsr   r	  rN  rd  r   
planvaluesr/  r/   r  r  
goalStringabilityStringr   r  r  goalgoalObjr  
abilityObjrL  r  r  r  r   r  rh   rh   ri   r     s   

(



Q
r   c           
   
   C   s.  t  }zt|| }|d }t| |d krptjj|ddd}| r'd}ntdddW S t	jj|dd}|D ]}t
|}t|d  |d d krPd}q;tdd	d  W S |dkrj|dkrmtdd
dW S W d S W d S tdddW S  ty }	 ztd tdt|	iW  Y d }	~	S d }	~	ww )Nrw   r?   r+  TF)r   r[   r   r  r,  r-  rn  r   r   r   )r3   r   r   r,   r   r   r   r   rY   r*   r   r   r9   r   r   )
r   r   r   r   trainerCheckuserProfileCheckr   r   profileCheckr  rh   rh   ri   checkTrainer-  s4   

rY  c           
   
   C   sH  t  }z|| }|d }t| |d krg }tjjddddd}|D ]T}t|}|d |d< |d |d< |d d u rFd|d< d|d	< n|d |d	< |d |d
< |d |d< tjj|d d }|	 rnt
||d< nt
||d< || q%td|dW S W d S  ty }	 ztd tdt|	iW  Y d }	~	S d }	~	ww )Nrw   r-  r{  r  r  r  r  +http://stratfit.net/assets/images/user1.pngcreatedBy_id__avatar1r*  r  	noOfPlansT)r   coachesListr   r   )r3   r   r   r*   r   r   r   r   r@   r   r   r   rY   r   r9   r   r   )
r   r   r   r   rG  r  r  	coacheValr   r  rh   rh   ri   	coachListL  s<   


r_  c                 C   sZ  t  }z|| }|d }g }g }g }g }|d krt| jd}tjj|d dd	ddd}|
 r}|D ]}	t|	}
||
 ||
d  q7|d d  D ]'}tjdd	j|d
	dddddddddd
}|D ]}	t|	}|| qkqP|| td||dW S tdddW S  ty } ztd tdt|iW  Y d }~S d }~ww )Nrw   rx   r  r?   )r}   r   r  r   ry   rz   r  rH  r{   r[   r3  r  	startDater  	freetrailrenewalDateT)r   ZpublishedplansListsubscribersFUser Logged outr   r   r   )r3   r   r   r   r   r   r@   r   r   r   r   r   r   r   r   rY   r   r9   r   r   )r   r   r   r   ZPlanListArrZArrrc  Infor   r   r1  rf   rU  userplanr  rh   rh   ri   PlanSubscribersn  s<   

.

rg  c                 C   s.  t  }zr|| }|d }g }g }|d krot| jd}g }tjj|d d	 }|d d  D ]}	d|	d< |
|	 q3tjj|d d	 }
|
d d  D ]}	d|	d< |
|	 qPtjj|d d	 }|d d  D ]}	d|	d< |
|	 qmtjj|d d	 }|d d  D ]}	d	|	d< |
|	 qtjj|d d	 }|d d  D ]}	d
|	d< |
|	 qtjj|d d	 }|d d  D ]}	d|	d< |
|	 qtjj|d d	 }|d d  D ]}	d|	d< |
|	 qtjj|d d	 }|d d  D ]}	d|	d< |
|	 qtjj|d d|d d	ddd}| rf|D ]B}t|}|d }t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&}| rd|D ]}t|}|
| qWq#td'||d(W S td)d*d+W S  ty } ztd, td-t|iW  Y d }~S d }~ww ).Nrw   rx   r{   r  r   r+  r?   r,  r-  r.  r/  r   r0  r2  r[   r4  r5  r7  r8  r9  r:  r;  r<  r=  r6  r>  r?  r@  rA  rB  r3  rC  r  rD  rE  rF  rG  rH  T)r   Z
PlanStatusZCompletePlanFrd  r   r   r   )r3   r   r   r   r   r   rC   r   r   r   r   rD   rE   rF   rG   rH   rI   rJ   r   r   r   r   r   rY   r   r9   r   r   )r   r   r   r   ZPlanActionsr   r   r1  rM  rf   rN  rO  rP  rQ  rR  rS  rT  rJ  r   r   ZprogIdr  r^  r  rh   rh   ri   Web_PlanDetails  sv   

$
F

rh  c                 C   s\  t  }z|| }|d }t| g }|d krt| jd}tj	ddj
|d ddddd	d
dddd	}| r|D ]H}t|}|d |d< |d	 d u rUd|d< n|d	 |d< |d
 |d< |d |d< tjj
|d d }	|	 r}t|	|d< nd|d< || q>td|dW S  ty }
 ztd tdt|
iW  Y d }
~
S d }
~
ww )Nrw   rx   ry   r   r  r  r  r  r*  r   r  r)  r  r4  r   rZ  r  durationr  r  	noOfUsersr   T)r   	plansListr   r   )r3   r   r   r   r   r   r   r@   r   r   r   r   r   r   r   r   r   rY   r   r9   r   r   )r   r   r   r   planListArrr   r   r1  r  	userplansr  rh   rh   ri   coachPlansList  sH   


rn  c              
   C   s   t  }zG|| }|d }t| |d krCt| jd}|d dkr'd}nd}tjj	|d d}|d |_
|  td	|d
W S tddd
W S  tyi } ztd tdt|iW  Y d }~S d }~ww )Nrw   rx   r[   r   zPlan DeactivatedzPlan Activatedr{   r   Tr   Fr   r   r   )r3   r   r   r   r   r   r   r@   r   r   r  r   rY   r   r9   r   r   )r   r   r   r   r   r   deactiveplanr  rh   rh   ri   deActivatePlan  s(   


rp  c           )   
   C   s  t  }i }d}t|}|rZtd|d |}z$|| }|d }|d kr3td|d d |d d	W S td
ddW S  tyY } ztd tdt	|iW  Y d }~S d }~ww || }|d }t
jjdd}|j}	tjj|d}
g }g }g }g }g }d
}	 | 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}g }|D ]}d}t|}||d  |d |d< |d d |d  |d< |d d |d  |d< |d d u rd|d< d|d< d|d< n|d |d< |d |d< |d |d< |dkr:d |v r,|d  d!kr,tjj|d ddd" }n5tjj|d ddd" }n'd |v rT|d  d!krTtjj|d ddd" }ntjj|d ddd" }| rkg }g }g }|D ]4}t|}t|d#  t|d d$ ||d#  ||d  |D ]}||v r||d  qqntjj|d%d&d'jtd'd(}|D ]}t|}g }i }g } i }!|D ]}"|D ]}#| |#d)  t| }$|$|!d*< qg } qi }%|D ]%}"|D ]}#|"|#d& kr||#d)  t|}&|&||#d& < g }&qg }qt|d+ |D ]}&|d |v r*|d |&kr(|!d* |d,< qd|d,< q|d |d# kr^tjj|d d-d'  }'t|'|d d. ||' }t|d/ ||d,< t||d0< q|| q	 tjjddd1  t!d2d3 }(|f|d< |(|d< t"|| z%|| }|d }|d krtd|d d |d d	W S td
ddW S  ty } ztd tdt	|iW  Y d }~S d }~ww )4NZgetcoachr)  r*  rw   Tcoachsr   dollar)r   r]  r  Frn  r   r   r   r?   r   ru   rv   rx   r-  r{  r  r  r  r  r  r  r  rZ  r[  r*  r  r  )r}   r   r  r}   Zgetcochsr  r{   r3  r  r  numberr[  downloaduserscountr  downloadusersdownloadcountr\  r  r  r  )#r3   r	   r   r   r   rY   r   r9   r   r   r   r   r  r*   methodr   r   r   r   r   r   r   r   r@   r   r   r$  r'   r   r&  r  r  r"  r"   rI  ))r   r   r  rK  rL  r   r   r  r+  r  r4  rG  r  r  	inCoaches	otCoachesr@  cDatar  rq  rv  r^  r   r!  ZplancreatedByrV  r   r  idsrY  rZ  r[  rP  r   rQ  rf   rs  r  r[  ru  rC  rh   rh   ri   ionicgetcoachs  s6  










"






r|  c              
   C   s   t  }z.|| }|d kr*t| jd}tjj|d d}|j	}t
d|dW S t
dddW S  tyP } ztd	 t
d
t|iW  Y d }~S d }~ww )Nrx   r  )r   T)r   InstructionsFr   r   r   r   )r3   r   r   r   r   r   r   r   r   r?  rY   r   r9   r   r   )r   r   r   exDataexInfor  r  rh   rh   ri   getExInstructions  s   

r  c                 C   s   t j }tj }|D ]b}t|}|d dks|d d krn|d d}|D ]F}t|}|D ]=}||d krltdd|d|d d|d	  tjj|d	 |d	 d
}	|		 rZtd q/tjj
|d	 |d	 ddd}
|
  q/q'qtdddS )Nr/   r^   r  r  this Came Here For Testing-------r  PlanId------>rw   )r  r{   zExisting Goalsr   r  Trecords inserted successfullyr   )r@   r   r   r   r   r   r   rL   r   r   r   r   rY   )r   planPurposesrN  r  r  purposesValr   r   r:  existingPurposescreatePlanPurposesrh   rh   ri   insertPlanPurposes  s8   


r  c                 C   s   t j }tj }|D ]b}t|}|d dks|d d krn|d d}|D ]F}t|}|D ]=}||d krltdd|d|d d|d  tjj|d |d d	}	|		 rZtd
 q/tjj
|d |d ddd}
|
  q/q'qtdddS )Nr  r^   r  r  r  r  r  rw   )r  r{   zExisting Abilitiesr   r  Tr  r   )r@   r   r   r   r   r   r   rM   r   r   r   r   rY   )r   r  r  r  r  r0  r   r   r:  existingAbilitiescreatePlanAbilitiesrh   rh   ri   insertPlanAbilities  s<   


r  c              
   C   s   t  }zU|| }t| jd}|d krQtd tjj	|d d}d|_
|  tjj|d d  }|rItjj	|d d}d	|_
|  tdd
dW S tdddW S  tyw } ztd tdt|iW  Y d }~S d }~ww )Nrx   herer{   rl  Tr  rw   r   r   zReview Submitted Successfullyr   Fr   r   r   )r3   r   r   r   r   r   r   rK   r   r   r[   r   rQ   r   r   r  rY   r   r9   r   r   )r   r   r   r   updatedraftedPlanreviewdCommentsupdateStatusr  rh   rh   ri   sendForReview;  s*   

r  c                 C   s  t  }z|| }|d kr|d dkr|d dkrd| jv r-| jd dkr-t| jd }nt}d| jv rC| jd dkrCt| jd }nd}|d | }|| }tjddjdd	d
	ddddddddddddd}g }t
|}	| r||| }
|
D ]V}t|}d	|d< |d d |d  |d< |d |d kr|d |d< d|d< nd|d< tjj|d d	  }|r|d |d< |d |d < nd	|d< d|d < || q|td!||	d"W S td#d$d%W S td#d&d%W S  ty } ztd' td(t|iW  Y d }~S d }~ww ))Nr|  r?   r  rowsr^   pagerz   r*   r   r[   planId__planStatusr  r[   planId_id__planNameplanId_id__pricer~   planId_id__planDescriptionplanId_id__createdBy_idplanId_id__originalPlanner_idplanId_id__originalPlanId_idplanId_id__licencePolicy)planId_id__originalPlanner_id__first_name(planId_id__originalPlanner_id__last_nameplanId_id__advPlanliscenceStatusr  r  r	  r  r  reiviewStatusr  r  Tr   r  r  FInvalid Userr   r   r   r   )r3   r   rv   r  r   rK   r   r   r   r   r   r   r   rQ   r  r   rY   r   r9   r   r   )r   r   r   r  r  r;  totr  r  r  r   r  proObjprocommentsr  rh   rh   ri   programsTobeReviewedU  sj   




r  c              
   C   s   t  }z7|| }t| jd}|d kr3td tjj	|d |d dd}|
  tddd	W S td
dd	W S  tyY } ztd tdt|iW  Y d }~S d }~ww )Nrx   r.  r{   commentsr?   )r{   r  r[   TComments Saved Successfullyr   Fr   r   r   )r3   r   r   r   r   r   r   rQ   r   r   r   rY   r   r9   r   r   )r   r   r   r   createplancomr  rh   rh   ri   createPlanComments  s&   

r  c              
   C   s   t  }zm|| }t| jd}|d kritd d|v rO|d dkrOtjj	|d |d dd}|
  tjj|d d	}|d |_|
  td
ddW S tjj|d d	}|d |_|
  td
ddW S tdddW S  ty } ztd tdt|iW  Y d }~S d }~ww )Nrx   r.  r[   r,  r  r  r?   )Exercise_idr  r[   r   Tr  r   zExercise activated successfulyFr   r   r   )r3   r   r   r   r   r   r   rS   r   r   r   r   r   r:  rY   r   r9   r   r   )r   r   r   r   r  exstatusr  rh   rh   ri   createEXComments  s6   



r  c              
   C   s   t  }z5|| }t| jd}|d kr1td tjj	|d d
  }td|d dW S tdd	dW S  tyW } ztd
 tdt|iW  Y d }~S d }~ww )Nrx   r.  r{   r  Tr  r   Fr   r   r   )r3   r   r   r   r   r   r   rQ   r   r   r   r  rY   r   r9   r   r   )r   r   r   r   r  r  rh   rh   ri   reviewsofplan  s   

r  c           
      C   s@  t  }z}|| }|d kryg }tjddjddddddd	d
dddddddddd}|D ]B}t|}t|d
  |d
 dkrPt	jj
|d
 d}|rP|j|d
< |d	 dkrkt	jj
|d	 d}|rg|j|d	< nd|d	< || q.td|dW S tdddW S  ty }	 ztd tdt|	iW  Y d }	~	S d }	~	ww )Nrz   ry   r?   r   r  
planId__idplanId__priceplanId__indianPriceplanId__indianIosPriceplanId__iosPricer  planId__iosStatusplanId__planNameplanId__planLogoplanId__programType_idplanId__planPhotocreatedBy__avatarcreatedBy__first_namecreatedBy__last_nameplanId__planDescriptionr  Tr1  Fr   r   r   r   r3   r   rK   r   r   r   r   r   r   r   r   r  r   rY   r   r9   r   r   
r   r   r   rI  r   r  r  iosPricevalindianiosPricevalr  rh   rh   ri   getPlanPrices  F   



r  c              
   C   s  t  }z_|| }|d kr[t| jd}tjj|d d}t	jj|d d}|r/|j
|_nd|_t	jj|d d}|rB|j
|_nd|_|d |_|d	 |_|  td
ddW S tdddW S  ty } ztd tdt|iW  Y d }~S d }~ww )Nrx   r  r   r  )r  r   r  r  r  Tz!Plan details updated successfullyr   Fr   r   r   )r3   r   r   r   r   r   r@   r   r   r   r  r  rz  r  r4  r   rY   r   r9   r   r   )r   r   r   r   r   r  r  r  rh   rh   ri   updatePlanPrices  s0   





r  c           
      C   s@  t  }z}|| }|d kryg }tjddjdddddddd	d
ddddddddd}|D ]B}t|}t|d	  |d	 dkrPt	jj
|d	 d}|rP|j|d	< |d dkrkt	jj
|d d}|rg|j|d< nd|d< || q.td|dW S tdddW S  ty }	 ztd tdt|	iW  Y d }	~	S d }	~	ww )Nrz   ry   r?   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  Tr1  Fr   r   r   r   r  r  rh   rh   ri   getPublishedPlanPrices&  r  r  c           &      C   s|  d}t jjdd}|j}t }g }d}	 d}tjj|d}|j}	|	dkr'd}|dkr0|d	7 }n|d
7 }|d7 }|| t	|}
|
D ]}t
|}|d d t|d  }t|d}t|d}|d |d< |d d |d  |d< |d d |d  |d< t|d dkrd|d< n|dkrt|d t| |d< |d |d< n|d |d< |d dkrd|d< d|d< n|d d krd!|d< n
|d d"krd#|d< tjj|d$ d}t|jd t|j |d%< tjd&j|d d'd(}d)}d)}|D ]}t
|}|d*|d(  7 }|d*|d(  7 }q|d)kr&|dd  }|dd  }nd)}d)}tjd+j|d d'd,}d)}d)}|D ]}t
|}|d*|d,  7 }|d*|d,  7 }q?|d)kri|dd  }|dd  }nd)}d)}	 |d- d. t| d/ d0 t| d/ |d-< |d1 d2ks|d1 d3krtjj|d4 d}t|d- d5 tt|jd t|j  d6 |d-< n#tjj|d$ d}t|d- d5 tt|jd t|j  d6 |d-< tjj|d d'd7  }tjj|d d8 } d}!d}"| D ]}#t
|#}$|!|$d9  }!|"d }"q|!|" }%|%|d:< ||d;< ||d<< ||d=< ||d>< ||d?< d@|dA< ||dB< || qCt d||dCS )DNFr?   r   a  SELECT Program_plan.*, Program_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,Program_plan.goals as planGoal,Program_plan.price as planPrice,Program_plan.originalPlanner_id as originalPlanner,Program_plan.createdBy_id as createdBy,utility_programtype.programTypeName as programType__programTypeName,Subscriber_user.avatar as createdBy_id__avatar,Subscriber_user.id as coachId FROM Program_plan left join utility_programtype on Program_plan.programType_id = utility_programtype.id left join Subscriber_user on Program_plan.createdBy_id = Subscriber_user.id left join Program_selectedabilities on Program_plan.id = Program_selectedabilities.plan_id left join Program_plangoals on Program_plan.id = Program_plangoals.plan_id left join Program_plancountry on Program_plan.id = Program_plancountry.plan_id r  r  r   Tz/ where Program_plancountry.country_id = 88 and z0 where Program_plancountry.country_id != 88 and z Program_plan.id is not null and activationStatus=1 and planStatus=1  GROUP BY Program_selectedabilities.plan_id,Program_plangoals.plan_id ORDER BY Program_plan.programType_id,Program_plan.planName ASCr  r  rw   r  r  r  r  r  r  r  r  r   r  r  r{  r  r  r  r  r   r  r  r  r  r  r  r   r  r  r^   r  r   r  r  r  r  r  r	  r
  r  r}   r  r  r3  r  r  r7   r  r  r  r  r  r  r  r  )r   r  r@  )!r   r   r   r  r   r  r   rw   r#  r!   r   r   r'  r(  r)  r   r  r   r%  r*   r  r  rM   r   r   r   rL   r   r&  r  r7   r   rY   )&r   r@  r+  r  r.  r-  r  r  r  r  rB  r   r   r`  ra  rb  r  r  r  r  r  r  r  r  r  rN  r  r  rk  r  r  r  rR  rS  rT  rU  rV  r  rh   rh   ri   storeK  s   









 r  c           C      C   s  d}t jjdd}|j}g }g }t| jd}t }| j	dd }|r-|
|d }	nd}	tjj|	d}
|
j}|d	kr?d
}tjjd	d }|D ]}t|}||d  qJtjtd	d  }|D ]}t|}||d  qf|d
krtjdddddddddddddddddddd d!d"d#d$d%d&j|d' dd|d(d)d}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}g }g }g }d*}|D ]/}t|}|d d+ t|d  }t|d,}t|d-}|d |d.< tjj|d d/ }| r(|D ]}t|}q|d0 |d0< nd1|d0< |d d2 |d  |d3< |d |d4< t|d d*krLd5|d< n|d
krct|d% t| |d< |d |d4< t jd6j|d d7d8}d9} |D ]}!t|!}"| d:|"d8  7 } qv| d9kr| dd  }#nd9}#t!jd;j|d d7d<}$d9}%|$D ]}!t|!}"|%d:|"d<  7 }%q|%d9kr|%dd  }&nd9}&|d  |d krt"jj|d  d}'|'j#}(|(|d=< |d d> t|# d? d@ t|& d? |d< |d! dAks|d! dBkr&t"jj|d d})t|d dC tt|)j#d2 t|)j$  dD |d< nA|d  |d krDt"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rdY|dT< |d |dZ< |d |dO< || qt)jd[d\d}1g }2|1D ]}3t|3}4d]|4d^< |2|4 qt"jj|d_ }5g }6|5D ]}7t|7}8t*jj|8d dd`' }9|9|8da< tjj|8d d/ }:|:D ]}t|};q_|8db d uru|8db |8dc< nd9|8dc< |7d |8dO< |7dd d2 |7de  |8d3< g }<tjj|8d dfd}=|=D ]}>t|>}?|<|?d  q|<|8dg< t+jj|8d d/ }@|@ r|@D ]}At|A}B|Bdh dikrd|8dj< qdk|8dj< qnd|8dj< |6|8 q<t,d
||2|6|||dlS )mNFr?   r   rx   r  r  r  r  r   Tr}  r{   r%  r&  ry   rw   r  r  r  r(  r  r)  r3  r   r}   r  r*  r  r  r   r  r  r	  r  r4  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  r  r
  r  r  r  r3  r  r  r  r  r  r  r  r  r7   r  r5  r  r  r  r   r6  r  r  r  r  r	  r7  r8  r9  r:  r  r;  r=  r  r?  r  r  r  r@  r  r  rA  rB  )r   r   r   rC  r  r  r@  )-r   r   r   r  r   r   r   r   GeoIP2r  r  r   rw   rO   r   r   r   r   r%   r@   r   r.  r   r'  r(  r)  r   r,   r   r  r   r%  rM   rL   r*   r  r  r   r&  r  r7   rR   r-   r.   rY   )Cr   r@  r+  r  r  r  r,  r  r  r  r  r  r  r  r  r  r  r  r   r-  r  rD  r  r   r   r`  ra  rb  r  rK  r  r  r  r  r  r  r  rN  r  r  r  r  r  rR  rS  rT  rU  rV  r  rd  rE  r  r  rF  rG  r  rH  rI  rJ  rL  rM  r  rN  r@  rO  rP  rQ  rh   rh   ri   r@    s  








 



r@  c                 C   s  g }t jjdd }|D ]{}t|}|d }|d }|d d t|d  }t|d}t|	d}	|	d |d< d	}
d
}d}|}dt|d  }|d d |
 d | }|d d | d | }|d d | d | }|
||d |
||d |
||d qt|dkr|D ]L}|d }|d }dd}d|i}ddi}tj|t||d}| }t|j tjj|d d}| rtd qtjj||d |d}|  qtdddS tdd dS )!Nr?   r'  rw   r  r  r  r  r  r  r  r  r  rn  r  r  r  r  r   r  r  rm  r  r  r  r  r   r  TzResults Inserted Successfullyr1  Fz	Empty Set)r@   r   r   r   r   r   r'  r(  r)  r   r   r   r  r  r  r   rf  r   r  rN   r   r   r   rY   )r   r  r  r  r   r   r  r`  ra  rb  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rh   rh   ri   goo_shorten_url  sX   


r  c           :   
   C   sF  t  }z~|| }|d kr{|d }tjjdd}|j}t| j	d}g }g }t
 }	|d }
tjj|
d}d}|d dkrF|d	7 }n|d
7 }|d dkrU|d7 }n(tjj|d d }|D ]}t|}|t|d  qb|dd| d 7 }t|d |	| t|	}tjjddd tdd }|jdkr|d dkrtjdjdddd tdd }t|t| }nXtjdjdddd tdd }t|t| }n:|d dkrtjdjdddd tdd }t|}ntjdjdddd tdd }t|}g }g }|D ]J}t|}t jj|d d }|! ra|D ]$}t|}|d "d }|d! "d"}|d "d#}|d$ ||d% < q<t#jj|d dd&$ }t#jj|d dj%d'd(j%d)d*$ }||d+< ||d,< d%|d-< d%|d.< d)|d/< |d0 d1 t|d  }t&'|(d2}t|"d3} | d |d4< |d5 d6 |d7  |d8< |d5 d6 |d7  |d5< d9|v r|d9 d:kr|jdkr>|d dkrtjdjdddd td;d< }|d= |d< |d |d>< n'tjdjddd?t)dd@  tdAdB }|dC |d< |d |d>< t*|d d%kr<dD|d< n`|d dkrttjdjdddd td;d< }t| t+jj|dE}!|!j,}t+j j|d= dE}"n0tjdjddd?t)dd@  tdAdB }t+jj|dE}!|!j,}t+j j|dC dE}"|"D ]}#t|#}$|$dF }%q|%|d< t|d d%krdD|d< nt*|d d%krdD|d< n|jdkrA|d dkrtjdjdddd tdd }t|| }t|dG t| |d< |d |d>< ntjdjddd?t)dd@  tdd }t|| }t|d t| |d< |d |d>< nP|d dkrjtjdjdddd tdd }|dG |d< |d |d>< n'tjdjddd?t)dd@  tdd }|d |d< |d |d>< t|d d%krdD|d< |dH dIkrdJ|dH< dK|dL< n|dH dMkrdN|dH< dO|dL< n|dH dPkrdQ|dH< dR|dL< tjj|dS d}&t|&j-d6 t|&j. |dT< t/jdUj|d ddV}'d)}d)}(|'D ]}t|}|dW|dV  7 }|(dW|dV  7 }(q|d)kr#|dd  })|dd  }*nd)})d)}*t0jdXj|d ddY}+t|+dZ d)},d)}-|+D ]}t|}|,dW|dY  7 },|-dW|dY  7 }-qA|,d)krk|,dd  }.|,dd  }/nd)}.d)}/t1|.d[kr|.d d[ }.|.d\7 }.t1|)d]kr|)d] dkr|)d d[ })n|)d d] })|)"d})|)d% d\ })|d^ d_ t|* d` da t|. d` |d^< |db dcks|db ddkrtjj|de d}0t|d^ df tt|0j-d6 t|0j.  dg |d^< n#tjj|dS d}1t|d^ df tt|1j-d6 t|1j.  dg |d^< t2jj|d ddh3 $ }2t4jj|d di }3d%}4d}5|3D ]}6t|6}7|4|7dj  }4|5d }5q2|4|5 }8|8|dk< |)|dl< |)|dm< |*|dn< |.|do< |/|dp< dq|dr< |2|ds< || q#t5d'||j||dtW S t5dudvdwW S  t6y }9 zt78dx t5dyt|9iW  Y d }9~9S d }9~9ww )zNr!  r?   r   rx   rw   az  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   z, where Plan_plancountry.country_id = 88 and z- where Plan_plancountry.country_id != 88 and categoryLevelr  z Plan_plan.id is not null and activationStatus=1 and planStatus=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_idn Plan_plan.id is not null and activationStatus=1 and planStatus=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--------------------------SGr  r  r  r  r@   ru  r  r  r  r  r  rm  rn  r   ro  rp  rq  r   r  Tr  r^   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rx  ry  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   r  Zhjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj   ...   r  r  r  r  r	  r
  r  r}   r  r  r3  r  r  r7   r  r  r  r  r  r  r  r  )r   r  r  	highPricer  Fr   r   r   r   )9r3   r   r   r   r   r  r   r   r   r   r   r  r*   rV   r   r   r   r   r   rp   r   r#  r!   r@   r  r"  r"   r!  rO   r   r   r%  rN   r   r   r(   r  r  r'  r(  r)  r%   r  r   r  r  r  rM   rL   r   r   r&  r7   rY   r   r9   r   ):r   r   r   r!  r+  r  requestJsonr  r-  r.  r3  r4  r  
categoriesr  r  rB  rC  r  r  rD  rE  r   r   r  r  r  r  rK  r  r`  ra  rb  r  r  r  r  r  r  r  r  r  r  r  rN  r  r  rk  r  r  r  rR  rS  rT  rU  rV  r  r  rh   rh   ri   filter_ability  s  






















 


r  c           ;   	   C   s  g }i }g }g d}ddg}ddg}t  }|D ]9}tjj|d }|D ]}	t|	}
|t|
d  q&|D ]}|D ]}dt| d	 }|d
krQ|d7 }n|g krZ|d7 }n|dd	| d 7 }|
| t|}tjjddd tdd }|dkrtjdjdddd tdd }t|}ntjdjdddd tdd }t|}g }g }|D ]}t|}tjj|d d }| r|D ]#}	t|	}
|
d d}|d d}|d d }|
d! ||d" < qtjj|d dd# }tjj|d djd$d%jd&d' }||d(< ||d)< t|d }t|d }||d*< ||d+< d"|d,< d"|d-< d&|d.< 	 |d/ d0 t|d  }t|d1}t|d2} | d |d3< |d4 d5 |d6  |d7< |d4 d5 |d6  |d4< |dkr|dkrtjdjdddd td8d9 }t| tjj |d:}!|!j!}tj j|d; d:}"n0tjdjddd<t"dd=  td>d? }tjj |d:}!|!j!}tj j|d@ d:}"|"D ]}#t|#}$|$dA }%q|%|d< t#|d d"krdB|d< nit$|d d"krdB|d< n[|dkr7tjdjdddd tdd }|dC |d< |d |dD< n'tjdjddd<t"dd=  tdd }|d |d< |d |dD< t#|d d"krkdB|d< |dE dFkr{dG|dE< dH|dI< n|dE dJkrdK|dE< dL|dI< n|dE dMkrdN|dE< dO|dI< t%jj |dP dQ}&t|&j&d5 t|&j' |dR< t(jdSj|d ddT}'d&}(d&})|'D ]}	t|	}
|(dU|
dT  7 }(|)dU|
dT  7 })q|(d&kr|(dd  }*|(dd  }+nd&}*d&}+t)jdVj|d ddW},d&}-d&}.|,D ]}	t|	}
|-dU|
dW  7 }-|.dU|
dW  7 }.q	|-d&kr3|-dd  }/|-dd  }0nd&}/d&}0t*|/dXkrH|/d dX }/|/dY7 }/t*|*dZkrn|*dZ dkr]|*d dX }*n|*d dZ }*|*d}*|*d" dY }*|d[ d\ t|+ d] d^ t|/ d] |d[< |d_ d`ks|d_ dakrt%jj |db dQ}1t|d[ dc tt|1j&d5 t|1j'  dd |d[< n#t%jj |dP dQ}2t|d[ dc tt|2j&d5 t|2j'  dd |d[< t+jj|d dde,  }3t-jj|d df }4d"}5d}6|4D ]}7t|7}8|5|8dg  }5|6d }6q|5|6 }9|9|dh< |*|di< |*|dj< |+|dk< |/|dl< |0|dm< dn|do< |3|dp< t|dq t| dq | }:|||:< ||dr< ||ds< q|| q=q8qt.d$|dtS )uN)r?   r,  r-  r.  r/  r   r   r   r  androidr  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.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_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 ASCr?   r  r  r  r@   ru  r  r  r  r  rw   r  rm  rn  r   ro  rp  rq  r   r  Tr  r^   r  r  r  rJ  rr  r  r  r  r  r  r  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  r  r  r   r  r   r  r  r   r  r  r  r  r  r  r  r  r	  r
  r  r}   r  r  r3  r  r  r7   r  r  r  r  r  r  r  r  _r  r  )r   r  )/r   r  rV   r   r   r   r   r   r   rp   r#  r!   r@   r  r"  r"   rO   r   r   rN   r   r   r(   r  r  r  r  r'  r(  r)  r   r   r   r  r%   r%  r  r*   r  r  rM   rL   r   r   r&  r7   rY   );r   abilitiesArrmairArrr-  r  r  deviceTypeArrr.  catr  r  ctdevTr  rB  rC  r  r  rD  rE  r   r   r  r  r  r  rK  r  r  r  r`  ra  rb  r  r  r  r  r  r  r  r  r  r  r  r  rN  r  r  rk  r  r  r  rR  rS  rT  rU  rV  r  catNamerh   rh   ri   loadCategoryFilter  s>  





 
















  Yr  c              
   C   s
  t  }z|| }|d krt }|d dkr|d dkrd| jv r1| jd dkr1t| jd }nt}d| jv rG| jd dkrGt| jd }nd}|d | }|| }d}|| t|}	g }
t	|	}|	r|	|| }|D ]]}g }t
|}tjj|d d	 }| r|D ]}t
|}|| q||d
< |d dkr|d dkr|d d krd|d  |d< n|d dkr|d d krd|d  |d< |
| qntd|
|dW S tdddW S tdddW S  ty } ztd tdt|iW  Y d }~S d }~ww )Nr|  r?   r  r  r^   r  a  SELECT *,utility_exercise.id AS exID,utility_videos.videoLink AS video_id__videoLink,utility_videos.youtubeUrl AS video_id__youtubeUrl FROM `utility_exercise` LEFT JOIN `utility_advexercises` ON utility_advexercises.exercise_id = utility_exercise.id LEFT JOIN `utility_videos` ON utility_exercise.video_id = utility_videos.id WHERE utility_exercise.accessLevel =1 AND utility_exercise.id IS NOT NULLexIDr  	metValuesvideo_id__youtubeUrlr@   https://www.youtube.com/watch?v=&https://s3.amazonaws.com/stratfitmediaTr  Fr  r   r   r   r   )r3   r   r   r  rv   r  r   r#  r!   r   r   rU   r   r   r   r   r   rY   r   r9   r   r   )r   r   r   r.  r  r  r;  r  r  r  r  r  r   r  metValuesArrr  
metaValuesmetValmetaObjr  rh   rh   ri   exerciseTobeReviewed  sb   




r  c              
   C      t  }|| }zQ|dkrR|d }g }g }tjj|dd }|D ]}t|}||d  q#t	jj|ddd}	|	D ]}
t|
}|| q>t
d|dW S t
d	d
dW S  tyx } ztd t
dt|iW  Y d }~S d }~ww )Nr^   rw   r>  r   r  r   Tr1  Fr   r   r   r   )r3   r   UserExerciser   r   r   r&  r   r   r   rY   r   r9   r   r   r   r   r   r   exArrexValuesuserExDetailsr  r  	exDetailsr  r  r  rh   rh   ri   getuserExDetails  ,   

r  c              
   C   r  )Nr^   rw   r>  r1  r  r  Tr1  Fr   r   r   r   )r3   r   r  r   r   r   r&  r   r   r@   rY   r   r9   r   r   r  rh   rh   ri   getuserPlans:  r  r  c                 C   s   t  }z|| }|d }|d krtjdj|dddddddd	d
ddddddddddddddd}g }g }g }|D ]}t|}	|	d |	d< tjj|	d d }
|
D ]]}t|}||	d< |d |	d< |d |	d< |d |	d< |d  |	d < |d! |	d!< |d" |	d"< |	d d#kr|	d d$kr|	d d krd%|	d  |	d< qU|	d d$kr|	d d krd&|	d  |	d< qU|	d d#kr|	|	 |	d d'kr|	|	 |	d d(kr|	|	 q<t
|||d)W S W d S  ty } ztd* t
d+t|iW  Y d }~S d }~ww ),Nrw   r   r  r   r:  r?  r;  r@  exerciseTypeexIconpreExInstructionspostExInstructionsr  weightExistsdistanceExists
timeExists
repsExistsr  setInstructionsheightExistsspeedExiststimeShortestr>  r<  r  r  r  extracoloumnstmaxReps
tmaxWeighttmaxDistancetmaxTime	tmaxSpeed
tmaxHeightr?   r^   r  r  r   r,  r  r   r   )r3   r   r   r   r   r   r   r   r   r   rY   r   r9   r   r   )r   r   r   r   r  ActiveExArrInActiveExArrRejectedExArrr   r  advExercisesadvadvObjr  rh   rh   ri   getDraftedExsV  s   




4
r  c              
   C   s  t  }z?|| }t| jd}|d }|d krAtjj|d d}|j	d krH|j	dkrHtjj|j	d}|j
dkrDtddd	W S td
 tjjd5i d|jd|jd|jddd|jd|jd|jd|jd|jd|jd|jd|jd|jd|d|jd|jd|jd|jd|jd|jd|j d |j!d!|j"d"|d#|}|#  |j$|_%|j$|_	|#  t&jj'|j$d$( }|D ]}	t)|	}
t&jj|
d% |j$||d&}|#  qt*jj'|j$d$( }|D ]}t)|}t*jj|d' |j$||d(}|#  qt+jj'|j$d)( , }t+jj|j$|d* |d+ d||d,}|#  t-jj|j$d-d.d|d/d0}|#  td1d2d	W S W d S  t.yc } zt/0d3 td4t1|iW  Y d }~S d }~ww )6Nrx   rw   r{   r   r^   r   FzCopied plan not published yet.r   zNew plan copyr  r  r  r   r5  r  r  r  r   r/   r	  r   r  r  r  proposedStater  r  r  r  rz  r4  r  r}   rc  r  r  r  r  r  r
  r   r  )r~   r   r  r[   r}   rc  r  r?   r  r  TzPlan copied.r   r   rh   )2r3   r   r   r   r   r   r@   r   r   copyPlan_idr   rY   r   r   r  r  r  r5  r  r  r  r   r/   r	  r   r  r  r  r  r  r  r  rz  r4  r  r   rw   r  rL   r   r   r   rM   rK   r  r6   r   r9   r   r   )r   r   r   r   r   rD  existingplanplanCopyr  r  r  	goalscopyplanAbilitesobjdictValabilitiescopydraftedPlanDetailsdraftplancopyplanMonetizationr  rh   rh   ri   plancopy  s   


	


	R
r  c                 C   s   t  }zN|| }|d krJg }tjddjdddddddd	d
ddddddddddddddddd}|D ]}t|}|| q6t	d|dW S t	dddW S  t
yp } ztd  t	d!t|iW  Y d }~S d }~ww )"Nrg  r   r?   T)exercise_id__accessLevelexercise_id__exerciseStatusparentExercise_id__isnullr  r  exercise_id__weightExistsexercise_id__distanceExistsexercise_id__timeExistsexercise_id__repsExistsexercise_id__speedExistsexercise_id__heightExists	maxWeightmaxRepsmaxTimemaxDistancemaxSpeed	maxHeightr  r  r  r  r  r  tmaxTestInst exercise_id__video_id__videoLinkr1  Fr   r   r   r   )r3   r   r   r   r   r   r   r   r   rY   r   r9   r   r   )r   r   r   rI  advExDetailsr  r  r  rh   rh   ri   getAllAdvEx  s6   

r-  c                 C   s   | j }|d }i }i }g }i }i }|rwtjj|d }|d d  D ]L}	tjj|	d d }
|
d d  D ]4}|	d |	d |	d |	d |	d	 |	d
 |	d |	d |	d |	d |	d |	d |	d |d d}|| q5d|i}q"||d< t|S d|d< t|S )Nrw   r  r  r   r  r   r  r  r  r   r/   r  r  rz  r4  r  r  )r  r   r  r  r  r   r/   r  r  rz  r4  r  r  r  	plan_infor   z This email id not have any plans)r   r@   r   r   r   r   r   r   )r   r   r  r   r.  Zprogram_infor"  plan1r1  r#  rp  r$  rh   rh   ri   getAllPlans  s&   Z
r0  r   )r'  StratFitr   ZStratFit.settingsr   r   django.shortcutsr   rest_framework.viewsr   rest_framework.responser   django.core.cacher   r	   django.forms.modelsr
   django.utilsr   ZUserProgram.modelsr   r   r   	django.dbr   django.core.exceptionsr   Zutility.modelsr   r   r   r   r   r   r   r   r   r   r   r   rest_framework.decoratorsr   r   r   django.views.decorators.cacher    ZSubscriber.viewsr!   django.db.modelsr"   r#   r$   r%   r&   r'   ZCelebrity.modelsr(   r)   Subscriber.modelsr*   r+   r,   r-   r.   r/   Subscriber.serializersr0   Subscriber.Authenticationr1   r2   r3   r4   r5   Zpartner.modelsr6   Program.modelsr7   django.core.mailr8   r   Zpip._internal.req.req_installr9   ImportErrorZpip.req.req_installZrest_framework.genericsr:   r;   r<   r=   r>   modelsr@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   ZProgram.utilitiesdjango.httprY   rest_frameworkr[   rm   rb   rs   r  r(  rW  r`  rj  rw  rz  r  r  r  r  r  r  rl  r  r  r   r   r$  r   r2  rR  rT  r]  r  r  r9  rG  ri  r]  r  r  r  r  r  r  r  r  r  r,  r/  r   r   rY  r_  rg  rh  rn  rp  r|  r  r  r  r  r  r  r  r  r  r  r  r  r@  r  r  r  r  r  r  r  r  r-  r0  rh   rh   rh   ri   <module>   s  8  h


 
X
^
f


(

/

"
;




   
s
   
9

P
  
<
 


6


 





      
2
    

 
|
 w
(

+






     '
'

,





C
$

.

]





"

?

!


 
W







9







$


"  X
6
  ! 
l

5





>

^


