U
    ``                    @   sJ  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" eRk
r   d dlSmQZQ Y nX 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                    s(   t jt j  d fddt| D S )N c                 3   s   | ]}t  V  qd S Nrandomchoice.0iZlettersanddigit '/var/www/html/services/Program/views.py	<genexpr>:   s     z num_and_alpha.<locals>.<genexpr>stringascii_lettersdigitsjoinrangeZ	strlengthrf   re   rg   num_and_alpha8   s    rp   GETPOSTc           :   -   C   s  t  }zj|| }|d }|d kr`zt| jd}tjddj	||d d
ddd	d}| r|D ]F}t|}t| |d	 d
kr|d d
krd
|d< nd|d< |d }qpnddi}t|W W S i }	t|d }
|
d }|d }|
d }t| dWdd}d|	d< d}g }t|D ].\}}|dd dkr"|}|t| q"d}|}d
}|rg }t|D ](\}}g }t||}||_||j }qp|d d  }|rd}|d d  }nd}q^|d d  D ]}d}|jD ]2}|}|t|j }d}|jD ]}|}|}qqtjj||jd d
|t|j|jd |jd ddd	}|  |jD ]H}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 ]p}#|#jD ]
}$|$}%q6t jj||j| j|"j|#jd d
t|#jdddd|#jd |#jd d }&|&  |#jD ]}$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||j| j|"j|&j|'jd
|(jd |(jd# d$ ddddd|(jd |(jd d%})|)  t|(jd# d$ d& |(jd# d$ d'krp|(jD ]}*t#jj||j| j|"j|&j|'j|)jd(d)|(jd# d$ d
t|(jdddd| |*jd d*}+|+  d+sd,|*jd# krftd-|*jd#  d,|*jd# kr8td. d/|*jd# krB|*jd# },nd},d0|*jd# krb|*jd# }-nd}-t|-d1 t$jj||j| j|"j|&j|'j|)j|+j|*jd# d, |*jd# d2 |*jd# d3 dd4|*jd# d5 d|*jd# d6 d
ddd|*jd# d7 |*jd# d8 |*jd# d9 |,|-|*jd# d: ddd;ddd|*jd |+j%d<"}.td= d+|*jd# krft|*jd# d+ d> d/|*jd# krx|*jd# },nd},d0|*jd# kr|*jd# }-nd}-t|-d1 t$jj||j| j|"j|&j|'j|)j|+j|*jd# d+ |*jd# d2 |*jd# d3 dd4|*jd# d5 d|*jd# d6 d
ddd|*jd# d7 |*jd# d8 |*jd# d9 |,|-|*jd# d: ddd;ddd|*jd |+j%d<"}.d?|*jd# kr|*jd# d? d@kr|(jD ]X}/d+sd,|/jd# krd+|/jd# kr|/jd# d+ }0d,|/jd# kr|/jd# d, }0qt$jj||j| j|"j|&j|'j|)j|+j|0ddd4|*jd# d5 d|*jd# d6 d
ddddddddddd@dd;ddd|*jd |+j%dA"}1tdB q|(jd# d$ dCkr|(jD ]}2tdD t|2 t#jj||j| j|"j|&j|'j|)j|2jd d)|2jd# d$ d
t|(jdddd|2jd |2jd d*}+tdE |+  |2jD ]v}*t|* d+|*jd# k	rtdF t$jj||j| j|"j|&j|'j|)j|+j|*jd# d+ |*jd# d3 dd4|*jd# d5 d|*jd# d6 d
ddddddddddddd;ddd|*jd |+j%dG"}.ntdH |2jD ]*}3d+|3jd# k	r|3jd# d+ }4 
q	qtdI|4 t$jj||j| j|"j|&j|'j|)j|+j|4d
dd4|*jd# d5 d|*jd# d6 d
ddddddddddddd;ddd|*jd |+j%d@dJ#}.	qqqqq*qАqZqtdK t&jj|dLdM}5|5  t&jj|dNdM}6|6  tjj|dO}7d|7_'|7  tjj|dO}8d
|8_(|8  dP|	dQ< t)|	W W S  t*k
r\ }9 zdR}9|9|	dQ< W 5 d }9~9X Y nX ntddSdTW S W nB t*k
r }9 z"t+,dU tdVt-|9i W Y S d }9~9X Y nX d S )XNidutf-8User__idPlan__idplan_idcreatedBy_id	planId_idplanJsonr[   planId_id__planStatusr?   r   successFPlanInfoZplanstructurer\   c                    s(   t jt j  d fddt| D S )Nr]   c                 3   s   | ]}t  V  qd S r^   r_   rb   re   rf   rg   rh   _   s     z7ExercisesView.<locals>.num_and_alpha.<locals>.<genexpr>ri   ro   rf   re   rg   rp   ]   s    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   rs   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 ActivitydetailsZ
folderName)r   r   r   r   r   session_id_idr[   Activity_nameActivity_typer   r   warm_upr   r   r   r   ZsghdddddddddddaZSimpleroundzRound exercises)r   r   r   r   r   r   activity_id_id
round_namedescription
round_typer[   num_of_actionsr   r   r   r   r   r   exerciseNameexerciseZdchccccccccccccscgsdcsdjZdhsjdgjshdgksgsjdgjsvcjhvsvcjsvspeedPotencyZspeedStrengthPotencyZEdjggggggggggggggggggggggggggggggggggggggggggggggggggggggfddddddddddddZselectedRPEnum_of_setsc   num_of_reps	intensityZhypertrophyPotencyZlactateGenerationPotencyZstrengthSpeedPotencyZmaxStrengthPotencyr]   )"r   r   r   r   r   r   r   round_id_idexercise_id_idselected_RPEr   min_repsmax_repsprescribed_repsall_outr   intensity_rangecalculated_abilityintensity_levelextra_abilityhypertrophy_potencylactate_generate_potencystrength_speed_potencyspeed_potencyspeed_strength_potencymaxstrength_potencystrength_potency_zonestrength_endurance_potencyinstructionr   r   r   r   r   ZhfkhfffffffffffffffffffffffffffffkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllZ*kjsdgsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagggtypewarmup)"r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   action_typer   r   r   r   r   r   r   ZhjkjffffffffgfhskfjsfsjComplexzComplex Roundzhi RoundzExercise Exists)"r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   zExercise not Exists
exerciseId)#r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ZgdssssssssssssssshfX   rw   
country_id   pkzData stored successfullymessageplease enter valid idUser logged outr}   r   something wrongmsg)r\   ).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   rs   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   rp   rootnoder   rd   dZstillmorenodespresentZ
curr_nodesZcurrent_levelZ
next_levelnZcurrent_level_childscsZnumofmesocyclesZ	Meso_dataZnumberofmicrocyclesn1Z
Micro_dataZPeriodperiodr   ZghZMicron2Zn3sessionZDaysSessionsZn4ZActivityZ
actionnodeZRoundsr   ZSpeedstrengthActionsactionexIdActionZn5Z	checknoder   planCountry1planCountry2planInfupdateDrafterf   rf   rg   ExercisesView<   sX   

   




68>
DHRT

$
z^



r  c           -   #   C   s  | j }|d }z<|rBt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 ]}t|}t	jj|d dddddddd}t
| |d d  D ]X}|}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 ]N}|}tjj|d 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 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d0d1d2d3d4d5d6d7}#|#d d  D ]}$|$}%||% qd|"|d8}&||& g }q||d9}'|
|' g }q||
d:}(|	|( g }
q|||	d;})||) g }	q:||d<}*||* g }q||d=}+||+ g }q||d>}|| g }q|||d?< nd@|d?< W n8 tk
r }, zdA},dB|dC< |,|d?< W 5 d },~,X Y nX t|S )DNrs   r   r   r   r[   num_of_periodsr   Zactivation_statusZ	cover_imgZ	thumb_imgrw   rw   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   rw   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
  rf   rf   rg   PlanView  s    $
$$(,.2J














r"  c                 C   s  | j }i }t }i }|d }i }|}t|}g }	z|| }
|
d }|
d krz6|d }|r|rtd|d g }	|}|| }n|r|d }g }g }	t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&tjj|d	 }|d d  D ]}d	|d< |
| q^t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tjj|d	 }|d d  D ]}d|d< |
| q>||d< ||d< |||d < |d }t|| tjj|d|d	ddd}| r`td |D ]}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)}| rNtd* |D ]}t|}|	
| q2ntd+ g }	qntd, d }td- td.|d |	d/W W S  tk
r } zd0}||d1< W 5 d }~X Y nX ntd2d3d4W S W nB tk
r } z"td5 td6t|i W Y S d }~X Y nX d S )7Nrs   session token: exists in cacher  r   
depthlevelr?               r      planuser_idr[   rw   rw   r[   zUserplan existsPlan_Actions__iduserplan_idheight	totalRepssessionStatusadvTimecreatedDateactionStatusplanaction_idr0  actionIntensityactionWorkWeightspeed
actionSkip
actionTmaxr-  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  r+  
perioddatard   mesodata	microdatadaydatasessiondataactivitydata	rounddata
actiondatauserplanDetailsr   ZuserProgramIdZuserProgramActionsZuadataZudtplanidsr
  rf   rf   rg   Plan_Detailsv  s    



F


rQ  c           
   
   C   s   | j }i }zv|d }tjj|d }g }i }|d d  D ]}||d  q:dd }||D ]}tjj|d }||d< q^W n. tk
r }	 zd}	|	|d< W 5 d }	~	X Y nX t|S )	Nrs   r  r   c                 S   s$   g }| D ]}||kr| | q|S r^   r   )exercises_idr  numrf   rf   rg   duplicate_remove  s
    z&ExerciseList.<locals>.duplicate_remover   r   zplese enter valid id)	r   rJ   r   r   r   r   r   r   r   )
r   r   r   r  actionsrS  rd   rU  	exercisesr
  rf   rf   rg   ExerciseList  s"    rX  c              
   C   s  t  }zD|| }t| jd}|d }|d kr:t| jd}d|d d kr(tjj|d d d |d	dd}t
| | r|D ]}t|}qtjj|d d}	t|d |	_||	_||	_|	  |	j}
nHt
|d d  tjjt|d |d d d ||d}|  |j}
td	d
|
dW S tdddW S W nB tk
r } z"td tdt|i W Y S d }~X Y nX d S )Nrt   rs   r+  r~   rz   ry   rz   r   r{   rz   ry   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{   ry   r[  r   rs   r   rY   r   r9   r   r   )r   r   r   rD  r   r{   
updateJsonr   r   updater   
createJsonr
  rf   rf   rg   savePlanJson  sL    

 

rb  c              
   C   s  t  }t| jd}zl|| }|d krttjj|d d	 }t
|d d d | rb|d d dkrFt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|_|  nt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	}| rRtjj|d d	}d|_|  td
ddW S tdddW S ntdddW S W nB tk
r } z"td tdt|i W Y S d }~X Y nX d S )Nrt   rs   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   programr+  roundsactivityr   daymicromesor   ProgramZDraftZ	Draftmoder
  rf   rf   rg   publishToDraft(  sT    





ro  c              
   C   s  t  }t| jd}z4|| }|d kr<|d d kr*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jj|d d	 }tdddW S td	d
dW S ntd	ddW S W nB tk
r } z"td tdt|i W Y S d }~X Y nX d S )Nrt   rs   rc  r   rd  Tz!Your Program Deleted Successfullyr   Fre  rf  r   r   )r3   r   r   r   r   r   rJ   r   r   rg  rI   rH   rG   rF   rE   rD   rC   r@   rK   rY   r   r9   r   r   )r   r   r   r   actri  rj  r   rk  rl  rm  r   r+  draftr
  rf   rf   rg   
deletePlanZ  s,    


rr  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 ]}t	|}t|d	 |d
 dkr||d
  |	|d  ||	}|d
 dkr||d
  |
|d  ||
}|d
 dkr||d
  ||d  ||}qt
||d< t
||d< t
||d< t
||d< t
||d< t
||d< td|d |d |d |d |d |d dS )Nr'  userTypers   r?   )r   ZcreatedBy_id__inZfffffffffffffffffffffffffc                 S   s$   g }| D ]}||kr| | q|S r^   rR  originalplanneroriginalrT  rf   rf   rg   rU    s
    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array3rz  r{  r|  ZlistofcoachslevelrU  Zlistofcoachs1Zlistofcoachs2plansrf   rf   rg   programStats  sT    


r  c                 C   sV   t | jd}t|d }|d krDt|d  tdddS tdddS d S )Nrt   keyTzCache was deleted Successfullyr   Fzplease enter valid key)r   r   r   r   r	   r   rg  rY   )r   rD  rF  rf   rf   rg   deleteCache  s    r  c           
   
   C   s  t  }z|| }t| jd}|d }|d krt| jd}tjddj	||d d
ddd	}| r|D ]6}t|}|d	 d
kr|d d
krd
|d< qxd|d< qxnddi}t|W S tdddW S W nB tk
r }	 z"td tdt|	i W Y S d }	~	X Y nX d S )Nrt   rs   ru   rv   rw   rx   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   rD  r   r   r   r   r   r
  rf   rf   rg   getDraftJson  s8    
  


r  c                 C   sF   i }t jjdd }g }|D ]}|| qd|d< ||d< t|S )Nr   ry   Tr}   programs)r@   r   r   r   r   r   )r   r   r  Zprogramplanrd   rf   rf   rg   getprogramPlans  s    r  c                 C   sl   g }t jdj| ddddddd}| rh|D ].}t|}|d d	 |d  |d
< || q4|S d S )Nru   r?   rw   r[   rs   r-  user_id__first_nameuser_id__last_nameuser_id__avatar 	celebName)r(   r   r   r   r   r   r   r   )r   likeArrceleblikesValvalvalObjrf   rf   rg   
celeblikes  s    r  c                 C   s|   g }t jdj| dddddddjd	d
jdd}| rx|D ].}t|}|d d |d  |d< || qD|S d S )Nru   r  rs   r-  r  r  reviewsr  Treviews__isnullr]   reviews__exactr  r  )	r(   r   r   r   r   excluder   r   r   )r   	reviewArrr  r  r  rf   rf   rg   celebreviewList  s$    r  c           `   
   C   s  t d t }i }d}t|}|rt d|d |}zT|| }t | |d krvtd|d |d |d |d	 d
W S tdddW S W n@ tk
r } z"td tdt	|i W Y S d }~X Y nX n
t d|d || }|d krd}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|
kr|
d dkr|
d dksd|
kr|
d dkr|
d dkr|
d dkr|
d dkrd}|d|
d  d |
d  d |
d  d  7 }n|
d dkrF|
d dkrFd}t d! |d|
d  d |
d  d  7 }n<|
d dkr|
d dkrd}t d" |d#|
d  d$ 7 }nHd|
kr|
d dkrd}|d|
d  d% |
d  d |
d  d  7 }d&|
krP|
d& dkrPd}|
d& d'}|dkr
|d(7 }n|d)7 }d}|D ]}|d*| d+ 7 }q|dkrP||d d, d- 7 }d.|
k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|
kr|
d1 dkrt d2 d}|dks(|dks(|dkr2|d(7 }n|d)7 }|
d1 d'}d}|D ]}|d3| d+ 7 }qP|dkr||d d, d- 7 }d4|
kr~|
d4 dkr~|
d4 d'}d}|dks|dks|dks|dkr|d57 }n|d67 }d7|
k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 }n |d>t	| d= t	| d- 7 }nP|d9 d:kr^|dC|d<  d= |d  d- 7 }n |dD|d<  d= |d  d- 7 }|dks|dks|dks|dks|dkr|d57 }n|d67 }d}"tjdEjd:|dF  }#|#! rd}"|"dkr|dG7 }n|dH7 }d7|
krL|
d7 d8krLdI|
krB|
dI dJkrB|dK7 }|dL7 }n0dI|
krl|
dI dJkrl|dK7 }t dM |dN7 }|"| t#|}$t dO t$jjdddP td4dQ }%g }&g }'g }(d})g }*g }+g },g }-|$rh|$D ]8}.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 < qt)jd]j|*d^ d_dX}6t*jd`j|*d^ dadbdX}7i }8i }9g }:g };|*D ]v}<|6D ].}5|<|5dX k	r|;%|5d_  |;|9|5dX < 	qg };|7D ].}5|<|5dX k	r>|:%|5da  |:|8|5dX < 	q>g }:qt+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 ]J}<|GD ]:}5|<|5dX k
r|H%|5d[  t1|H}J|J|I|5dX < g }J
qg }H
q~|$D ]$}.t|.}/d<}Ki }Lt2j  j|/d dm}M|M! r8|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 ]8}J|/d |Ikr|/d |Jkr|I|J |/dz< nd<|/dz< qt6jj|/d d{ d|}T|T! r@|TD ]}.t|.}U|.d| |/d}< q"ndw|/d}< |/d~ dkrhd|/d~< d|/d< n>|/d~ dkrd|/d~< d|/d< n|/d~ dkrd|/d~< d|/d< d|/d< |1D ]L}5t|5}<|<d |/dR krt	|<d dw t	|<d  |/d< |/d |/d< qd}V|/d dks |/d dkr|2D ]d}5t|5}<t |<d  |<d |/dS kr$t	|/d d t	t	|<d dw t	|<d   d |/d< q$nd|/d  d }V|/d1 d'}Wt7jj|WdV d/ }Xg }Y|XD ]0}t|}Z|Y%|Zd  |)d't	|Zd  7 })qd<|/d< d<|/d< d|/d< d<|/d< d|/d4< g }[|ED ]N}.t |. |/d |Ekrp|/d |.krx|[%|E|.  |[d< |/d< nd<|/d< q,|3D ].}5|/d |5krt |5|3|5  |3|5 |/d< q|9D ]H}5|/d |5krt |5|9|5  d8|9|5 };|;|/d< |;|/d< |;|/d< q|8D ]H}5|/d |5krt |5|8|5  d8|8|5 };|;|/d`< |;|/d< |;|/d< q|/d d krr|/d`  d'|/d  7  < d<}>d}?|=D ]P}@t|@}A|AdX |/d kr~t,|Add t-krd<}Bn|Add }B|>|B }>|?d }?q~|>|? }C|C|/d< |Y|/d< |%|/ 
q|)dkrb|)dd  })|)d'}\t7jj|\dV dd/ }]g }^|]D ]&}t|}Z|^%|Zd |Zd d q8n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 d S )NhiZFilterSQLv2r#  r$  Tr+  luctypedollarHighestparentGoalsr}   filterValuesr  r  r  FzUser has logged outr   r   r   zdoes NOT exists in cacheINRr?   r   rt   rs   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 '%rx  , 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 ru   countryr-  ) 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originalPlannerry   c                 S   s$   g }| D ]}||kr| | q|S r^   rR  ru  rf   rf   rg   rU    s
    z$filterSql2.<locals>.duplicate_removeid__inplan_id__inr[   rw   r-  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__equipmentrc  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FreerW  planlikesCount, abilityability1planPurpose
plan_goalsplan_goals1othersZ
Planrating
parentGoalGoalNamers   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   rm   rC  )`r   r   	filterSqlrE  rF  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arrayrv  partnerarrr   r   rU  ZplannerZPartner	planlikesplalikescountrd   planAbilityValsplanPurposesValspurposesr  purposeaj	ratingObj	totalRate	userCountrtrateObjRatingr  rW  ZexerviewexerdownloadUserspdictarr
dictionaryrT  sumweeksrm  hgmicrossecret_code_plainsecret_code_encode
encodedVallikearr
planVideosr  ZcoachdetailsgoalsArrplanParentGoalsr  r  Exercise	PrntGlArrParentGoalsparGoals
planGoals1rf   rf   rg   
filterSql2  sP   

&
*

&








(
 2





",
"

  


 


$rd  c           [   
   C   s  t  }z0|| }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|kr|d d	kr|d d
ksd|kr|d d	kr|d d
kr|d dkr4|d dkr4d}	td |d|d  d |d  d |d  d 7 }n|d dkr~|d d
kr~d}	td |d|d  d |d  d 7 }n<|d d
kr|d dkrd}	td |d|d  d 7 }nPd|kr|d d	krd}	td |d|d  d |d  d |d  d 7 }d|kr|d d	krd}
|d d}|	dkrJ|d7 }n|d7 }d	}|D ]}|d| d 7 }qZ|d	kr||d d d 7 }d |kr&|d  d	kr&td! d}|
dks|	dkr|d7 }n|d7 }|d  d}d	}|D ]}|d"| d 7 }q|d	kr&||d d d 7 }t|d# d$|kr|d$ d	krtd% d}|dksr|
dksr|	dkr||d7 }n|d7 }|d$ d}d	}|D ]}|d&| d 7 }q|d	kr||d d d 7 }d'|kr|d' d	kr|d' d}d}|dks"|dks"|
dks"|	dkr,|d(7 }n|d)7 }d*|krd|d* d+krd|jd,kr|d- d.kr|d/|d0  d1 |d  d 7 }n |d2|d0  d1 |d  d 7 }ntjj|d0 |d gd3 td4d5 }tjj|d0 |d gd3 td4d6 }t| t| |d- d.krB|d/t| d1 t| d 7 }n |d2t| d1 t| d 7 }nP|d- d.kr|d7|d0  d1 |d  d 7 }n |d8|d0  d1 |d  d 7 }|dks|dks|
dks|	dks|dkr|d(7 }n|d)7 }d}tjd9jd.|d: }| r$d}|dkr8|d;7 }n|d<7 }d*|kr|d* d+krd=|krx|d= d>krx|d?7 }|d@7 }n(d=|kr|d= d>kr|d?7 }|dA7 }t|d# || t|}tjjdddB td'dC }g } g }!d	}"|D 	]}#t|#}$tjj|$d dD }%|% rt|%D ]H}t|}&|&dE dF}'|'dG dH}(|(d dI})|&dJ |$|)d0 < q*t 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 }.|. r2d|$dR< t jj|$d |d dV }/|/ r|/D ]>}0t|0}1|1dT d	kr\|1dT d kr\|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*|k
r|d* d+k
r|jd,k	r|d- d.k	rt(jd`jddd.da tdbdc }5|$dd |$d'< |$d' |$de< nNt(jd`jdddft)d.dg  tdhdi }5|$dj |$d'< |$d' |$de< t*|$d' d0k
rdk|$d'< q|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}8n`t(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 };
q|;|$d'< t,|$d' d0krdk|$d'< nt*|$d' d0krdk|$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< nft(jd`jdddft)d.dg  tdqdr }6t-|6| }5t-|$d' t,| |$d'< |$d' |$de< n|d- d.krLt(jd`jddd.da tdndo }5|$dp |$d'< |$d' |$de< nNt(jd`jdddft)d.dg  tdqdr }5|$d' |$d'< |$d' |$de< t,|$d' d0krdk|$d'< |$ds dtkrdu|$ds< dv|$dw< n>|$ds dxkrdy|$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 }?qj|>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rD|Cdd  }E|Cdd  }Fnd	}Ed	}F|$d$ d}Gt2jj|Gdd3 }Hg }I|HD ]0}t|}&|I4|&d  |"dt|&d  7 }"qz|$d d t|A d d t|E d |$d< |$d dks|$d dkr<tjj|$d d}Jt|$d d tt|Jj.d] t|Jj/  d |$d< nFt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|$ qg }W|"d	kr
|"dd  }"|"d}Xt2jj|Xddd3 }Y|YD ]&}t|}&|W4|&d |&d d qnd	}Ft8d||j||WdW S t8dddW S W nB t9k
rz }Z z"t:;d t8dt|Zi W Y S d }Z~ZX Y nX d S )Nr  r?   r   rt   Frs   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  rx  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  ru   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	  rB  planreviewsr  r  r  rw   r-  r[   rw   r-  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rn  ro  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  ry   r  r  r-  r+  r  r_  r  r  r  r  r  r  r  r7   r  r  r  r  r  r  	planUsersrW  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%   intrz  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'  r(  r)  r*  r+  r,  r-  r.  r/  r  r0  r1  r2  r3  r4  r5  r6  r7  r8  r9  r:  r;  r<  r=  r>  r   r   planurlsr  urlValurlVal1urlVal2rC  reviewscountclelebLikescelebReviewscelebplanlikescelebplanreviewscelbdtcelbObjrX  rY  rZ  highestPricehighestPriceVal
highestValusdValuerz  usdObj	dollarVal
coachName1planAbilityValr  
abilities1planAbilitiesplanAbilities1planPurposesValrF  	purposes1	planGoalsrc  r]  r^  r  partnerNamer  downloadUsersrJ  rK  rL  rM  rN  r  exercisesObjplanExsexexObjrb  r`  ra  r
  rf   rf   rg   
filterSql1  s   


 









(
 2



























 .


r  c                 C   s  t  }z^|| }t| jd}|d }|d krdd|krz|d dkrztjdddddd	d
dddddj	d|d}n,tjdddddd	d
dddddj	d|d}g }|D ]}t
|}tjj	|d d }	|	 r&|	D ]F}
t
|
}|d d}|d d}|d d}|d ||d < qtjj	|d |dj	ddd}| r|| qd|k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 ]}t
|}tjj	|d |dd}t|j | rDtjj	|d |dj	ddd}t|j | rN|| n
|| qd|kr|d dkrtjddddj	d|dd}ntjddddj	d|dd}g }|D ]}t
|}d|d< d|d< tjj	|d |dj	ddd}| rtjj	|d d  }|r<|d  dkr.d|d< |d! |d< nd|d< || qt|||d"W S W nB tk
r } z"td# td$t|i W Y S d }~X Y nX d S )%Nrt   rs   advancedPlanr?   r  r   programType_idr  r   	planPhotoplanLogor  r}  rr  rx  )r   ry   r  re  rf  r   rg  rh  ri  r   )r   ry   rZ   rY  )r   ry   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   rD  r   plandatar%  r   planObjr  r  r  r  r  r  draftedPlandetails
plandetailinactiveplanArrdraftedPlandetails1drafted1plandetail1r  draftedPlandetails2r  r
  rf   rf   rg   getplaninfo  s    

            









r  c           3      C   s6  t  }z|| }|d }|d krt| jd}d|d krd|d d dkrdtd |d d }tjj	|d}|d d |_
|d d |_|d d	 }d
|kr|d
\}}	}
n|}t|d ||_d|_|d d |_|d d |_d|d kr |d d dkr |d d |_d|d k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 }| rtjj|d }|D ]"}tjj||||d}|  qd|d kr|d d dkrd|_ |d d |_!|d d |_||_"||_#d|d krB|d d dkrB|d d |_$d|d krp|d d dkrp|d d |_%d|d kr|d d dkr|d d |_&|  d|d kr|d d d krt'jj|dd!d}| rtd" n$d}t'jj|d#|d|d$d%}|  d&|d kr|d d& d krd'|d kr|d d' dkrt'jj|d(d!d}| rd(}|d d' }|D ]}t(|}|d }qt'jj	|d}||_)d)|_*||_+||_,||_-|  td* nd(}|d d' }d+|d kr|d d+ d,krd-} nJd+|d kr:|d d+ d.kr:d/} n$d+|d kr^|d d+ d0kr^d1} t'jj|d)|||d2}d+|d kr|d d+ dkr|d d+ |_.| |_/nd |_.d |_/|  nHt'jj|d(d!d}!|!D ],}t(|}|d }"t'jj	|"d}#|#  qd3|d kr|d d3 d krd4|d kr|d d4 dkrt'jj|d5d!d}$|$ rd5}|d d4 }|$D ]}t(|}|d }q|t'jj	|d}||_)d|_*||_+||_,||_-|  td6 n0d5}|d d4 }t'jj|d|||d$d%}|  nHt'jj|d5d!d}%|%D ],}&t(|&}'|'d }(t'jj	|(d})|)  qt0d 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 kr|d d dkr|d d |+_d|d krJ|d d dkrJ|d d |+_$d|d krx|d d dkrx|d d |+_%d|d kr|d d dkr|d d |+_&td> |+  t1jjd|+j||d?},|,  d|d k	r|d d dk	rtjj|+j|d d ||d@}|  d|d k	rv|d d dk	rv|d d d}-|-D ]$}tjj||+j||d}|  	qPd|d k	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 k
rH|d d d k
rHd}t'jj|d#|d|d$d%}|  d&|d krh|d d& d krhd'|d krh|d d' dkrhd(}|d d' }d+|d k
r|d d+ d,k
rd-} nJd+|d k
r|d d+ d.k
rd/} n$d+|d kr|d d+ d0krd1} t'jj|d)|||d2}d+|d krT|d d+ dkrT|d d+ |_.| |_/nd |_.d |_/|  d3|d kr|d d3 d krd4|d kr|d d4 dkrd5}|d d4 }t'jj|d|||d$d%}|  t0d dB||0d8W S W nB t3k
r0 }2 z"t45dC t0dDt6|2i W Y S d }2~2X Y nX d S )ENrs   rt   r+  r]   z ------------Update Plan---------r   rh  r  r   z<br><h6>CopyrightplanDescriptionsr?   r  r  r  r  r  r   )r  )rw   ry   r[  r  r  
ability_idrw   ry   r[  r/   r  rw   ry   r[  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_idry   r[  z++++ img path save +++++rZ  )rw   r  ry   r[  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   latestrs   r`  r   r   r  rM   rg  r/   rL   r  r   ry   r[  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deleteGoalsr2  	saveGoalsdirecsellExistslicenseplaninfocoBrandExistsr  coBcoBObjcoBIdtempcontentcoBrandValuesdeleteCobIddeleteCobrandwhitelabelExistswhitelabValueswBwBObj
deletewbIddeletewbrandr   r+  ra  rF  r  saveAbility
playTypeIdoriplanr
  rf   rf   rg   
createPlan  sT   

 
  
"

     

$

    
"










       
 $    "
r  c           :   
   C   s  t  }|| }|d krfd}tjdjd|d d }| r|D ]}t|}|d |d< qFd}nPd}t	 }| j
d	d }|r||d
 }	nd}	tjj|	d}
|
j}|dkrd}t| jd}t|d d}|dd}tj j|d d}d}d}i }| r|D ]}d}i }t|}tj j|d d}| r|D ]"}t|}||d  }||d< qR|d |d< tjj|d d }| r|D ]}t|}q|d |d< tjj|d d }| r0|D ]H}t|}|d d}|d d}|d d} |d  || d < q|dkrF|d! |d"< |d" dkr\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)  7 }%q|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rHtjj|d, d}*t!|d3 d: t!t!|*jd- t!|*j  d; |d3< n|d1 |d, krt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r2dX|dS< dY|dQ< |d |dZ< |d, |dE< |3|d[< t)jj|d d\ }6|6 r|6D ]}7t|7}8||8d] d^}9qvn
|d&d^}9qt*|9d|d_S t*d`diS d S )aNFru   r   rs   r  r  r  TREMOTE_ADDRcountry_nameIndiar   rt   rw   r  r  r?   r   r   rc  r   r  r   r  r  r  re  rf  r   rg  rh  ri  r}  r  r
  r   r  r]   r  r   r  r  r  ry   r  r  coachAvatar
coachCoverr  r  r   r  r  r  r  r  r  r  r  r-  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  planDurationrW  rz   r{   )r~   PlanJson)r+  r}   r8  r}   )+r3   r   r.   r   r   r   r   r   r   ZGeoIPMETAr   r  r   rs   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   r8  r9  conconObjgipr  countryName	countryIdr   
codeDecodecodeDecodeSplitr   totalusercountr  rA  r   rT  rU  dataPlanObjrm  rV  rW  r  r  r  r  r  r  r  r  abilitieslistsr  r  rF  r  coachValuesr  r  r  r  rJ  rK  rL  rM  rN  r  r  r  r  r  draftedDetailsdfdfObjdataPlanDictrf   rf   rg   viewPlan_by_idQ  sV   











 .


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--------rw   z--------------jdjs-----------r   r}   T)
r   FILESr   r   r@   r   r   r  r   rY   )r   r   planpicrf   rf   rg   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 ]}t
|}|d dks|d dkrtjj|d d}t|d	 d tt|jd t|j  d |d	< nFtjj|d d}	t|d	 d tt|	jd t|	j  d |d	< |d dkrPd}
q|d }
qnd }
g }g }|D ]}t
|}|| qltd|||
dW S td d!d"W S W nB tk
r } z"td# td$t|i W Y S d }~X Y nX d S )%Nrs   	Goals__idProgramType__idru   r?   r   r  planGoal__goalNamer   programType__programTypeNamer  createdBy_id__avatarry   r   r  r  r  r  r-  r[   rw   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   rO  r   r   r  r  rP  dataArrdataArr1r   r
  rf   rf   rg   r     sr    

          


r   c           
   
   C   sp  t  }z || }t| jd}|d kr&tjddj	|d d
ddddd	d
dd}|D ]}t|}|d
 dks|d
 dkrtjj|d d}t|d d tt|jd t|j  d |d< qbtjj|d d}t|d d tt|jd t|j  d |d< qbtd|dW S W nB tk
rj }	 z"td tdt|	i W Y S d }	~	X Y nX d S )Nrt   r  r  rs   r   r  r   r   r!  r  r  ry   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
  rf   rf   rg   individualPlanDetails7	  s\    

      


r*  c           2      C   s  t  }zl|| }|d krb|d }tjdddjddddddd	d
ddddddddddddddd}g }g }|D ]}t|}|d d t|d  }	t	
|	d}
t|
d}|d |d< |d dks|d dkr*tjj|d d }t|d d! tt|jd" t|j  d# |d< nFtjj|d d }t|d d! tt|jd" t|j  d# |d< tjd$j|d d%d&}d'}|D ]}t|}|d(|d&  7 }q|d'kr|dd  }nd'}tjd)j|d d%d*}d'}|D ]"}t|}|d(|d*  d" 7 }q|d'kr4|dd  }nd'}tjj|d d%d+  }tjj|d d, }d-}d}|D ]"}t|}||d.  }|d }qz|| }||d  ||d< ||d
< |d |d/< |d |d0< d1|d2< |d	 |d3< ||d4< ||d5< |d |d6< |d
 |d7< |d |d8< |d0 d9krDd:|d;< d<|d0< n.|d0 d=kr\d>|d;< n|d0 d?krrd@|d;< |d |dA< |d |d6< || qxtjdBdCdD}g }|D ] }t|} dE| dF< ||  qtjj|dG }!g }"|!D ]X}#t|#}$tjj|$d ddH }%|%|$dI< tjj|$d dJ }&|&D ]}'t|'}(q6|$dK d k	r^d'|$dL< nd'|$dL< |#d |$d6< |#dM d" |#dN  |$dO< g })tjj|$d dPd}*|*D ]}+t|+},|)|,d  q|)|$dQ< tjj|$d dJ }-|- r&|-D ].}.t|.}/|/dR dSkrdT|$dU< ndV|$dU< qndT|$dU< |"|$ tjj|d }0qtdW|||"|0jdXW S tdYdZd[W S W nB tk
r }1 z"t !d\ td]t|1i W Y S d }1~1X Y nX d S )^Nrs   r  r  ru   r?   )r   r  r  r  r  r   r   r!  programType__idr   ry   r  r"  r  r  r  r  r  ry  rx  	iosStatusr  r  r  r  r  r  r   r  r  r  r   r  r  r]   r  r   r  r-  r  r   r  r  r  r  r  rs  r  r7   r  planGoalr   r  r  r  BEGINNERr  r  r  r  r  
Videos__idvideo__videoLinkrw   QR77PiSkDgA	videolinkr  followerUser_idr[   	followersr-  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   r+  r   r%  planCoachesr   r   rX  rY  rZ  r  r  r  r  r  r  r  r  rF  r  r  rJ  rK  rL  rM  rN  r  r\  planVideoArrr  r  coachDetailscoachArrr  coach_id	followCnttrainerstrtrainercoachPlansArrr  plr8  userAddressuauAddrr,  r
  rf   rf   rg   	planListsX	  s@   

                



 









rJ  c              
   C   s  t  }|| }z|d krt| jd}tj j	|d |d d
 }g }|D ]}t|}||d  qXt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 W nB tk
r } z"td tdt|i W Y S d }~X Y nX d S )Nrt   rs   orgId)ry   r[  r  )r[  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   r`  rJ   rI   rH   rG   rF   rE   rD   rC   rY   r   r9   r   r   )r   r   r   r   r+  r?  r   ZplanIdsrp  ri  rj  r   rk  rl  rm  r   r
  rf   rf   rg   	changeIds	  s0    

          
rL  c           	   
   C   s  t  }|| }z|d krt| jd}tjj|d d	ddddd}|D ]^}t
| t|}|d d	krPtjd
ddj|d d }t
| tdd	|d  W S qPtddiW S tdddW S W nB tk
r } z"td tdt|i W Y S d }~X Y nX d S )Nrt   r  r  rw   r   r   rs   
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
  rf   rf   rg   checkInSeason

  s0    
  

rU  c           t      C   s  t  }t| jd}i }i }|d }t|}|rb|}|d rR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 W nB t
k
rN } z"td< t	d=t|i W Y S d }~X Y nX nt	d:d;iS n(|d rz|| }t| jd}	|d kr4|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< qd}tjjdBdF }|D ]}t|}||dG  q*tjtdBdF  }|D ]}t|}||dG  qd|dkrd|	kr~|	d dHkr~dI|	kr|	dI dJkrtjdKdLdAd>dMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcj|	d d.d.|dddedM}n^tjdKdLdAd>dMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcj|	d d.d.|dddedM}	qdf|	krp|	df dHkrpdI|	kr|	dI dJkrt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}	qdh|	k	r|	dh dHk	rtjj|	dh d? }|D ]}t|}|dU }qdI|	kr.|	dI dJkr.tjdKdLdAd>dMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcj|d.d.|dddedM}nZtjdKdLdAd>dMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcj|d.d.|dddedM}nd|	kr~|	d dHkr~dI|	kr|	dI dJkrtjdKdLdAd>dMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcj|	d d.d.|dddedM}n^tjdKdLdAd>dMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcj|	d d.d.|dddedM}n
df|	krp|	df dHkrpdI|	kr|	dI dJkrt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|	k	r|	dh dHk	rtjj|	dh d? }|D ]}t|}|dU }qdI|	k	r.|	dI dJk	r.tjdKdLdAd>dMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcj|d.d.|dddedM}nZtjdKdLdAd>dMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcj|d.d.|dddedM}g }g } g }!d}"g }#g }$g }%| r|D ]8}&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  
qt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 ]h}:|;D ]X}?|:|?dG kr*t%|?d{ t&krTd}@n|?d{ }@|<|@ |<|=|?dG < |>|?dG  q*g }<q"t'jd|j|$djd}d~ddddddG( }Ag }Bi }C|$D ]2}:|AD ]&}.|:|.dG kr|B|. |B|Cd< q̐qt)jj|$djdGdkj t!dkds}Dg }Ei }F|$D ]J}:|DD ]:}.|:|.dG kr.|E|.du  t*|E}G|G|F|.dG < g }Gq.g }Eq&t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< |( r6|(D ]}Nt|N}Oq|Od |'d< nd|'d< i }P|6D ]2}.|'d> |.krFd/|6|. }7|7|'dV< |'dV }QqF|A rg }R|Cd D ]2}.|'d> |.dG kr|R|. |.|PdG< |R|'d< qng |'d< |FD ]0}G|'d> |Gkr|F|G |'d< |"t0|F|G  }"q|'d> |0kr:|/D ] }.|'d> |.kr|/|. |'d< qnd|'d< |'d> |3krx|2D ] }.|'d> |.krT|2|. |'d< qTnd|'d< d}Sd.}Tg }U|'d> |>kr|U|= |UD ]*}.|.|'d>  D ]}:|S|: }S|Td. }Tqq|S|T }V|V|'d< nd|'d< d|'d< dH|'dn< |'d> |-kr0|,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 ]Z}:|)D ]B}&|'d> |&dG kr|&dl d |&dm  |&d< |X|& |X|'d< qg }Xd|'d< qdI|	kr,|	dI dJkr,|j1dkrztjjd.d.d2 3t4d^d }Y|dE dBkrR|'d` |'dO< |'dO |'d< n|'d^ |'dO< t0|'dO dkr*d|'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< nt0|'dO dkrHd|'dO< n|j1dkr|dE dBkrt7|'da t&| |'dO< |'dO |'d< n$t7|'dO t&| |'dO< |'dO |'d< n@|dE dBkr|'da |'dO< |'dO |'d< n|'dO |'dO< |'dO |'d< t&|'dO dkrd|'dO< |6D ]>}.|'d> |.krd/|6|. }7|7|'dV< |'dV }Q|'dV |'d< q|5D ]2}.|'d> |.krPd/|5|. }8|8|'d< |'d }`qP|'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< nJ|'d\ |'dU krV|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rd|'d< d|'d< n>|'d dkrd|'d< d|'d< n|'d dkrd|'d< d|'d< t:jj|'d> dd}a|a r^|aD ]}&t|&}b|&d |'d< q@nd|'d< |'dT |'d< |'dU |'d< |'d |d< ||' qng }tjj|!d }cg }d|cD ]Z}et|e}ft;jj|fd> d.d< }g|g|fd< tjj|fd> d }h|hD ]}Nt|N}iq |fd d k	r8|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>  q|j|fd< tjj|fd> d }n|n r |nD ].}ot|o}p|pdD dkrd|fd< nd|fd< qnd|fd< |d|f qt=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 W nB t
k
r } z"td< t	d=t|i W Y S d }~X Y nX d S )Nrt   coachidr  Z?gfrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrTr%  r?  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   Setsr]  r   r   <   r(  F   r'  P   Z   strength	explosive)r}   r   r;  
totalcountr  rW  r  r  
coverImagegeneralWarmupCooldownexerciseWarmupr   zUser has been logged outr   r   rs   r   Fru   r   r  r  r  ru  rw   r]   r  r  r  r  r  r  r  r   r   r!  r+  r   ry   r  r"  r  r  r   r  r  r  rx  r,  rr  r}  createdBy_id__userCoverr   ry  r   r  r  r  pnameplanName__icontainsr   r  r  r  )Zuser_id__inr  r-  r  r  r  r  r  r  r  r  )r  r-  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  rW  r  r  r	  r7   r  Zceleblikedplanr  r  rs  r  rj  nullr  r  iosPrice__maxr
  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  r  r  ZIdr  r3  r5  r6  r7  r  r  r  r8  S   r  r9  r:  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  rm   r  r  r  r  r"   r   rz  r   r  r  rR   r-   r  r   rC  )tr   r   ZCoachIDZindividualuserplanZCOACHrE  rF  r   r
  r$  r+  r,  r#  r  indianPlanArrotherPlanArrr8  r9  r  r	  indianPlansinpinpObj
otherPlansotpotpObjr   getCoachObjcocoachObjcoachIDr%  
planValArrr<  r  r  r?  arraysr   r   trainerDetailsZreviewslikesZplanlikescountr  celebZCelebrd   rB  rH  ZreviewcountreviewbrD  r   r  ZabbrG  rE  rI  Z	RatingObjrO  RatingPercentcrV  Zrater  rP  r   rQ  rR  rS  rT  r  r  r  rX  rY  rZ  rC  trObjZexercr  ZDfrK  rL  Zjhr  r[  Z	reviewarrr  r  r  r  rz  r  r  r  r\  r  r>  r?  r  r@  rA  rB  rD  rE  r  rF  r8  rG  rH  rI  androidversion
iosversionrK  rf   rf   rg   individualuserplans1%
  sJ   



       
 


 

 


+
(




                      	                                            	                                         	                    	                       	                                            	                                         	                    	 


6"*  
,
"










$







3

       
 


 

 


,
r  c           r   3   C   s  t  }z4|| }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 }| r|D ]}t|}|d	 |d
< qd}
tjjdd }|D ]}t|}||d  qtjtdd  }|D ]}t|}|	|d  q |
dkr0d|kr|d dkrd|kr|d dkrtjddddddddddddddddd d!d"d#d$d%d&d'd(d)d*j|d dd|d+d,d}n^tjddddddddddddddddd d!d"d#d$d%d&d'd(d)d*j|d dd|d+d,d}q4d-|kr|d- dkrd|kr|d dkrtjddddddddddddddddd d!d"d#d$d%d&d'd(d)d*j|d- dd|d.d,d}n^tjddddddddddddddddd d!d"d#d$d%d&d'd(d)d*j|d- dd|d.d,d}q4d/|kr4|d/ dkr4tjj|d/ d }|D ]}t|}t| |d }q>d|kr|d dkrtjddddddddddddddddd d!d"d#d$d%d&d'd(d)d*j|dd|d+d,d}nZtjddddddddddddddddd d!d"d#d$d%d&d'd(d)d*j|dd|d+d,d}nd|kr"|d dkr"d|kr|d dkrtjddddddddddddddddd d!d"d#d$d%d&d'd(d)d*j|d dd|	d+d,d}n^tjddddddddddddddddd d!d"d#d$d%d&d'd(d)d*j|d dd|	d+d,d}nd-|kr|d- dkrd|kr|d dkrtjddddddddddddddddd d!d"d#d$d%d&d'd(d)d*j|d- dd|	d.d,d}n^tjddddddddddddddddd d!d"d#d$d%d&d'd(d)d*j|d- dd|	d.d,d}n d/|kr4|d/ dkr4tjj|d/ d }|D ]}t|}t| |d }qFd|kr|d dkrtjddddddddddddddddd d!d"d#d$d%d&d'd(d)d*j|dd|	d+d,d}nZtjddddddddddddddddd d!d"d#d$d%d&d'd(d)d*j|dd|	d+d,d}g }g }g }d0}tjj|d1jdd2gd3d4dd5}| r|D ]*}t|}|d5 d6|d5< || qvg } g }!|D ]}t|}"t|"d d7 | |"d  |!|"d  tjj|"d d8 }#|# rT|#D ]H}$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 },|, r|,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|kr|d dkr|j%dWk
rtjjdddX& 't(d%dY }7|d
 dk
r|"d' |"d< |"d |"dV< n|"d% |"d< t)|"d d0krdZ|"d< ntjjdddX& 't(d%dY }8t*jj	|8d[}9|9j+}7|d
 dkrJt*j j|"d' d[}:nt*j j|"d% d[}:|:D ]};t|;}<|<d\ }=qd|=|"d< t)|"d d0kr|dZ|"d< nt)|"d d0krdZ|"d< n|j%dWkr"|d
 dkrt,|"d( t-| |"d< |"d |"dV< n$t,|"d t-| |"d< |"d |"dV< n@|d
 dkrJ|"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 }?q|?dkr|?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rrt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< n|"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q|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 }Rtjj|d }Sg }T|SD ]N}Ut|U}Vt5jj|Vd dd# }W|W|Vd< tjj|Vd dC }X|XD ]}-t|-}Yq|Vd d k	r|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< nd|Vd< qbnd|Vd< |T|V qXt|T t6jdj|dCdddddddddd
}ad}bi }ci }di }eg }fd}gd}hd}i|a rLd}b|aD ]:}t|}d|dd d kr|dd |dd< |dd d|dd< qt7jj|d1 }jd}k|j rd}k|jD ]}t| t|}cqtt8jj|d1dddddddddddjddd}l|l rd}h|lD ] }t| t|}e|f|e qtjj|d1jdd2gd3 }m|m rd}id}gt9jj	dd}nt9jj	dd}otjj	|d}pt:d||R|T||j%|j;|j<||d|c|f|b|k|g|h|d |d |d |d |d |d |d |d |d |d |d |i|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 W nB t>k
r~ }q z"t?@d t:dt|qi W Y S d }q~qX Y nX d S )Nrt   rs   r   r?   Fru   r   r  r  r  Tru  rw   rV  r]   r  r  r  r  r  r  r  r   r   r!  r+  r   ry   r  r"  r  r  r   r  r  r  rx  r,  rr  r}  r  r   r  r  r  r  r  r   r   r'  )
status__inr[   nextRenewalDatez%Y-%m-%dzdataObj{'id'}r  re  rf  r   rg  rh  ri  r  r  r  r  r6  r  r  rB  rj  r  r  r  r  r	  r  r  r  rk  zHere celebplanlikesrl  r  r  r  rs  r  r  r  r
  ry  rz  r   r  r  r   r  r  r  r  r  r  r  r  r  r-  r  r  r  r  r  r  r  r  r7   r  r-  r   r  r  r  r}  r  r~  r  r  r  r  r  r   r  r  r  r  rW  r  r3  r5  r  r7  r  r  r  r8  r  r  r9  r:  genderdobr1  
heightUnitweight
weightUnituser_id__iduser_id__emailr  trainingLeveldob1z%Y/%m/%dr5  exerciseId_idexerciseId_id__exerciseNamer   tmax
updateTmax
updateTypeupdatedDater0  
workWeightworkoutTestDater&  r   sessiontokenemailis_superuserrW  r  r  phoner  	phoneCoderX  r)  rY  rZ  r[  ra  rb  rc  rd  re  rf  rg  rh  ri  rj  rk  rl  rm  rn  ro  rp  rq  r   rr  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r~  r(  r  r  r  r  )&r}   r   r   r;  r  r  rt  userIdr  profiler/   r  isProfileSet	isGoalSet	isPlanSet	isTmaxSetcoder  userDetailsr   fnamelnamer  rW  r-  r  r  isFreeTrailr  r  r  	phonecoder  androidVersion
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   rz  r   r  rM   rL   r  r  r  r7   rJ   r-   r+   r/   r   r   rY   rt  rs   versionr   r9   r   )rr   r   r   r$  r+  r,  r#  r  r  r  r8  r9  r  r	  r  r  r  r  r  r  r   r  r  r  r  r%  r  r<  r  	updetailsr   r  r?  r  r   r  r  r  r  r  r  rX  rY  rZ  r  rC  r  r  r  rC  r  r  r  r  r  r  r  r  r  rz  r  r  r  r  r  r  rF  r  r  r  r  r  rJ  rK  rL  rM  rN  r  r  r  r  r  r=  r>  r?  r  r@  rA  rB  rD  rE  r  rF  r8  rG  rH  rI  fitProQuerySetr  dataGoalObj
dataFitObjdataTmaxObjtmaxArrr  r  r  goalDetailsr  tmaxDetailsPlanDetailsr  r  rK  r
  rf   rf   rg   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 }q|d	kr|dd  }nd	}tjdj	|d dd}d	}|D ]}t
|}|d
|d  7 }q |d	kr8|dd  }nd	}||d< ||d< d}tjj	|d dddddd}|D ]}d}t
|}|d }|d }t||d< tjj	|d ddddd}|D ]V}d}t
|} |d }|d }dt|d  | d< t|d t| | d< tjj	| d dddddd}!|!D ]}"d}#t
|"}$|d }|d }t|d t| d t| |$d< d t|d  |$d!< tjj	|$d d"d#ddd$d%d&}%|%D ],}&d}'t
|&}(|d }|#d }#t|d t| d t| d t|# |(d< d't|#d  |(d(< tjd)j	|(d d*d+d,ddd-d%d.d/d0d1d2})|)D ]t}*d}+t
|*},|d }||,d/  |,d0 d k	r|,d0 d	kr|,d0 d3kr||,d0  |'d }'t|d t| d t| d t|# d t|' |,d< |,d+ |,d4< tjj	|,d d5d6ddd7d%d2}-|-D ]}.t
|.}/|d }|+d }+t|d t| d t| d t|# d t|' d t|+ |/d< d8t|+d  |/d9< |
|/ q(|,|
d:}0|	|0 g }
qR|(|	d;}1||1 g }	q|$|d<}2||2 g }q6| |d=}3||3 g }q||d>}4||4 g }qttjj	|d? }5g }6|5D ]}7t
|7},|6|, qT||6|d@}qntdA|iW S tdBdCdDW S W nB tk
r }8 z"tdE tdFt|8i W Y S d }8~8X Y nX d S )GNrt   rw   r   r   r   rs   r  r  r]   r  r?   r   r  r/   r  r   r   r   rM  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   	excerciserC  set_nameExerciseInfo
setDetailsr  exerciseDetailsMicrocycleInfoSessionDetailsMesocycleInfoMicrocycleDetailsr  MesocycleDetailsr  )r~   	ExercisesPeriodDetailsr+  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  rF  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
  rf   rf   rg   viewPlanf  s   



 
   
    
$     
      

     










r1  c           0      C   s  t jddddj|d}g }g }g }g }g }g }g }	i }
i }i }d }d}|D ]}t|}d}tjj|d dd	d
ddd}|D ]}d}t|}|d }|d }t||d< tjj|d ddddd}|D ]|}d}t|}|d }|d }dt|d  |d< t|d t| |d< |d k	r8||
|d < tjj|d dddddd}|D ]}d}t|}|d }|d }t|d t| d t| |d< dt|d  |d< |d k	r|||d < t	jj|d ddddddd}|D ](}d} t|}|d }|d }t|d t| d t| d t| |d< d t|d  |d!< t
jd"j|d d#d$d%ddd&dd'd(d)d*
}!|!D ]r}"d}#t|"}$|d }|	|$d(  |$d) d k	r|$d) d+kr|$d) d,kr|	|$d)  | d } t|d t| d t| d t| d t|  |$d< |$d$ |$d-< tjj|$d d.d/ddd0d}%|%D ]}&t|&}'|d }|#d }#t|d t| d t| d t| d t|  d t|# |'d< d1t|#d  |'d2< ||' q`|$|d3}(||( g }q||d4})||) g }q||d5}*||* g }q\||d6}+||+ g }q||d7},||, g }qtjj|	d8d9d:dd;d<d=d>d?d@	}-g }.||
|d < |||d < |-D ]}/t|/}$|.|$ q|
|dA}qN|S )BNr  r   rs   r  r   r   r   r  rw   r   rM  r?   r  r  r   r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r   r  r   r  r  r  r]   r  r  r  r   r  rC  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  r(  r   r)  r*  r+  r,  r-  r.  r/  r0  rf   rf   rg   
getPlanArr  sZ   
 
 

 
$
     
      

 









  r?  c           J      C   s	  t  }	zV|| }|d }tjj|djdd }| 	rL|D ]}t|}qD|d k	r:tjdddddd	j|d
 d}g }g }	g }
g }g }g }g }i }d}t	| |d
 }t
| tjj|d
 dd
ddd}g }d}| r|D ]0}t|}t|d dd|d< || q|D ]}t|}d|d< d|d< d}tjj|d dd
ddddd}|D ].}d}t|}|d }|d }t||d< tjj|d dddddd}|D ]}d}t|} |d }|d }dt|d  | d< t|d  t| | d< tjj| d d!d"d#dd$d%d}!|!D ]}"t|"}#|d }|d }t|d  t| d  t| |#d< d&t|d  |#d'< tjj|#d d(d)d#dd*d+d,d}$|$D ]}%d}&t|%}'|d }|d }t|d  t| d  t| d  t| |'d< d-t|d  |'d.< tjd/j|'d d0d1d2d#dd3d+d4d5d6d7d8d9d:d}(|(D ]})d}*t|)}+|d }||+d6  |+d7 d k	r|+d7 d;kr|+d7 d<kr||+d7  |&d }&t|d  t| d  t| d  t| d  t|& |+d< |+d1 |+d=< tjj|+d d>d?d@dAd#ddBd+dCd},|,D ]X}-t|-}|d }|*d }*t|d  t| d  t| d  t| d  t|& d  t|* |d< dDt|*d  |dE< |d |dF krdG|dH< d|dI< d|dJ< n<|d |dK krdG|dH< d|dL< d|dJ< ndM|dH< d|dJ< tjj|d
 djdNgdO }.|dC dkr\dG|dH< |. r|.D ]}t|}/t
|/ |/d }0qj|0|dP< || qDtjj|d
 djdQgdO }1i }2|1 r|1D ]}t|}3|3d }4qdP|4i}2|4|+dP< |+|2|dR}5||5 g }qdtjj|d
 djdSgdO }6i }7|6 rr|6D ]}t|}8|8d }9qJdP|9i}7|9|'dP< |'|7|dT}:||: g }qtjj|d
 djdUdVgdO };i }<|; r|;D ]}t|}=|=d }>qdP|>i}<|>|#dP< |#|<|dW}?|
|? g }q<tjj|d
 djddXgdO }@i }A|@ rf|@D ]}t|}B|Bd }Cq>dP|Ci}A|C| dP< | |A|
dY}D|	|D g }
q||	dZ}E||E g }	qntjj|d[ }Fg }G|FD ]}Ht|H}+|G|+ q||G||d\d]d^d_d^d`dadbd^d_d^d`dcdbd^d^d^d`dddbd^d^d^d`dedbd^dfd^d`dgdNd^d^dhd`didNd^djdhd`dkdNd^djdhd`dlddmdndod`dpdbd^d^d^d`g
dqdridqdsidqdtidqduidqdvidqdwidqdxidqdyidqdzig	ddbd{d|ddSd}d|ddVd~d|ddXdd|dddd|gdd]d{d|dd]d{d|ddXd}d|ddXd}d|ddXd~d|dddd|dddd|gdd}q"td|iW S tdMddW S ntdMddW S W nB tk
	r }I z"td tdt|Ii W Y S d }I~IX Y nX d S )Nrs   r  r?   rZ   r  r   r  r  r  rw   r   r   r  protocol_idr   r  r   r  "ztxEOSIcMc4genWarmupVideo2esZzqjO5CccooldownVideor   rM  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  
allOutStatrC  r  	macroSetsTalloutr  desigProtocolID	microSets4Frh  )protocol_id__inprotoccolID	   )r  protocolr  r   )r  rS  r   r&  r(  )r  rS  r  r'  )r  rS  r  r  r  rX  r)  rY  rZ  r[  ra  rb  rc  rd  re  rf  rg  ri  rj  rk  rl  rm  rn  ro  rp  rq  r   rr  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r~  r  r  r  r  )r~   r	  	Protocolsr
  r  r  r  r+  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   r;  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  r(  setProtocol
datasetObjsetProtocolIDexerProtocolexerProtocolJSONprotoExerObjexerProtocolIDr)  sessProtocolsessProtocolJSONprotosessObjsessProtocolIDr*  microProtocolmicroProtocolJSONprotoMicroObjmicroProtocolIDr+  mesoProtocolmesoProtocolJSONprotoMesoObjmesoProtocolIDr,  r-  r.  r/  r0  r
  rf   rf   rg   ra  o  s   





 
   
    
$    
       

      


















        












)
ra  c                 C   s  i }i }t jj|dddgddddd}g }| r|t| |}t| |D ]*}t|}|d }	|d }
t|	 |
dks|
dkr|d	 D ]f}t| tjjt	|	|d
 
 }t| |d k	rtjj|d d 
 }|d k	rd||d < q|
dkrN|d D ]t}t| tjjt	|	|d
 
 }t| |d k	rtjj|d d 
 }t| |d k	rd||d < qqN||dS )Nr'  r(  r)  )rw   rP  rw   r@  r   r  r9  )r  r  rs   r  r?   r:  )rK  rN  )rJ   r   r   r   r   r?  r   r   r;  r  r  r  )r   r<  rK  rN  rY  rZ  	PlanArrayr   r   
exerciseID
protocolIDsessObjlastExerDetailslastSetDetailsrf   rf   rg   rU  h  sP    




rU  c              
   C   s  t  }z|| }|d }|d krt| jd}d|kr|d dkrtd tjj	|d |d d
 }| r|D ]}t|}q|td	|d
 dW S td	ddW S ntjj	|d |d d}| rVtjj|d |d d}	tt|d
  t|d
 tkrt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 nB tk
r } z"td tdt|i W Y S d }~X Y nX d S )Nrs   rt   
get_ratingr?   z------------1r-  rw   r-  rw   Tr  )r}   r  r   FzPlease provide valid ratingr   zThanks for the rating)rw   r-  r  r   r   )r3   r   r   r   r   r   r   r7   r   r   r   r   r   rY   r   r   r  rw   r-  r  r   r   r   r9   r   r   )r   r   r   r   r   planrater   rN  r   r+  r  r
  rf   rf   rg   createPlanRating  sH    






rx  c              
   C   s   t  }zl|| }|d }|d kr`t| jd}tjj|d |d d	 }t
dddW S t
d	d
dW S W n@ tk
r } z"td t
dt|i W Y S d }~X Y nX d S )Nrs   rt   r-  rw   rv  Tz plan rating successfully deletedr   Frf  r   r   )r3   r   r   r   r   r   r7   r   r   rg  rY   r   r9   r   r   )r   r   r   r   r   r   r
  rf   rf   rg   deletePlanRating  s    

ry  c           	   
   C   s   t  }zx|| }|d }t| |d kr|t| jd}tjj	|d d
ddd}|D ]}t|}q\tdd|dW S W n@ tk
r } z"td	 td
t|i W Y S d }~X Y nX d S )Nrs   rt   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
  rf   rf   rg   getPlanDetails  s    


rz  c              
   C   s   t  }z|| }|d }|d krtjjdddd}tjdddd}g }g }|D ]}t|}	||	 qV|D ]}
t|
}|| qrt	d||d	W S W n@ t
k
r } z"td
 t	dt|i W Y S d }~X Y nX d S )Nrs   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   r+  r/   r'  goalArrr   r   r  r   r
  rf   rf   rg   getProgramType  s&    

r  c           `      C   s  t  }z~|| }t| jd}g }|d krttjj|d d}|j	dkr`t
dddW S d|kr|d d kr|d }|d	ks|d
ks|dks|dkrt
dddW S tjj|d |ddddd}nZ|d }|d	ks|d
ks|dks|dkrt
dddW S tjj|d |ddddd}tjj|d}|D ]}	t|	}
q:|
d }|
d dd}|
d dd}t|}|
d dd}t|}|d }|d }|d }|d }d}|D ]4}|d }|d dks|d dkrd} qq|dkr|D ]}	|	d }tjj|d |d d|d |d  ||d!}|  |j}|	d" }|D ]4}|d# }tjj|d|d$ |d  ||d%}|  |j}|d& }tt|d' |D ]} | d( }!tjj|d|!d) |!d* ||d+}"|"  |"j}#| d, }$|$D ]}%|%d- }&tjj|#d|&d. |&d/ |&d* ||d0}'|'  |'j}(|%d1 })|)D ]<}*|*d2 }+tjj|+d3 |(d|+d4 |+d5 |+d6 |+d* |+d7 |+d8 |+d9 ||d:},d5|+kr|+d; dkr|+d5 |,_d<|+kr|+d< |,_d=|+krtd>|+d=  |+d= |,_d?|+kr|+d? |,_d;|+kr |+d; d kr |+d; |,_d@|+krB|+d@ d krB|+d@ |,_ dA|+krd|+dA d krd|+dA |,_!dB|+kr|+dB d kr|+dB |,_"dC|+kr|+dC d kr|+dC |,_#dD|+kr|+dD d kr|+dD |,_$|,  |,j}-dE|+krT|+dE d krTt%jj|d |+d3 dF}.|.& rtdG n8t%jj|+d3 |d |+dE |+dH |+dI |+dJ dK}/|/  |+d4 }0|+d6 dkrr|+d4 }0t|+d6  tt'dL t(d|0D ]}1t)jj|-d|+d5 |+d* ||dM}2d/|+kr|+d/ |2_d;|+kr|+d; d kr|+d; |2_d@|+kr|+d@ d kr|+d@ |2_ dA|+kr0|+dA d kr0|+dA |2_!dB|+krR|+dB d krR|+dB |2_"|2  q|+d6 dkrdN|+kr|+dN |2_*|2  |+d6 dkrnt)jj|-d|+d6 |+d* ||dM}2d/|+kr|+d/ |2_d;|+kr|+d; d kr|+d; |2_d@|+kr|+d@ d kr|+d@ |2_ dA|+kr0|+dA d kr0|+dA |2_!dB|+krR|+dB d krR|+dB |2_"dN|+krf|+dN |2_*|2  |2j}3tdO q@qqqTqnB|D ]:}	|	d }tjj|d |d d|d |d  ||d!}|  |j}|	d" }|D 
]}|d# }tjj|d|d$ |d  ||d%}|  |j}|d& }tt|d' t|dP dkrtdQ t(ddPD ]}4|D ]} | d( }!tjj|d|!d) |!d* ||d+}"|"  |"j}#| d, }$|$D ]}%|%d- }&tjj|#d|&d. |&d/ |&d* ||d0}'|'  |'j}(|%d1 })|)D ]r}*|*d2 }+tjj|+d3 |(d|+d4 |+d5 |+d6 |+d* |+d7 |+d8 |+d9 ||d:},d5|+k	rt|+d; dk	rt|+d5 |,_d<|+k	r|+d< |,_d=|+k	rtd>|+d=  |+d= |,_d?|+k	r|+d? |,_d;|+k	r|+d; d k	r|+d; |,_d@|+k
r|+d@ d k
r|+d@ |,_ dA|+k
r$|+dA d k
r$|+dA |,_!dB|+k
rF|+dB d k
rF|+dB |,_"dC|+k
rh|+dC d k
rh|+dC |,_#dD|+k
r|+dD d k
r|+dD |,_$d=|+k
rtd>|+d=  |+d= |,_d?|+k
r|+d? |,_|,  |,j}-dE|+krJ|+dE d krJt%jj|d |+d3 dF}.|.& rtdG n8t%jj|+d3 |d |+dE |+dH |+dI |+dJ dK}/|/  |+d4 }0|+d6 dkrh|+d4 }0t|+d6  tt'dL t(d|0D ]}1t)jj|-d|+d5 |+d* ||dM}2d/|+kr|+d/ |2_d;|+kr|+d; d kr|+d; |2_d@|+kr|+d@ d kr|+d@ |2_ dA|+kr&|+dA d kr&|+dA |2_!dB|+krH|+dB d krH|+dB |2_"|2  q|+d6 dkrvdN|+krv|+dN |2_*|2  |+d6 dkrdt)jj|-d|+d6 |+d* ||dM}2d/|+kr|+d/ |2_d;|+kr|+d; d kr|+d; |2_d@|+kr|+d@ d kr|+d@ |2_ dA|+kr&|+dA d kr&|+dA |2_!dB|+krH|+dB d krH|+dB |2_"dN|+kr\|+dN |2_*|2  |2j}3tdO 	q qqjq`qt(ddRD ]:}4|D ],} | d( }!tdS tjj|d|!d) |!d* ||d+}"|"  |"j}#| d, }$|$D ]}%|%d- }&tjj|#d|&d. |&d/ |&d* ||d0}'|'  |'j}(|%d1 })|)D ]}*|*d2 }+tjj|+d3 |(d|+d4 |+d5 |+d6 |+d* |+d7 |+d8 |+d9 ||d:},d5|+kr|+d; dkr|+d5 |,_d<|+kr|+d< |,_d=|+krtd>|+d=  |+d= |,_d?|+kr|+d? |,_d;|+kr|+d; d kr|+d; |,_d@|+kr:|+d@ d kr:|+d@ |,_ dA|+kr\|+dA d kr\|+dA |,_!dB|+kr~|+dB d kr~|+dB |,_"dC|+kr|+dC d kr|+dC |,_#dD|+kr|+dD d kr|+dD |,_$d/|+kr|+d/ |,_d=|+krtd>|+d=  |+d= |,_d?|+kr|+d? |,_|,  |,j}-dE|+kr|+dE d krt%jj|d |+d3 dF}.|.& r^tdG n8t%jj|+d3 |d |+dE |+dH |+dI |+dJ dK}/|/  |+d4 }0|+d6 dkr|+d4 }0t|+d6  tt'dL t(d|0D ]}1t)jj|-d|+d5 |+d* ||dM}2d/|+kr|+d/ |2_d;|+kr.|+d; d kr.|+d; |2_d@|+krP|+d@ d krP|+d@ |2_ dA|+krr|+dA d krr|+dA |2_!dB|+kr|+dB d kr|+dB |2_"|2  q|+d6 dkrdN|+kr|+dN |2_*|2  |+d6 dkrt)jj|-d|+d6 |+d* ||dM}2d/|+kr|+d/ |2_d;|+kr.|+d; d kr.|+d; |2_d@|+krP|+d@ d krP|+d@ |2_ dA|+krr|+dA d krr|+dA |2_!dB|+kr|+dB d kr|+dB |2_"dN|+kr|+dN |2_*|2  |2j}3tdO q8qqqqq|D ]6}5t+jj|5dT |d |5d3 |5dU ||dV}6|6  q|D ]6}5t+jj|5dT |d |5d3 |5dU ||dV}6|6  q|D ]6}5t+jj|5dT |d |5d3 |5dU ||dV}6|6  qRt,jj|d dWdX}7|7  t,jj|d dYdX}8|8  tjj|d dZd}9tj-d[d\d]j|d d^d}:t|9};t|:}<|<dkrdR}<tjj|d d_}=d|=_.|<|=_/|;|=_0|=  tjj|d dZd}>|>D ]0}?t|?}@tjj|@d d_}A|=j/|A_/|A  qb|=j1}B|=j}C|Bd` t2|C }Dt34|D5da}Et2|E6d}F|Fd }Gdb}Hdc}Idd}J|B}Kdet2|G }L|Ldf dg |H dh |K }M|Ldf dg |I dh |K }N|Ldf dg |J dh |K }O|7|M|Cdi |7|N|Cdi |7|O|Cdi t|dkr|D ]}P|Pdj }Q|Pdk }Rdl8dm}Sdn|Qi}Tdodpi}Ut9j:|St;|T|Udq}V|V }Wt|Vj< t=jj|Wd dr}X|X& rtds nt=jj|R|Wd |Qdt}Y|Y  q|tjj|d_}Zd|Z_>|Z  du}[|j?}\|j@|Bdv}]tAdw|]}^tB|[|^|\ t
ddxdW S nt
ddydW S W nB tCk
r }_ z"tDEdz t
d{t2|_i W Y S d }_~_X Y nX d S )|Nrt   rw   r   r   Fz'Please update the prices and iOS Statusr   ry  i  i)  73627721zThis is a dummy coach or gym idrY  rs   rz   protocolJsonr{   r  rA  progression
regressionskipr
  r  rM  SpecificrN  Tr?   r   r   )rw   rM  r[   r   r   ry   r[  r  r  r   )r  r[   r   r   ry   r[  r  23456543456r  r  r  )r  r[   r  r  ry   r[  r  r  r  r  )r  r[   r  r  r  ry   r[  r   r  ex_idr   r   	extra_setr   r   rG  )r  r  r[   r   r   r  r  r   r   rG  ry   r[  r  
exRestTimeinstructionszcoming Herer  r4  	advWeightr=  advSpeed	advHeightbaseDistance)rw   r  zalready ExistsbaseRepsbaseTime
baseWeight)r  rw   r  r  r  r  zhere I Come)r  r[   r   r  ry   r[  rJ  zdetails Saved Successfullyr&  zeven Number of Microcylclesr(  zodd number of microcylesr@  r  )r@  rw   r  r   ry   r[  r   r   r   r  PlanMesocycle__idPlanPeriods__idrv   )$mesocycle_id__period_id__plan_id__idr   r  r  FacebookTwitter	Instagram"http://stratfit.net/#/planprofile/rf  utm_source=+&utm_medium=Link&utm_term=Organic&utm_name=urlr   r  r   5https://www.googleapis.com/urlshortener/v1/url?key={}'AIzaSyAXaSWj7trNg8Pq3PdBiOSHirnjcZlIZSore  content-typeapplication/jsonr   headersri  r   rw   ri  re  zPlan published!)r  	plan_namezpublishplan.htmlzProgram Published SuccessfullyzUser LoggedOutr   r   )Fr3   r   r   r   r   r   r@   r   r   r,  rY   rK   r   r   r*   r   rV  rC   r   r   rs   rD   r   r   rE   rG   r;  r   r  specificInstructionr  r  exTimeexWeight
exDistancer:  r1  rT   r   rC  rn   r  rJ  rJ   rO   r   r   r   r  r  r   r  r   r!  r  r   formatrequestspostr^  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mesoDetailsrm  mesoVal
createmesomesoIdmicroDetailsrl  microValcreateMicromicroIdr   sesssessVal
createsesssessId	exdetailsr  exValcreateexr  planextmaxDetcreatePlanEXTmaxsetDatard   	createsetsetIdrT  protoIdcreateProtocolr  r  countOfPeriodscountOfMicrocyclesr  r   r  updatePlanPeriodperperObjupdatePeriodplannamer   rX  rY  rZ  	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
  rf   rf   rg   createPlanBuild  s
   


   "  




	

	
	















	
















 
	

	
	

















 

	

















	
	



















 

	
















 	






r  c              
   C   s  t | jd}z>t }g }tjj|d dd}|	 rF|D ]}t
|}qF|d dd}t |}|d D ]^}	|	d D ]P}
|
d D ]B}|d	 D ]4}|d
 D ]&}t|d d  ||d d  qqqqqvtjj|ddddddd}|D ]H}t
|}|d dkr||d |d |d |d |d |d d qt|ddW S  tk
r } z"td tdt|i W Y S d }~X Y nX d S )Nrt   rw   r  r{   r  r
  r  r  r  r   r  r  r  r   r7  r3  rs   accessLevelexAbilitiesSkillexerciseCode)exNameexCoders   exDescexEquipr  F)safer   r   )r   r   r   r   rC  rK   r   r   r   r   r   rV  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
  rf   rf   rg   getExerciseDetails  s@    


  2
r	  c              
   C   s  t  }t| jd}zt|| }|d }t| |d krtjj	|d |d
ddd}| rz|D ]}t|}ql|d d ks|d dkr|d }n|d d	d
}	t|	}d|d kr|d d |d< nfd|d kr|d d |d< nHd|d kr|d d |d< n(d|d kr2|d d |d< n|d }tjj|d d}
t||
_td ||
_||
_|
  |
j}tdd|dW S W nB tk
r } z"td tdt|i W Y S d }~X Y nX d S )Nrt   rs   rw   rY  rz   r  r]   r  r  rA  r  r  r  
transitionr   zin Here TO UpdateTr\  r]  r   r   )r3   r   r   r   r   r   r   rK   r   r   r   r   r   rV  r   r^  r  ry   r[  r   rs   rY   r   r9   r   r   )r   r   r{   r   r   r_  r   r   	protoJsonrS  r`  r   r
  rf   rf   rg   saveprotocolJson  sL    






r  c           	   
   C   s(  t  }t| jd}z|| }|d krd|krV|d dkrV|d d krV|d }n|d }tjddj	||d d
d	d
dd}| r|D ]6}t|}|d dkr|d dkrd|d< qd|d< qnddi}t|W S W nB tk
r" } z"td tdt|i W Y S d }~X Y nX d S )Nrt   ry  r]   rs   ru   rv   rw   rx   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
  rf   rf   rg   getprotocolJson  s:    
 
   

r  c              
   C   s   t  }t| jd}zl|| }|d }t| |d krrtjj	|d d}d|_
||_|  tdddW S tdd	dW S W n@ tk
r } z"td
 tdt|i W Y S d }~X Y nX d S )Nrt   rs   r   r   TzProgram deleted successfullyr   Frf  r   r   )r3   r   r   r   r   r   r   rK   r   r   r[   r[  r   rY   r   r9   r   r   )r   r   draftidr   r   	draftdatar
  rf   rf   rg   deletedraftedplan  s     

r  c           $   
   C   s  t  }t| jd}z*|| }|d }|d kr&tjj||d d	d}t
jj|d d	d}|D ]}t|}qnt| g }	g }
|d dkr| r|D ]}t|}|d d	d
}qt|}|d }|D ]}|d }|D ]}|d }|D ]}|d }|D ]r}|d }|D ]^}|d }d|d krV|d }|d }|	||d n |d }|d }|
||d qq
qqqtd|	d td|
d g }g }|	D ]}||
kr|
| q|
} | D ]}!|!|kr||! q|	D ]}"|"|kr||" qt|d ntdddW S ntdddW S t||dW S  tk
r }# z"td tdt|#i W Y S d }#~#X Y nX d S ) Nrt   rs   rw   rx   r{   r   rx  r?   r  rA  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   rV  r   removerY   r   r9   r   r   )$r   r   r   r   r   r   r   r   
planValues	lablledExunlabelledExr   r   r  r  r  r  rm  r  rl  r   r  r  r  r  labelledExcerciseslabelledExidunlabelledExerunlabelledexidoutputoutput1itemotherExercisesr&  x1r
  rf   rf   rg   getTransitExId1  st    







r$  c              
   C   sT  t  }t| jd}z|| }|d }t| |d kr
d|kr
tjj	|d |d
dd}| r|D ]}t|}qptjj|d d}t|d |_t|d  ||_||_|  tdd	d
W S tjj|d ||t|d d}	|	  tdd	d
W S W nB tk
rN }
 z"td tdt|
i W Y S d }
~
X Y nX d S )Nrt   rs   rw   rY  rz   r   rulesTzrecord Inserted Successfullyr   )rz   ry   r[  r  r   r   )r3   r   r   r   r   r   r   rK   r   r   r   r   r   r   r^  r  ry   r[  r   rY   r   r   r9   r   r   )r   r   r{   r   r   r_  r   r   r`  
createRuler
  rf   rf   rg   saveRuleJsonw  s@    




r'  c              
   C   s  zt | jd}tjj|d dddd}|D ]}|d }|d }q6|d }t| |d }t| t	jj|d
dd	d
dddddd}g }	|D ]R}
t|
}|d |d< |d |d< |d |d< |d |d< |d |d< |	| qtjddt|t| }t|}g }|D ]b}t|}t	j
dd	d
dj|d dddddd}|D ]"}t|}t|d || q^q"t|	||tdW S  tk
r } z"td tdt|i W Y S d }~X Y nX d S )Nrt   rs   r?   r#  rw   endstartr  UserExercise__idr_  r  	setNumber&userexercise__exerciseId__exerciseNamer2   userexercise__exerciseWorkWeightplanset__num_of_reps	numOfRepssetNamerepsDoner   r  z-id)planset__excercise__session__idz--------)r+  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   rO  r  rw   r0  offset1offset2rD  listr   plandetailslast_twolast_two_in_ascending_orderrA  r  r   userSetDetailsr   r
  rf   rf   rg   r{     sd    
   " 

r{   c                 C   s,  t  }z|| }|d }t| |d krt| jd}tj	ddj
||d ddddd	}| r|D ].}t|}|d d kr|d d
krd}qtd}qtnd}tj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 ]}t|}|d d,ks|d d-krtjj|d& d}nFtjj|d d}t|d# d. tt|jd/ t|j  d0 |d#< |d  |d1< |d# |d2< |d |d3< q|D ]"}t|}|d4t|d5  7 }q6|d
krt|d6d  |d< |D ]"}t|}|d4t|d7  7 }qx|d
kr|d6d  |d!< d
}|D ]}t|}|d8|d+  7 }q|d
kr|d6d  |d9< nd
|d9< |	D ](}t|}|d |d:< td;|d  qt|	d< |
D ]}t|}|d d=krf|d |d>< nZ|d d?kr|d |d@< |d |dA< |d |d< n&|d d,kr|d |dB< |d |dC< || q>tddD||dEW S W nB tk
r& } z"tdF tdGt|i W Y S d }~X Y nX d S )HNrs   rt   ru   rv   rx   r{   r  r[   r|   r]   TFr  r  plan_id__planNameplan_id__num_of_sessionsr  r  r  r  r  r@  couponr   r   r/   r  r  r  originalPlanIdr  r  r  r   r   r  r  ry   rx  r,  r  r   r  r  r  r  r  r  rh  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  rF  r\  r   
planvaluesr'  r/   r  r  
goalStringabilityStringr   r  r  goalgoalObjr  
abilityObjrD  r  r  r  r   r
  rf   rf   rg   r     s    

(                  




r   c           
   
   C   s2  t  }z|| }|d }t| |d krtjj|ddd}| rNd}ntdddW S t	jj|dd}|D ]>}t
|}t|d  |d d krd}qvtdd	d  W S qv|dkr|dkrtdd
dW S ntdddW S W nB tk
r, }	 z"td tdt|	i W Y S d }	~	X Y nX d S )Nrs   r?   r#  TF)r}   r[   r   r  r&  r'  rf  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
  rf   rf   rg   checkTrainer-  s.    

rQ  c           
   
   C   sR  t  }z|| }|d }t| |d krg }tjjddddd}|D ]}t|}|d |d< |d |d< |d d krd|d< d|d	< n$|d |d	< |d |d
< |d |d< tjj|d d }|	 rt
||d< nt
||d< || qNtd|dW S W nB tk
rL }	 z"td tdt|	i W Y S d }	~	X Y nX d S )Nrs   r'  rs  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   r?  r  r  	coacheValr   r
  rf   rf   rg   	coachListL  s6    



rW  c                 C   sj  t  }z|| }|d }g }g }g }g }|d krt| jd}tjj|d dd	ddd}|
 r|D ]$}	t|	}
||
 ||
d  qr|d d  D ]N}tjdd	j|d
	dddddddddd
}|D ]}	t|	}|| qq|| td||dW S tdddW S W nB tk
rd } z"td tdt|i W Y S d }~X Y nX d S )Nrs   rt   r  r?   )ry   r   r  r   ru   rv   r  r@  rw   r[   r-  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Arrr[  Infor   r   r+  rd   rO  userplanr
  rf   rf   rg   PlanSubscribersn  s6    


.

r_  c                 C   sB  t  }z|| }|d }g }g }|d krt| jd}g }tjj|d d	 }|d d  D ]}	d|	d< |
|	 qft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< |
|	 qtjj|d d	 }|d d  D ]}	d
|	d< |
|	 qPt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< |
|	 qtjj|d d|d d	ddd}| r|D ]}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&}| rP|D ]}t|}|
| qqPtd'||d(W S td)d*d+W S W nB tk
r< } z"td, td-t|i W Y S d }~X Y nX d S ).Nrs   rt   rw   r  r   r%  r?   r&  r'  r(  r)  r   r*  r,  r[   r.  r/  r1  r2  r3  r4  r5  r6  r7  r0  r8  r9  r:  r;  r<  r-  r=  r  r>  r?  r@  rA  rB  T)r}   Z
PlanStatusZCompletePlanFr\  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   r+  rG  rd   rH  rI  rJ  rK  rL  rM  rN  rD  r   r   ZprogIdr  rV  r
  rf   rf   rg   Web_PlanDetails  sp    

$
F

r`  c                 C   sl  t  }z|| }|d }t| g }|d krt| jd}tj	ddj
|d ddddd	d
dddd	}| r|D ]}t|}|d |d< |d	 d krd|d< n|d	 |d< |d
 |d< |d |d< tjj
|d d }	|	 rt|	|d< nd|d< || qtd|dW S  tk
rf }
 z"td tdt|
i W Y S d }
~
X Y nX d S )Nrs   rt   ru   r   r  r  r  r  r"  r   r  r!  rx  r,  r   rR  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   r+  r  	userplansr
  rf   rf   rg   coachPlansList  sN    

      



rf  c              
   C   s   t  }z|| }|d }t| |d krt| jd}|d dkrNd}nd}tjj	|d d}|d |_
|  td	|d
W S tddd
W S W n@ tk
r } z"td tdt|i W Y S d }~X Y nX d S )Nrs   rt   r[   r   zPlan DeactivatedzPlan Activatedrw   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
  rf   rf   rg   deActivatePlan  s$    


rh  c           )   
   C   s  t  }i }d}t|}|rtd|d |}zL|| }|d }|d krftd|d d |d d	W S td
ddW S W n@ tk
r } z"td tdt	|i W Y S d }~X Y nX n|| }|d }t
jjdd}|j}	tjj|d}
g }g }g }g }g }d
}| jdkri }n| jdkr:t| jd}|dkr`tjjdddddd}ntjjdddddd}g }|D ]d}d}t|}||d  |d |d< |d d |d  |d< |d d |d  |d< |d d krd|d< d|d< d|d< n$|d |d< |d |d< |d |d< |dkrd |krh|d  d!krhtjj|d ddd" }ntjj|d ddd" }nNd |kr|d  d!krtjj|d ddd" }ntjj|d ddd" }| rg }g }g }|D ]h}t|}t|d#  t|d d$ ||d#  ||d  |D ]}||kr2||d  q2qtjj|d%d&d'jtd'd(}|D ]\}t|}g }i }g } i }!|D ]4}"|D ]$}#| |#d)  t| }$|$|!d*< qg } qi }%|D ]J}"|D ]:}#|"|#d& kr||#d)  t|}&|&||#d& < g }&qg }qt|d+ |D ]8}&|d |krd|d |&krl|!d* |d,< nd|d,< q6|d |d# krtjj|d d-d'  }'t|'|d d. ||' }t|d/ ||d,< t||d0< q||| qtjjddd1  t!d2d3 }(|f|d< |(|d< t"|| zN|| }|d }|d krftd|d d |d d	W S td
ddW S W nB tk
r } z"td tdt	|i W Y S d }~X Y nX d S )4NZgetcoachr#  r$  rs   Tcoachsr   dollar)r}   rU  r  Frf  r   r   r   r?   r   rq   rr   rt   r'  rs  r  r  r  r  r  r  r  rR  rS  r"  r  r  )ry   r   r  ry   Zgetcochsr  rw   r-  r  r  numberrS  downloaduserscountr  downloadusersdownloadcountrT  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"   rC  ))r   r   r  rE  rF  r   r   r
  r#  r  r,  r?  r  r  	inCoaches	otCoachesr8  cDatar  ri  rn  rV  r   r  ZplancreatedByrP  r   r  idsrQ  rR  rS  rH  r   rI  rd   rk  r  rT  rm  r;  rf   rf   rg   ionicgetcoachs  s   


*







"






rt  c              
   C   s   t  }z`|| }|d krTt| jd}tjj|d d}|j	}t
d|dW S t
dddW S W n@ tk
r } z"td	 t
d
t|i W Y S d }~X Y nX d S )Nrt   r  )r   T)r}   InstructionsFr   r   r   r   )r3   r   r   r   r   r   r   r   r   r7  rY   r   r9   r   r   )r   r   r   exDataexInfor  r
  rf   rf   rg   getExInstructions  s    

rx  c                 C   s   t j }tj }|D ]}t|}|d dks<|d d kr|d d}|D ]}t|}|D ]z}||d kr^tdd|d|d d|d	  tjj|d	 |d	 d
}	|		 rtd q^tjj
|d	 |d	 ddd}
|
  q^qNqtdddS )Nr/   r]   r  r  this Came Here For Testing-------r  PlanId------>rs   )r  rw   zExisting Goalsr   r  Trecords inserted successfullyr   )r@   r   r   r   r   r  r   rL   r   r   r   r   rY   )r   planPurposesrF  r  r  purposesValr   r   r2  existingPurposescreatePlanPurposesrf   rf   rg   insertPlanPurposes  s<    

     
r  c                 C   s   t j }tj }|D ]}t|}|d dks<|d d kr|d d}|D ]}t|}|D ]z}||d kr^tdd|d|d d|d  tjj|d |d d	}	|		 rtd
 q^tjj
|d |d ddd}
|
  q^qNqtdddS )Nr  r]   r  ry  rz  r  r{  rs   )r  rw   zExisting Abilitiesr   r  Tr|  r   )r@   r   r   r   r   r  r   rM   r   r   r   r   rY   )r   r}  r  r  r  r(  r   r   r2  existingAbilitiescreatePlanAbilitiesrf   rf   rg   insertPlanAbilities  s@    

     
r  c              
   C   s   t  }z|| }t| jd}|d krtd tjj	|d d}d|_
|  tjj|d d  }|rtjj	|d d}d	|_
|  tdd
dW S tdddW S W n@ tk
r } z"td tdt|i W Y S d }~X Y nX d S )Nrt   hererw   rd  Tr  rs   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
  rf   rf   rg   sendForReview;  s&    

r  c                 C   s4  t  }z|| }|d kr|d dkr|d dkrd| jkrb| jd dkrbt| jd }nt}d| jkr| jd dkrt| jd }nd}|d | }|| }tjddjdd	d
	ddddddddddddd}g }t
|}	| r||| }
|
D ]}t|}d	|d< |d d |d  |d< |d |d krV|d |d< d|d< nd|d< tjj|d d	  }|r|d |d< |d |d < nd	|d< d|d < || qtd!||	d"W S td#d$d%W S ntd#d&d%W S W nB tk
r. } z"td' td(t|i W Y S d }~X Y nX d S ))Nrt  r?   r  rowsr]   pagerv   r*   r   r[   planId__planStatusr  r[   planId_id__planNameplanId_id__pricerz   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   rr   r  r   rK   r   r   r   r   r   r   r   rQ   r  r   rY   r   r9   r   r   )r   r   r   r  r  r3  totr  r  r  r   r  proObjprocommentsr
  rf   rf   rg   programsTobeReviewedU  sr    

        



r  c              
   C   s   t  }zr|| }t| jd}|d krftd tjj	|d |d dd}|
  tddd	W S td
dd	W S W n@ tk
r } z"td tdt|i W Y S d }~X Y nX d S )Nrt   r&  rw   commentsr?   )rw   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
  rf   rf   rg   createPlanComments  s"    

r  c              
   C   s.  t  }z|| }t| jd}|d krtd d|kr|d dkrtjj	|d |d dd}|
  tjj|d d	}|d |_|
  td
ddW S tjj|d d	}|d |_|
  td
ddW S ntdddW S W nB tk
r( } z"td tdt|i W Y S d }~X Y nX d S )Nrt   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   r2  rY   r   r9   r   r   )r   r   r   r   r  exstatusr
  rf   rf   rg   createEXComments  s2    



r  c              
   C   s   t  }zn|| }t| jd}|d krbtd tjj	|d d
  }td|d dW S tdd	dW S W n@ tk
r } z"td
 tdt|i W Y S d }~X Y nX d S )Nrt   r&  rw   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
  rf   rf   rg   reviewsofplan  s    

r  c           
      C   sN  t  } z|| }|d krg }tjddjddddddd	d
dddddddddd}|D ]}t|}t|d
  |d
 dkrt	jj
|d
 d}|r|j|d
< |d	 dkrt	jj
|d	 d}|r|j|d	< nd|d	< || q^td|dW S tdddW S W nB tk
rH }	 z"td tdt|	i W Y S d }	~	X Y nX d S )Nrv   ru   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__planDescriptionry  Tr)  Fr   r   r   r   r3   r   rK   r   r   r   r   r   r   r   r   rz  r   rY   r   r9   r   r   
r   r   r   rA  r   r  r  iosPricevalindianiosPricevalr
  rf   rf   rg   getPlanPrices  sT    
           

r  c              
   C   s  t  }z|| }|d krt| jd}tjj|d d}t	jj|d d}|r^|j
|_nd|_t	jj|d d}|r|j
|_nd|_|d |_|d	 |_|  td
ddW S tdddW S W nB tk
r
 } z"td tdt|i W Y S d }~X Y nX d S )Nrt   r  r   r  )rz  r   r  r  r  Tz!Plan details updated successfullyr   Fr   r   r   )r3   r   r   r   r   r   r@   r   r   r   r  rx  rr  r}  r,  r   rY   r   r9   r   r   )r   r   r   r   r   r  r  r
  rf   rf   rg   updatePlanPrices  s,    





r  c           
      C   sN  t  } z|| }|d krg }tjddjdddddddd	d
ddddddddd}|D ]}t|}t|d	  |d	 dkrt	jj
|d	 d}|r|j|d	< |d dkrt	jj
|d d}|r|j|d< nd|d< || q^td|dW S tdddW S W nB tk
rH }	 z"td tdt|	i W Y S d }	~	X Y nX d S )Nrv   ru   r?   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   ry  Tr)  Fr   r   r   r   r  r  rf   rf   rg   getPublishedPlanPrices&  sT    
           

r  c           &      C   s  d}t jjdd}|j}t }g }d}d}tjj|d}|j}	|	dkrLd}|dkr^|d	7 }n|d
7 }|d7 }|| t	|}
|
D ]}t
|}|d d t|d  }t|d}t|d}|d |d< |d d |d  |d< |d d |d  |d< t|d dkr d|d< n<|dkrPt|d t| |d< |d |d< n|d |d< |d dkr|d|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rV|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r|dd  }|dd  }nd)}d)}|d- d. t| d/ d0 t| d/ |d-< |d1 d2ks,|d1 d3krttjj|d4 d}t|d- d5 tt|jd t|j  d6 |d-< nFt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< || qt 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  rs   r  r  r  r  r  r  r  r  r   r
  r}  rs  r  r  r}  r  r  r  r  r  r  r  r  r   r  r  r]   r  r   r  r   r  r  r  r  r  r  ry   r  r  r-  r  r  r7   r  r  r  r  r  r  r  r  )r}   r  r8  )!r   r   r   r  r   r  r   rs   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   r8  r#  r  r&  r%  r  r  r  r  r:  r   r   rX  rY  rZ  r  r  r  r  r  r  r  r  r  rF  r  r  rc  r  r  r  rJ  rK  rL  rM  rN  r  rf   rf   rg   storeK  s    	










 r  c           C      C   s  d}t jjdd}|j}g }g }t| jd}t }| j	dd }|rZ|
|d }	nd}	tjj|	d}
|
j}|d	kr~d
}tjjd	d }|D ]}t|}||d  qtjtd	d  }|D ]}t|}||d  q|d
krPt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/ }| rR|D ]}t|}q4|d0 |d0< nd1|d0< |d d2 |d  |d3< |d |d4< t|d d*krd5|d< n.|d
krt|d% t| |d< |d |d4< t jd6j|d d7d8}d9} |D ]}!t|!}"| d:|"d8  7 } q| d9kr&| dd  }#nd9}#t!jd;j|d d7d<}$d9}%|$D ]}!t|!}"|%d:|"d<  7 }%qP|%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rNt"jj|d d})t|d dC tt|)j#d2 t|)j$  dD |d< n|d  |d krt"jj|d  d}'|'j#d2 |'j$ }(|(|d=< t"jj|d  d}(t|d dC tt|(j#d2 t|(j$  dD |d< t%jj|d d7dE& ' }*t(jj|d dF }+d*},d}-|+D ]"}.t|.}/|,|/dG  },|-d }-q|,|- }0||d  |#|dH< |&|dI< |d |dJ< dK|dL< |*|dM< |t|* }|0|dN< |d |dO< |d |dP< |d |dQ< |dJ dRkrdS|dT< dU|dJ< n.|dJ dVkrdW|dT< n|dJ dXk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 ]N}7t|7}8t*jj|8d dd`' }9|9|8da< tjj|8d d/ }:|:D ]}t|};q|8db d k	r|8db |8dc< nd9|8dc< |7d |8dO< |7dd d2 |7de  |8d3< g }<tjj|8d dfd}=|=D ]}>t|>}?|<|?d  q<|<|8dg< t+jj|8d d/ }@|@ r|@D ].}At|A}B|Bdh dikrd|8dj< ndk|8dj< qnd|8dj< |6|8 q|t,d
||2|6|||dlS )mNFr?   r   rt   r  r  r  r  r   Tru  rw   r  r  ru   rs   r  r  r  r   r   r!  r+  r   ry   r  r"  r  r  r   r  r  r  rx  r,  rr  r}  r  rV  r  r  r   r  r  r  r  r6  r  r  r  r  rs  r
  r   r  r  r]   r  r   r  r  r  r  r  r  r  r  r  r-  r  r  r  r  r  r  r  r  r7   r  r-  r   r  r  r  r.  r  r  r  r  r  r/  r0  r1  r2  r  r3  r5  r  r7  r  r  r  r8  r  r  r9  r:  )r}   r   r   r;  r  r  r8  )-r   r   r   r  r   r   r   r   GeoIP2r  r  r   rs   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   r8  r#  r  r  r  r$  r
  r  r  r  r  r  r  r  r  r  r  r   r%  r  r<  r  r   r   rX  rY  rZ  r  rC  r  r  r  r  r  r  r  rF  r  r  r  r  r  rJ  rK  rL  rM  rN  r  r\  r=  r  r  r>  r?  r  r@  rA  rB  rD  rE  r  rF  r8  rG  rH  rI  rf   rf   rg   r8    s   
      






 





  r8  c                 C   s  g }t jjdd }|D ]}t|}|d }|d }|d d t|d  }t|d}t|	d}	|	d |d< d	}
d
}d}|}dt|d  }|d d |
 d | }|d d | d | }|d d | d | }|
||d |
||d |
||d qt|dkr|D ]}|d }|d }dd}d|i}ddi}tj|t||d}| }t|j tjj|d d}| rtd ntjj||d |d}|  q$tdddS tdd dS d S )!Nr?   r  rs   r  r  r  r  r  r  r  r  r  rf  r  r  r  r  r   r  r  re  r  r  r  r  r   r  TzResults Inserted Successfullyr)  Fz	Empty Set)r@   r   r   r   r   r   r  r   r!  r  r   r   r  r  r  r   r^  r   r  rN   r   r   r   rY   )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  rf   rf   rg   goo_shorten_url  sX    


r  c           :   
   C   sX  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r|d	7 }n|d
7 }|d dkr|d7 }nPtjj|d d }|D ]}t|}|t|d  q|dd| d 7 }t|d |	| t|	}tjjddd tdd }|jdkr|d dkrtjdjdddd tdd }t|t| }n:tjdjdddd tdd }t|t| }nt|d dkrtjdjdddd tdd }t|}n2tjdjdddd tdd }t|}g }g }|D ]}t|}t jj|d d }|! r|D ]H}t|}|d "d }|d! "d"}|d "d#}|d$ ||d% < q|t#jj|d dd&$ }t#jj|d dj%d'd(j%d)d*$ }||d+< ||d,< d%|d-< d%|d.< d)|d/< |d0 d1 t|d  }t&'|(d2}t|"d3} | d |d4< |d5 d6 |d7  |d8< |d5 d6 |d7  |d5< d9|kr|d9 d:kr|jdkr|d dkrtjdjdddd td;d< }|d= |d< |d |d>< nNtjdjddd?t)dd@  tdAdB }|dC |d< |d |d>< t*|d d%krdD|d< qD|d dkrtjdjdddd td;d< }t| t+jj|dE}!|!j,}t+j j|d= dE}"n`tjdjddd?t)dd@  tdAdB }t+jj|dE}!|!j,}t+j j|dC dE}"|"D ]}#t|#}$|$dF }%qP|%|d< t|d d%krDdD|d< nt*|d d%krdD|d< n|jdkr|d dkr"tjdjdddd tdd }t|| }t|dG t| |d< |d |d>< nftjdjddd?t)dd@  tdd }t|| }t|d t| |d< |d |d>< n|d dkrtjdjdddd tdd }|dG |d< |d |d>< nNtjdjddd?t)dd@  tdd }|d |d< |d |d>< t|d d%krDdD|d< |dH dIkrddJ|dH< dK|dL< n>|dH dMkrdN|dH< dO|dL< n|dH dPkrdQ|dH< dR|dL< 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rN|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 }-q|,d)kr|,dd  }.|,dd  }/nd)}.d)}/t1|.d[k	r|.d d[ }.|.d\7 }.t1|)d]k	rT|)d] dk	r2|)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^< nFt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
ql|4|5 }8|8|dk< |)|dl< |)|dm< |*|dn< |.|do< |/|dp< dq|dr< |2|ds< || qJt5d'||j||dtW S t5dudvdwW S W nB t6k
rR }9 z"t78dx t5dyt|9i W Y S d }9~9X Y nX d S )zNr  r?   r   rt   rs   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@   rm  r{  r|  r~  r  r  re  rf  r   rg  rh  ri  r   r  Tr  r]   r  r  r	  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rp  rq  rr  rs  rt  ru  rv  rw  rx  r
  ry  rz  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  ry   r  r  r-  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   rm   r   r  r!   r@   r  r  r"   r  rO   r   r   r  rN   r   r  r(   r  r  r  r   r!  r%   r  r   rz  r  r  rM   rL   r   r   r  r7   rY   r   r9   r   ):r   r   r   r  r#  r  requestJsonr  r%  r&  r+  r,  r  
categoriesr  r  r:  r;  r  r  r<  r=  r   r   r  r  r  r  rC  r  rX  rY  rZ  r  r  rz  r  r  r  r  r  r  r  r  rF  r  r  rc  r  r  r  rJ  rK  rL  rM  rN  r  r
  rf   rf   rg   filter_ability  s   





























 
 

r  c           ;   	   C   s  g }i }g }ddddddg}ddg}d	d
g}t  }|D ]x}tjj|d }|D ]}	t|	}
|t|
d  qT|D ]6}|D ]*}dt| d }|dkr|d7 }n(|g kr|d7 }n|dd	| d 7 }|
| t|}tjjddd tdd }|dkrDtjdjdddd tdd }t|}n2tjdjdddd tdd }t|}g }g }|D ]}t|}tjj|d d }| r|D ]H}	t|	}
|
d  d!}|d d"}|d d#}|
d$ ||d% < qtjj|d dd& }tjj|d djd'd(jd)d* }||d+< ||d,< t|d }t|d }||d-< ||d.< d%|d/< d%|d0< d)|d1< |d2 d3 t|d  }t|d4}t|d5} | d |d6< |d7 d8 |d9  |d:< |d7 d8 |d9  |d7< |d	kr|dkrptjdjdddd td;d< }t| tjj |d=}!|!j!}tj j|d> d=}"n`tjdjddd?t"dd@  tdAdB }tjj |d=}!|!j!}tj j|dC d=}"|"D ]}#t|#}$|$dD }%q|%|d< t#|d d%krdE|d< nt$|d d%kr,dE|d< n|dkrztjdjdddd tdd }|dF |d< |d |dG< nNtjdjddd?t"dd@  tdd }|d |d< |d |dG< t#|d d%krdE|d< |dH dIkrdJ|dH< dK|dL< n>|dH dMkr"dN|dH< dO|dL< n|dH dPkr@dQ|dH< dR|dL< t%jj |dS dT}&t|&j&d8 t|&j' |dU< t(jdVj|d ddW}'d)}(d)})|'D ].}	t|	}
|(dX|
dW  7 }(|)dX|
dW  7 })q|(d)kr|(dd  }*|(dd  }+nd)}*d)}+t)jdYj|d ddZ},d)}-d)}.|,D ].}	t|	}
|-dX|
dZ  7 }-|.dX|
dZ  7 }.q|-d)krr|-dd  }/|-dd  }0nd)}/d)}0t*|/d[kr|/d d[ }/|/d\7 }/t*|*d]kr|*d] dkr|*d d[ }*n"|*d d] }*|*d}*|*d% d\ }*|d^ d_ t|+ d` da t|/ d` |d^< |db dcks0|db ddkrxt%jj |de dT}1t|d^ df tt|1j&d8 t|1j'  dg |d^< nFt%jj |dS dT}2t|d^ df tt|2j&d8 t|2j'  dg |d^< t+jj|d ddh,  }3t-jj|d di }4d%}5d}6|4D ]"}7t|7}8|5|8dj  }5|6d }6q |5|6 }9|9|dk< |*|dl< |*|dm< |+|dn< |/|do< |0|dp< dq|dr< |3|ds< t|dt t| dt | }:|||:< ||du< ||dv< q|| qqxq8t.d'|dwS )xNr?   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@   rm  r{  r|  r~  r  rs   r  re  rf  rg  rh  ri  r   r  Tr  r]   r  r  r	  rB  rj  r  r  r  r  r  r  r  r  r  r  r  r  rp  rq  ry  rr  rt  ru  rv  rw  rx  rz  r
  r}  rs  r  r  r}  r  r  r  r~  r  r  r  r  r  r   r  r   r  r  r   r  r  r  r  r   r  r  r  r  r  r  ry   r  r  r-  r  r  r7   r  r  r  r  r  r  r  r  _r  r  )r}   r  )/r   r  rV   r   r   r   r   r   r   rm   r  r!   r@   r  r  r"   rO   r   r   rN   r   r  r(   r  r  r  r  r  r   r!  r   r   r   rz  r%   r  r  r*   r  r  rM   rL   r   r   r  r7   rY   );r   abilitiesArrmairArrr%  r  r  deviceTypeArrr&  catr  r  ctdevTr  r:  r;  r  r  r<  r=  r   r   r  r  r  r  rC  r  r  r  rX  rY  rZ  r  r  rz  r  r  r  r  r  r  r  r  r  rF  r  r  rc  r  r  r  rJ  rK  rL  rM  rN  r  catNamerf   rf   rg   loadCategoryFilter  s"   





 























r  c              
   C   s.  t  }z|| }|d krt }|d dkr|d dkrd| jkrj| jd dkrjt| jd }nt}d| jkr| jd dkrt| jd }nd}|d | }|| }d}|| t|}	g }
t	|	}|	r|	|| }|D ]}g }t
|}tjj|d d	 }| r4|D ]}t
|}|| q||d
< |d dkrx|d dkr|d d krd|d  |d< n,|d dkr|d d krd|d  |d< |
| qtd|
|dW S tdddW S ntdddW S W nB tk
r( } z"td tdt|i W Y S d }~X Y nX d S )Nrt  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__youtubeUrlr8   https://www.youtube.com/watch?v=&https://s3.amazonaws.com/stratfitmediaTr  Fr  r   r   r   r   )r3   r   r   r  rr   r  r   r  r!   r   r   rU   r   r   r   r   r   rY   r   r9   r   r   )r   r   r   r&  r  r  r3  r  r  r  r  r  r   r  metValuesArrr  
metaValuesmetValmetaObjr
  rf   rf   rg   exerciseTobeReviewed  s\    





r  c              
   C   s   t  }|| }z|dkr|d }g }g }tjj|dd }|D ]}t|}||d  qFt	jj|ddd}	|	D ]}
t|
}|| q|t
d|dW S t
d	d
dW S W n@ tk
r } z"td t
dt|i W Y S d }~X Y nX d S )Nr]   rs   r6  r   r  r   Tr)  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
  rf   rf   rg   getuserExDetails  s(    

r  c              
   C   s   t  }|| }z|dkr|d }g }g }tjj|dd }|D ]}t|}||d  qFt	jj|ddd}	|	D ]}
t|
}|| q|t
d|dW S t
d	d
dW S W n@ tk
r } z"td t
dt|i W Y S d }~X Y nX d S )Nr]   rs   r6  r+  r  r  Tr)  Fr   r   r   r   )r3   r   r  r   r   r   r  r   r   r@   rY   r   r9   r   r   r  rf   rf   rg   getuserPlans:  s(    

r  c                 C   s  t  }z|| }|d }|d krtjdj|dddddddd	d
ddddddddddddddd}g }g }g }|D ]:}t|}	|	d |	d< tjj|	d d }
|
D ]}t|}||	d< |d |	d< |d |	d< |d |	d< |d  |	d < |d! |	d!< |d" |	d"< |	d d#krH|	d d$krp|	d d krpd%|	d  |	d< q|	d d$kr|	d d krd&|	d  |	d< q|	d d#kr|	|	 |	d d'kr|	|	 |	d d(kr||	|	 q|t
|||d)W S W nB tk
r } z"td* t
d+t|i W Y S d }~X Y nX d S ),Nrs   r   r  r   r2  r7  r3  r8  exerciseTypeexIconpreExInstructionspostExInstructionsr  weightExistsdistanceExists
timeExists
repsExistsr  setInstructionsheightExistsspeedExiststimeShortestr6  r4  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
  rf   rf   rg   getDraftedExsV  s|    

  





r  c                 C   sj  t  }z|| }t| jd}|d }|d kr tjj|d d}|j	d kr|j	dkrtjj|j	d}|j
dkrtddd	W S td
 tjj|j|j|jd|j|j|j|j|j|j|j|j|j||j|j|j|j|j|j|j |j!|j"||d}|#  |j$|_%|j$|_	|#  t&jj'|j$d( }|D ]0}	t)|	}
t&jj|
d |j$||d}|#  q0t*jj'|j$d( }|D ]0}t)|}t*jj|d |j$||d}|#  qzt+jj'|j$d( , }t+jj|j$|d |d d||d}|#  t-jj|j$ddd|dd}|#  tddd	W S W nB t.k
rd } z"t/0d tdt1|i W Y S d }~X Y nX d S )Nrt   rs   rw   r   r]   r   FzCopied plan not published yet.r   zNew plan copy)r  r  r   r   r-  r  r  r  r   r/   r  r   r  r  r  proposedStater  r  rx  r}  rr  r,  r  ry   r[  r  r  r  r  r  r  r{   r  )rz   r{   r  r[   ry   r[  r  r?   r  r  TzPlan copied.r   r   )2r3   r   r   r   r   r   r@   r   r   copyPlan_idr   rY   r   r   r  r  r   r-  r  r  r  r   r/   r  r   r  r  r  r  r  rx  r}  rr  r,  r  r   rs   r  rL   r   r   r   rM   rK   r  r6   r   r9   r   r   )r   r   r   r   r   r<  existingplanplanCopyr  r  r  	goalscopyplanAbilitesobjdictValabilitiescopydraftedPlanDetailsdraftplancopyplanMonetizationr
  rf   rf   rg   plancopy  s    


	
r  c                 C   s   t  }z|| }|d krg }tjddjdddddddd	d
ddddddddddddddddd}|D ]}t|}|| qlt	d|dW S t	dddW S W n@ t
k
r } z"td  t	d!t|i W Y S d }~X Y nX d S )"Nr_  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__videoLinkr)  Fr   r   r   r   )r3   r   r   r   r   r   r   r   r   rY   r   r9   r   r   )r   r   r   rA  advExDetailsr  r  r
  rf   rf   rg   getAllAdvEx  sP    
                 
r"  c                 C   s   | j }|d }i }i }g }i }i }|rtjj|d }|d d  D ]}	tjj|	d d }
|
d d  D ]h}|	d |	d |	d |	d |	d	 |	d
 |	d |	d |	d |	d |	d |	d |	d |d d}|| qjd|i}qD||d< nd|d< t|S )Nrs   r  r  r   r  r   r  r  r  r   r/   r  r}  rr  r,  r  r|  )r  r   r  r  r  r   r/   r  r}  rr  r,  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  plan1r+  r  rh  r  rf   rf   rg   getAllPlans  s$    Z

r%  )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   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[   rj   r`   rp   r  r"  rQ  rX  rb  ro  rr  r  r  r  r  r  r  rd  r  r  r  r  r  r   r*  rJ  rL  rU  r  r  r1  r?  ra  rU  rx  ry  rz  r  r  r	  r  r  r  r$  r'  r{   r   rQ  rW  r_  r`  rf  rh  rt  rx  r  r  r  r  r  r  r  r  r  r  r  r8  r  r  r  r  r  r  r  r  r"  r%  rf   rf   rf   rg   <module>   s  8  h


 X
^

f

(

/

"
;





   s

   9

P

  <

 

6



 





      2

    

 |

 w(

+







     ''

,





C

$
.

]





"

?

!



 W







9







$



"  X6

  ! l

5





>

^



