
    
Ug0                       d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 ddl
T 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lmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlZd dl Z d dl!Z!d dl"Z"d dl#m$Z$ d dl%Z%d dl&m'Z' d dl(Z(d dl)Z)d dl*m+Z+ d dl,m-Z- ddl.T d dl/m0Z0 d dl1m2Z2m3Z3m4Z4m5Z5 d dl6T d dl7T ddl8T d dl9m:Z: d dl;m<Z< d d	lmZ d dl=Z=d dl>m?Z?m@Z@mAZA d dl;m<Z< d dlBmCZC d dlDZDd dlEmFZF d dlGmHZH d dlImJZJ d dlmZ d dl)Z) eHd           eD_K        ejL        ZMejN        ZOejP        ZQejR        ZSejT        ZUejV        ZW e<eMeO          ZXd! ZYd" ZZ G d# d$e          Z[ G d% d&e          Z\ G d' d(e          Z] G d) d*e          Z^ G d+ d,e          Z_ G d- d.e          Z` G d/ d0e          Za G d1 d2e          Zb G d3 d4e          Zc G d5 d6e          Zd G d7 d8e          Ze G d9 d:e          Zf G d; d<e          Zg G d= d>e          Zh G d? d@e          Zi G dA dBe          Zj G dC dDe          Zk G dE dFe          Zl G dG dHe          Zm G dI dJe          Zn G dK dLe          Zo G dM dNe          Zp G dO dPe          Zq G dQ dRe          Zr G dS dTe          Zs G dU dVe          Zt G dW dXe          Zu G dY dZe          Zv G d[ d\e          Zw G d] d^e          Zx G d_ d`e          Zy G da dbe          Zz G dc dde          Z{ G de dfe          Z| G dg dhe          Z} G di dje          Z~ G dk dle          Z G dm dne          Z G do dpe          Z G dq dre          Z G ds dte          Z G du dve          Z G dw dxe          Z G dy dze          Z G d{ d|e          Z G d} d~e          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G dÄ de          Z G dń de          Z G dǄ de          Z G dɄ de          Z G d˄ de          Z G d̈́ de          ZdS )    )message)render)APIView)Responsestatus   )*)datetime	timedeltadate)settings)authenticated)User)RefreshToken)django_pbkdf2_sha256)render_to_string)mail)EmailMultiAlternativesN)messages)FileSystemStorage)Q)FCMNotification)TemplateView)ContentManagementOnBoardingDataAdminNotificationsExercisetimer)	timesince)Client)	SyncGrant	ChatGrant
VideoGrant)AccessToken)	messaging)config)timezone)r   STRIPE_API_KEYc                     t          j        t          j        ||          |           }t          j        |          }|S )N)titlebody)notificationtoken)r%   MessageNotificationsend)registration_idr*   r+   r   responses        4/var/www/html/Alfredo_demo/alfredo/user_app/views.pysend_push_notificationr4   9   sO    %	   	   N7##    c                  .   t           j                                                                        } | rb| j        sdS | j        }|dd          }t          |          dz   }t          |          }|                    d          }dt          |          z   S dS )NTRANS000001   r	   TRANS)UserTranscationsobjectsalllasttranscation_idintstrzfill)lastObjtheIds     r3   generateTranscationsIdrD   D   s    

"
&
&
(
(
-
-
/
/ 		 
-%abb	%E

1%E

%A%	U		r5   c                       e Zd Zd ZdS )Registerc           	         	 |j         }|                    d          }|                    d          }|                                }|                    d          }|                    d          }|                    d          }|                    d          }|r|r|st          ddit          j        	          S t          j        |          }	t          j	        
                    |d
                                          }
|
rt          ddit          j        	          S t          j        ddd          }t          j	                            |||	||||          }
||
_        |
                                 d}t%          dd|i          }|}t&          j        }t+          |           |}	 t-          j        ||||g|           nC# t0          $ r6}t+          |           t          ddit          j        	          cY d }~S d }~ww xY wt          ddi          S # t0          $ r4}t          dt5          |          it          j        	          cY d }~S d }~ww xY w)N	full_nameemailpasswordaddresslatitude	longituder   $All required fields must be providedr   TrI   end_date__isnullzThe email is already registered  '  r8   )rH   rI   rJ   otprK   rL   rM   Verify Accountemail_verification.htmlrS   html_messageYour account has been created, but we encountered an issue sending the verification email. Please contact support for assistance.HYou have been successfully registered with us. Please verify your email.)datagetlowerr   r   HTTP_400_BAD_REQUESThandlerhashAppUserr;   filterfirstHTTP_409_CONFLICTrandom	randrangecreaterS   saver   r   EMAIL_HOST_USERprintr   	send_mail	ExceptionHTTP_500_INTERNAL_SERVER_ERRORr@   )selfrequestrZ   rH   rI   rJ   rK   rL   rM   new_passwordapp_user_objthe_otpsubjectrW   plain_message
from_emailtoemail_errores                      r3   postzRegister.postT   s   :V
,4xx$$988G5	5hhz""888I7HHZ  8xx$$9  my m mY FGPVPkllll ,x((< /((ud(KKQQSS< UY AB6KcddddT4++G?))	 *  L LG#$=w?OPPL M)J	*	BU	^G]J<XXXXX U U U
;i  "e  f  ou  oT  U  U  U  U  U  U  U  U  UU Iij
k
kk	 V V V
Is1vv&v/T
U
U
UUUUUUUVs\   B;H >A%H $B
H /G
 	H 

H
+H?H
 H H

H 
I()IIIN__name__
__module____qualname__rx    r5   r3   rF   rF   S   (        ;V ;V ;V ;V ;Vr5   rF   c                       e Zd Zd ZdS )UserResendEmailOtpc                 2   	 |j         }|                    d          }|                                }|st          ddit          j                  S t          j                            |          	                                }|st          ddit          j
                  S t          j        ddd	          }||_        |                                 d
}t          dd|i          }|}t           j        }	|}
	 t%          j        |||	|
g|           n4# t(          $ r'}t          ddit          j                  cY d }~S d }~ww xY wt          ddi          S # t(          $ r4}t          dt-          |          it          j                  cY d }~S d }~ww xY w)NrI   r   rN   r   rI   zEmail not foundrQ   rR   r8   rT   rU   rS   rV   rX   rY   )rZ   r[   r\   r   r   r]   r`   r;   ra   r=   rc   rd   re   rS   rg   r   r   rh   r   rj   rk   rl   r@   rm   rn   rZ   rI   rp   rq   rr   rW   rs   rt   ru   rv   rw   s                r3   rx   zUserResendEmailOtp.post   s   (V
,488G5	5  mY FGPVPkllll /((u(55::<<<
 UY 126;STTTTT4++GL
 G#$=w?OPPL M)J	BU	^G]J<XXXXX U U Ui  "e  f  ou  oT  U  U  U  U  U  U  U  U  UU Iij
k
kk	 V V V
Is1vv&v/T
U
U
UUUUUUUVs\   AE AE "AE 8D E 
ED?9E:E ?EE 
F")FFFNry   r}   r5   r3   r   r      s(        )V )V )V )V )Vr5   r   c                       e Zd Zd ZdS )SocialLoginc                 N   	 t          d           |j        }|                    d          }|                    d          }|                    d          }|                    d          }|                    d          }t          |           |st          ddit          j        	          S |st          dd
it          j        	          S |st          ddit          j        	          S |st          ddit          j        	          S |st          ddit          j        	          S t          j                            |d          	                                }|s$t          j        
                    |||||          }t          j        |          }	|j        |j        |j        |j        t#          |	          t#          |	j                  d}
t          d|
d          S # t&          $ r4}t          dt#          |          it          j        	          cY d }~S d }~ww xY w)Nz	in socialprovider_idrI   rH   device_type	fcm_tokenr   zprovider_id is required.r   full_name is requiredemail is requiredzdevice_type is requiredzfcm_token is requiredT)r   rP   )rH   r   rI   r   r   idrH   rI   is_profile_completedrefreshaccessSuccessr   rZ   )ri   rZ   r[   r   r   r]   r`   r;   ra   rb   rf   r   for_userr   rH   rI   r   r@   access_tokenrk   rl   )rm   rn   rZ   r   rI   rH   r   r   rp   refresh_tokenallDatarw   s               r3   rx   zSocialLogin.post   sO   ,V
,4-((;88G5xx$$9-((;xx$$9
 aY :;FD_````
 ^Y 78A\]]]]
 ZY 34V=XYYYY  `Y 9:6C^____
 ^Y 78A\]]]] /(([RV(WW]]__<
 X?))IU{Y * X XL  (66='(=M""=-..	 	7 y'::
;
;;	 V V V
Is1vv&v/T
U
U
UUUUUUUVs=   B,G& /G& G& -G& G& +B:G& &
H$0)HH$H$Nry   r}   r5   r3   r   r      (        -V -V -V -V -Vr5   r   c                       e Zd Zd ZdS )OtpVerificationc                    	 |j         }|                    d          }|                    d          }|                    d          }|st          ddit          j                  S |st          ddit          j                  S 	 t
          j                            ||          }n5# t          $ r(}t          d	i d
t          j                  cY d }~S d }~ww xY wd|_        ||_	        |
                                 t          j        |          }|j        |j        |j        |j        t#          |          t#          |j                  d}	t&          j                            d|j        z   dz   d           t          d|	d
          S # t          $ r4}t          dt#          |          it          j                  cY d }~S d }~ww xY w)NrI   rS   r   r   r   r   otp is requiredrI   rS   Invalid otpr   Tr   zA new user z* has been registered successfully with us.user_registeredr   typer   )rZ   r[   r   r   r]   r`   r;   rk   email_verifiedr   rg   r   r   r   rH   rI   r   r@   r   r   rf   rl   )
rm   rn   rZ   rI   rS   r   rp   rw   r   r   s
             r3   rx   zOtpVerification.post   s   T488G5	%3xx$$9
 XY236;VWWWW
 VY019TUUUU\?&&Us&;;LL
 \ \ \}B77v?Z[[[[[[[[[\!%<%<(66=&'<=!!-,-- 7 $$}l>T/T  WC  0C  K\$  ]  ]  ]
iw77
8
88	 T T T
Ic!ff%V-R
S
S
SSSSSSSTsU   A$F 'F !B) (F )
C3CCF CB2F 
G)GGGNry   r}   r5   r3   r   r      s(        T T T T Tr5   r   c                       e Zd Zd ZdS )RestoreAccountc                 h   	 |j         }|                    d          }|                                }|st          ddit          j                  S t          j                            |d          	                                }|rt          ddit          j
                  S t          j        dd	d
          }t          j                            |                              |          }d}t          dd|i          }|}t          j        }	|}
	 t#          j        |||	|
g|           n4# t&          $ r'}t          ddit          j                  cY d }~S d }~ww xY wt          d|d          S # t&          $ r4}t          dt+          |          it          j                  cY d }~S d }~ww xY w)NrI   r   zEmail must be providedr   TrO   zThe email is already workingrQ   rR   r8   r   )rS   rT   rU   rS   rV   z^We encountered an issue sending the verification email. Please contact support for assistance.zOtp sent successsfully)r   rS   )rZ   r[   r\   r   r   r]   r`   r;   ra   rb   rc   rd   re   updater   r   rh   r   rj   rk   rl   r@   r   s                r3   rx   zRestoreAccount.post  s   ,V
,488G5	5  _Y 89&B]^^^^
 /((ud(KKQQSS< rY >?H`aaaaT4++G?)))66==	 >  L G#$=w?OPPL M)J	Br	^G]J<XXXXX r r ri  "B  C  LR  Lq  r  r  r  r  r  r  r  r  rr 7gFF
G
GG	 V V V
Is1vv&v/T
U
U
UUUUUUUVs\   AE3 AE3 #A.E3 D- ,E3 -
E7EEE3 EE3 3
F1=)F,&F1,F1Nry   r}   r5   r3   r   r     r   r5   r   c                       e Zd Zd ZdS )RestoreAccountOtpVerificationc                    	 |j         }|                    d          }|                    d          }|st          ddit          j                  S |st          ddit          j                  S 	 t
          j                            ||          }n5# t          $ r(}t          di d	t          j                  cY d }~S d }~ww xY wd |_        |	                                 t          j                            d
|j        z   dz   d           t          ddi          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)NrI   rS   r   r   r   r   r   r   r   zThe account with z has been restored successfullyuser_restoredr   r   )rZ   r[   r   r   r]   r`   r;   rk   end_daterg   r   rf   rH   r@   rl   rm   rn   rZ   rI   rS   rp   rw   s          r3   rx   z"RestoreAccountOtpVerification.postA  s   T488G5	%3
 XY236;VWWWW
 VY019TUUUU\?&&Us&;;LL
 \ \ \}B77v?Z[[[[[[[[[\ <$$/BLDZ/Z\}/}  FU$  V  V  V
Ii(
)
))	 T T T
Ic!ff%V-R
S
S
SSSSSSSTsU   AD! D! 2!B D! 
CC;C<D! CAD! !
E+)EEENry   r}   r5   r3   r   r   @  s(        T T T T Tr5   r   c                       e Zd Zd ZdS )	LoginUserc                 J   	 |j         }|                    d          }|                                }|                    d          }|                    d          }|                    d          }|st          ddit          j                  S |st          ddit          j                  S t          j                            |          	                                }|d	k    rt          dd
it          j
                  S t          j                            |dd                                          }|st          ddit          j                  S |j        }	t          j        ||	          }
|
rQ|j        dk    rt#          j        ddd          }||_        |                                 d}t+          dd|i          }|}t,          j        }|}	 t1          j        ||||g|           n4# t4          $ r'}t          ddit          j                  cY d }~S d }~ww xY wt          ddit          j                  S ||_        ||_        |                                 t=          j        |          }|j         |j!        |j"        |j#        tI          |          tI          |j%                  d}t          d|d          S t          ddit          j                  S # t4          $ r4}t          dtI          |          it          j                  cY d }~S d }~ww xY w)NrI   rJ   r   
deviceTyper   zInvalid credentialsr   r   r   z:This email does not exist in our database, please registerT)rI   r   rP   z=Your account has not been activated, Please contact to admin.FrQ   rR   r8   rT   rU   rS   rV   >Failed to send the verification email. Please try again later.zPlease verify your email firstr   zLogin Successfullyr   zInvalid password)&rZ   r[   r\   r   r   r]   r`   r;   ra   countHTTP_404_NOT_FOUNDrb   HTTP_401_UNAUTHORIZEDrJ   r^   verifyr   rd   re   rS   rg   r   r   rh   r   rj   rk   rl   r   r   r   r   r   rH   rI   r   r@   r   )rm   rn   rZ   rI   rJ   r   r   userrp   check_passwordcheckrq   rr   rW   rs   rt   ru   rv   r   r   rw   s                        r3   rx   zLoginUser.postY  s   6T
,488G5	5hhz""8xx$$9,'';
 ZY45V=XYYYY
 ZY45V=XYYYY?!!!..44664
aiiY[\djd}~~~~?))TSW)XX^^``<
 EY^_gm  hD  E  E  E  E )>>(>225  X"e++dD!,,W\W$%>@PQQ\!]*Z
RS
nWmZ"LYYYYY S S Sy"bclr  mR  S  S  S  S  S  S  S  S  SS i @AIdeeee&L*L ),77M/'(=M""=-..	 	G 37CCDDDY12&:VWWWW	 T T T
Ic!ff%V-R
S
S
SSSSSSSTsv   BK$ K$ /AK$ AK$ A?K$ G2 1K$ 2
H#<HH#K$ H##K$ BK$ K$ $
L".)LL"L"Nry   r}   r5   r3   r   r   X  s(        7T 7T 7T 7T 7Tr5   r   c                       e Zd Zd ZdS )ForgetPasswordc                    	 |j         }|                    d          }|st          ddi          S t          j                            |d                                          }|dk    rt          ddit          j                  S t          j                            |d          	                                }|rt          j        d	d
d          }||_        |                                 d}t          dd|i          }|}	t          j        }
|}	 t#          j        ||	|
|g|           n4# t&          $ r'}t          ddit          j                  cY d }~S d }~ww xY wt          ddi          S t          ddi          S # t&          $ rC}t+          |           t          dt-          |          it          j                  cY d }~S d }~ww xY w)NrI   r   zEmail is requiredTrO   r   zPThis email does not exist in our database, please enter the valid email address.r   rQ   rR   r8   zForgot Passwordzforget_password_email.htmlrS   rV   r   z7Reset password otp has been sent to your email address.zEmail not exists)rZ   r[   r   r`   r;   ra   r   r   r   rb   rd   re   rS   rg   r   r   rh   r   rj   rk   rl   ri   r@   )rm   rn   rZ   rI   r   rp   rq   rr   rW   rs   rt   ru   rv   rw   s                 r3   rx   zForgetPassword.post  s@   U<DHHWE 6i 34555O"""EEKKMMDqyyi rs  |B  |U  V  V  V  VO***MMSSUUL 5dD!,,W\ W$%AE7CSTT\!]*Z
RS
nWmZ"LYYYYY S S Sy"bclr  mR  S  S  S  S  S  S  S  S  SS i YZ[[[i 23444
 U U U	!HHHYs1vv&f.STTTTTTTTTUs`   .F AF B
F D- ,F -
E7EEF EF 2F 
G8GGGNry   r}   r5   r3   r   r     s(         U  U  U  U  Ur5   r   c                       e Zd Zd ZdS )ForgetPasswordVerificationc                 .   	 |j         }|                    d          }|                    d          }|st          ddit          j                  S |st          ddit          j                  S t
          j                            |d|                                          }|st          d	i d
t          j                  S t          ddi          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)NrI   rS   r   r   r   r   T)rI   rP   rS   r   r   r   )rZ   r[   r   r   r]   r`   r;   ra   rb   rk   r@   rl   r   s          r3   rx   zForgetPasswordVerification.post  s.   T488G5	%3
 XY236;VWWWW
 VY019TUUUU/((uds(SSYY[[<
 \}B77v?Z[[[[
Ii(
)
))	 T T T
Ic!ff%V-R
S
S
SSSSSSSTs1   AC C 1AC C 
D )D	DDNry   r}   r5   r3   r   r     s(        T T T T Tr5   r   c                       e Zd Zd ZdS )SetForgetPasswordc                    	 |j         }|                    d          }|                    d          }|                    d          }|st          ddit          j                  S |st          ddit          j                  S |st          ddit          j                  S t
          j                            ||	                                          }t          j
        |          }|r3||_        d |_        |                                 t          dd
i          S t          ddit          j                  S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)NrI   ro   rS   r   znew_password is requiredr   r   r   r   r   zSomething went wrong)rZ   r[   r   r   r]   r`   r;   ra   rb   r^   r_   rJ   rS   rg   rk   r@   rl   )	rm   rn   rZ   rI   ro   rS   rp   encrypt_passwordrw   s	            r3   rx   zSetForgetPassword.post  s   T488G5((>**<	%3
 _Y9:&B]^^^^
 XY236;VWWWW
 VY019TUUUU/((u(==CCEE<l<00 [,LLYy)***Y56f>YZZZZ	 T T T
Ic!ff%V-R
S
S
SSSSSSSTs7   A$D> 'D> D> %A;D> !D> >
E<)E71E<7E<Nry   r}   r5   r3   r   r     s(        T T T T Tr5   r   c                       e Zd Zd ZdS )CompleteProfilec                    	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j        }|                    d          }|                    d          }|                    d          }|                    d          }	|                    d	          }
|                    d
          }|                    d          }|                    d          }|                    d          }|                    d          }|                    d          }|                    d          }|                    d          }|                    d          }|st          ddit          j                  S |st          ddit          j                  S |st          ddit          j                  S |	st          ddit          j                  S |
st          ddit          j                  S |st          ddit          j                  S |st          ddit          j                  S |st          ddit          j                  S |st          ddit          j                  S |st          ddit          j                  S |st          ddit          j                  S |st          ddit          j                  S |st          ddit          j                  S |st          dd it          j                  S ||_        ||_        ||_        |	|_        |
|_        ||_        ||_        ||_        ||_        ||_        ||_        ||_        ||_        ||_        d!|_        |                                 t          dd"i          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)#Nr   r   r   user not foundrH   genderagecurrent_weighttarget_weightweight_unitcurrent_heightheight_unit
focus_area	main_goalcurrent_body_shapefitness_levelmedical_conditionallergies_exclusionsr   gender is requiredage is requiredcurrent_weight is requiredtarget_weight is requiredweight_unit is requiredcurrent_height is requiredheight_unit is requiredfocus_area is requiredmain_goal is requiredcurrent_body_shape is requiredfitness_level is requiredmedical_condition is required allergies_exclusions is requiredTr   )r   rk   r   r@   r   r   r`   r;   ra   rb   r   rZ   r[   r]   rH   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rg   rl   )rm   rn   uidrw   rp   rZ   rH   r   r   r   r   r   r   r   r   r   r   r   r   r   s                       r3   rx   zCompleteProfile.post  s   OVN

 
 CC
 N N NYA'0LMMMMMMMMMN /((C(006688<
 UY 01&:STTTT
,4xx$$9HHX6	%3HH-..>88O,,=-((;HH-..>-((;&&:xx$$9!56688O,,=xx 344((#9::  ^Y 78A\]]]]
 [Y 45f>YZZZZ
 XY 126;VWWWW
 cY <=fFabbbb
 bY ;<VE`aaaa
 `Y 9:6C^____
 cY <=fFabbbb
 `Y 9:6C^____
 _Y 89&B]^^^^
 ^Y 78A\]]]]
 gY @A&Jeffff
 bY ;<VE`aaaa
 fY ?@Ideeee
 iY BCFLghhhh%<<<!/< -<)<!/<)<'<%<%7<" -<$5<!';<$'+<$
Iy)
*
**	 V V V
Is1vv&v/T
U
U
UUUUUUUVs    P 
A)AAP AAP %EP 1P P /P P -P P +P 
P )P P 'P P %P BP 
Q)QQQNry   r}   r5   r3   r   r     s-        PV PV PV PV PVr5   r   c                       e Zd Zd ZdS )GetCompleteProfileDatac                    	 t           j                            dd          }t           j                            dd          }t           j                            dd          }t          |d          j        }t          |d          j        }t          |d          j        }ddd	d
dd	ddd	g}d||||d}	t          |	          S # t          $ r4}
t          dt          |
          it          j	                  cY d }
~
S d }
~
ww xY w)N
main_goalsT)screen_typerP   medical_conditionsallergy_exclusionmanyr	   Beginner)r   r*      Intermediate   Advancer   )r   r   r   r   	allergiesr   r   )
r   r;   ra   OnBoardingSerializerrZ   r   rk   r@   r   rl   )rm   rn   r   r   r   main_goals_datamedical_conditions_dataallergies_datafitness_levels_dataresponse_datarw   s              r3   r[   zGetCompleteProfileData.get=  sK   V&--,X\-]]:&.55BVhl5mm%,,9L^b,cc9)*4@@@E?12D4PPPU(>>>C> z""~&&y!! !(0 = =
!
!!	 V V V
Is1vv&v/T
U
U
UUUUUUUVs   C	C 
D
)D?D
D
Nrz   r{   r|   r[   r}   r5   r3   r   r   <  s(        V V V V Vr5   r   c                       e Zd Zd ZdS )
GetProfilec                    	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S t          |          j        }t          d|d          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r   r   r   )r   rk   r   r@   r   r   r`   r;   ra   rb   r   AppUserSerializerrZ   rl   )rm   rn   r   rw   rp   r   s         r3   r[   zGetProfile.get_  s2   TN

 
 CC
 N N NYA'0LMMMMMMMMMN/((C(006688<
 UY 01&:STTTT\**/7
iw77
8
88	 T T T
Ic!ff%V-R
S
S
SSSSSSSTsJ    C 
A)AAC AAC %%C 
D	)D>D	D	Nr   r}   r5   r3   r   r   ^  s(        T T T T Tr5   r   c                       e Zd Zd ZdS )EditProfilec                    	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j        }|                    d          }|                    d          }|                    d          }|                    d          }	|                    d	          }
|                    d
          }|                    d          }|                    d          }|                    d          }|                    d          }|                    d          }|                    d          }|                    d          }|                    d          }|                    d          }|st          ddit          j                  S |st          ddit          j                  S |st          ddit          j                  S |	st          ddit          j                  S |
st          ddit          j                  S |st          ddit          j                  S |st          ddit          j                  S |st          ddit          j                  S |st          ddit          j                  S |st          ddit          j                  S |st          ddit          j                  S |st          ddit          j                  S |st          dd it          j                  S |st          dd!it          j                  S ||_        ||_        ||_        |	|_        |
|_        ||_        ||_        ||_        ||_        ||_        ||_        ||_        ||_        ||_        |r||_        |                                 t          dd"i          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)#Nr   r   r   r   rH   r   r   r   r   r   r   r   r   r   r   r   r   r   imager   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   rk   r   r@   r   r   r`   r;   ra   rb   r   rZ   r[   r]   rH   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rg   rl   )rm   rn   r   rw   rp   rZ   rH   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s                        r3   rx   zEditProfile.postp  s   QVN

 
 CC
 N N NYA'0LMMMMMMMMMN /((C(006688<
 UY 01&:STTTT
,4xx$$9HHX6	%3HH-..>88O,,=-((;HH-..>-((;&&:xx$$9!56688O,,=xx 344((#9::88G5  ^Y 78A\]]]]
 [Y 45f>YZZZZ
 XY 126;VWWWW
 cY <=fFabbbb
 bY ;<VE`aaaa
 `Y 9:6C^____
 cY <=fFabbbb
 `Y 9:6C^____
 _Y 89&B]^^^^
 ^Y 78A\]]]]
 gY @A&Jeffff
 bY ;<VE`aaaa
 fY ?@Ideeee
 iY BCFLghhhh%<<<!/< -<)<!/<)<'<%<%7<" -<$5<!';<$ L
Iy)
*
**	 V V V
Is1vv&v/T
U
U
UUUUUUUVs    P) 
A)AAP) AAP) %E P) P) %P) P) #P) P) !P)  P) P) >P) P) <P) P) :P) BP) )
Q'3)Q"Q'"Q'Nry   r}   r5   r3   r   r   n  s-        RV RV RV RV RVr5   r   c                       e Zd Zd ZdS )UploadImagesc                 ~   	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j        }|                    d          }g }|D ]&}t          |          }	|                    |	           't          d|d          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r   imagesr   r   )r   rk   r   r@   r   r   r`   r;   ra   rb   r   rZ   getlistuploadTheProfileappendrl   )
rm   rn   r   rw   rp   rZ   r  
image_urlsr   
image_paths
             r3   rx   zUploadImages.post  sv   VN

 
 CC
 N N NYA'0LMMMMMMMMMN /((C(006688<
 UY 01&:STTTT
,4LL""6: " "u!%((Jj!!!! y
;;
<
<<	 V V V
Is1vv&v/T
U
U
UUUUUUUVsK    C> 
A)AAC> AAC> %AC> >
D<)D71D<7D<Nry   r}   r5   r3   r  r    (        V V V V Vr5   r  c                       e Zd Zd ZdS )
GetUserFaqc                 \   	 t           j                            dd                              d          }t	          |d          j        }t          d|d          S # t          $ rC}t          |           t          dt          |          it          j        	          cY d }~S d }~ww xY w)
NTr   )rP   r   -idr   r   r   r   r   )Faqr;   ra   order_byFAQSerializerrZ   r   rk   ri   r@   r   rl   )rm   rn   faq_objall_datarw   s        r3   r[   zGetUserFaq.get  s    T[$FCCLLUSS7G...38
ix88
9
99	 T T T888
Ic!ff%V-R
S
S
SSSSSSSTs   AA 
B+(8B& B+&B+Nr   r}   r5   r3   r  r    s(        T T T T Tr5   r  c                       e Zd Zd ZdS )GetUserPrivacyPolicyc                 8   	 t           j                            dd                                          }t	          |          j        }t          d|d          S # t          $ r4}t          dt          |          it          j
                  cY d }~S d }~ww xY w)NzPrivacy Policyr   	page_type	user_typer   r   r   r   r   r;   ra   rb   ContentSerializerrZ   r   rk   r@   r   rl   rm   rn   content_objr   rw   s        r3   r[   zGetUserPrivacyPolicy.get  s    T#+22=MX^2__eegg;[)).7
iw77
8
88	 T T T
Ic!ff%V-R
S
S
SSSSSSST   AA 
B%)BBBNr   r}   r5   r3   r  r    (        T T T T Tr5   r  c                       e Zd Zd ZdS )GetUserTermsc                 8   	 t           j                            dd                                          }t	          |          j        }t          d|d          S # t          $ r4}t          dt          |          it          j
                  cY d }~S d }~ww xY w)NzTerms & conditionsr   r  r   r   r   r   r  r  s        r3   r[   zGetUserTerms.get  s    T#+22=Q\b2cciikk;[)).7
iw77
8
88	 T T T
Ic!ff%V-R
S
S
SSSSSSSTr  Nr   r}   r5   r3   r   r     r  r5   r   c                       e Zd Zd ZdS )GetAdminExerciseListc                 \   	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S t          j                            d          }t          |d          j        }t          d|d	          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)
Nr   r   r   r   TrP   r   r   r   )r   rk   r   r@   r   r   r`   r;   ra   rb   r   FitnessLevelExerciseLevelSerializerrZ   rl   )rm   rn   r   rw   rp   exercise_objexercise_serializers          r3   r[   zGetAdminExerciseList.get  sT   VN

 
 CC
 N N NYA'0LMMMMMMMMMN /((C(006688<
 UY 01&:STTTT&--t-DD<0DIIIN
i/BCC
D
DD	 V V V
Is1vv&v/T
U
U
UUUUUUUVK    C- 
A)AAC- AAC- %AC- -
D+7)D& D+&D+Nr   r}   r5   r3   r#  r#    s(        V V V V Vr5   r#  c                       e Zd Zd ZdS )GetAdminSubExerciseListc                 h   	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j        }|                    d          }|st          ddit          j                  S t          j                            |          	                                }t          |          j        }t"          j                            |          }	t%          |	d	          j        }
||
d
}t          d|d          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r   exercise_idexercise_id is requiredexerciseTr   r1  sub_exerciser   r   )r   rk   r   r@   r   r   r`   r;   ra   rb   r   query_paramsr[   r]   AdminExerciseAdminExerciseSerializerrZ   AdminSubExerciseAdminSubExerciseSerializerrl   )rm   rn   r   rw   rp   rZ   r.  r(  r)  sub_exercise_objsub_exercise_serializerr  s               r3   r[   zGetAdminSubExerciseList.get  s   VN

 
 CC
 N N NYA'0LMMMMMMMMMN /((C(006688<
 UY 01&:STTTT

4-((;
 `Y 9:6C^____'..+.>>DDFF<0>>C&.55|5LL78HtTTTY-- 8 ix88
9
99	 V V V
Is1vv&v/T
U
U
UUUUUUUVsQ    E3 
A)AAE3 AAE3 %:E3  BE3 3
F1=)F,&F1,F1Nr   r}   r5   r3   r,  r,    (        V V V V Vr5   r,  c                       e Zd Zd ZdS )GetTrainerListc                 V   	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S t          j                            dd          }t          d|                                d          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)	Nr   r   r   r   T)r   rP   r   r   )r   rk   r   r@   r   r   r`   r;   ra   rb   r   Trainervaluesrl   )rm   rn   r   rw   rp   trainer_objs         r3   r[   zGetTrainerList.get6  sL   VN

 
 CC
 N N NYA'0LMMMMMMMMMN /((C(006688<
 UY 01&:STTTT''tT'JJ; i{/A/A/C/CDD
E
EE	 V V V
Is1vv&v/T
U
U
UUUUUUUVsK    C* 
A)AAC* AAC* %AC* *
D(4)D#D(#D(Nr   r}   r5   r3   r=  r=  5  s(        V V V V Vr5   r=  c                       e Zd Zd ZdS )GetTrainerDetailc                    	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j        }|                    d          }|st          ddit          j                  S t          j                            |          	                                }t          j                            |j        |          	                                }|sd }	n|j        dk    rd	}	nd
}	t%          |d|	i          j        }
t          d|
d          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r   
trainer_idtrainer_id is required)app_user_idrE  r   	requestedacceptedis_requestedcontextr   r   )r   rk   r   r@   r   r   r`   r;   ra   rb   r   r4  r[   r]   r?  Studentsr   follow_request_statusTrainerSerializerrZ   rl   )rm   rn   r   rw   rp   rZ   rE  rA  check_requestrJ  trainer_serializers              r3   r[   zGetTrainerDetail.getL  s   VN

 
 CC
 N N NYA'0LMMMMMMMMMN /((C(006688<
 UY 01&:STTTT

4&&:
 _Y 89&B]^^^^'':'66<<>>;$++,/Wa+cciikk=
 LL*a//\\\)+~|>\]]]b
i/ABB
C
CC	 V V V
Is1vv&v/T
U
U
UUUUUUUVsQ    F	 
A)AAF	 AAF	 %:F	  B(F	 	
G)G<GGNr   r}   r5   r3   rC  rC  K  (        V V V V Vr5   rC  c                       e Zd Zd ZdS )SendFollowRequestc                 R   	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          d           t          j        	                    |          
                                }|st          ddit          j                  S |j                            d          }|st          ddit          j                  S t          j                            |          }t           j        	                    ||          
                                }|st          d	           t           j                            ||d
          }t          |j        j                   |j        j        r|j        j        }t          t*          j                  }	t          |j        j                   |j        j        dk    rt1          |dd           |j        j        dk    rt1          |dd           nt          ddi          S t          ddi          S # t          j        $ r  t          ddit          j                  cY S t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   herer   r   rE  rF  )trainerapp_userzif not student_follow:F)rW  rX  rN  AndroidzFOLLOW REQUESTzYou got a new follow requestIosRequest already sentz Follow request sent successfullyTrainer not found)r   rk   r   r@   r   r   ri   r`   r;   ra   rb   r   rZ   r[   r]   r?  rM  rf   rX  notification_statusr   r   FIREBASE_SERVER_KEYr   r4   DoesNotExistrl   )
rm   rn   r   rw   rp   rE  rW  student_followr1   
server_keys
             r3   rx   zSendFollowRequest.postp  s   %VN

 
 CC
 N N NYA'0LMMMMMMMMMN===/((C(006688<
 UY 01&:STTTT  ..:
 _Y 89&B]^^^^_  J //7$++Gl+SSYY[[>
 9	
"###%,,W|jo,ppN	.
!
56662 _%.8_h233Z
>".///+y88_.>?]^^^+u44_.>?]^^^ Y 67888
IAB
C
CC		 W W W
I23F<U
V
V
VVVV	 V V V
Is1vv&v/T
U
U
UUUUUUUVs]    H; 
A)AAH; AA"H; 48H; -D<H; *H; ;,J&)	J&2)J!J&!J&Nry   r}   r5   r3   rT  rT  o  s(        &V &V &V &V &Vr5   rT  c                       e Zd Zd ZdS )getUserNotificationsc                    	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |s(t          t          j        ddt          j                  S t          j                            |j        d                              d	          }t          j                            |j        dd
                                          }g }|D ]B}|j        |j        |j        t%          |j                  dz   d}	|                    |	           Ct          t          j        d||d          S # t          $ r?}t          t          j        t          |          dt          j                  cY d }~S d }~ww xY w)Nr   r   r   r   zUser does not exists.status_codestatus_messageTr   rP   r  F)r   rP   is_read ago)r   r   notification_type
start_date )rf  rg  rZ   notification_count)r   rk   r   r@   r   r   r`   r;   ra   rb   r   r]   AppUserNotificationr   r  r   r   rk  r   rl  r  HTTP_200_OKrl   )
rm   rn   r   rw   rp   
notify_objrn  r   notifyalldatas
             r3   r[   zgetUserNotifications.get  s[   ON

 
 CC
 N N NYA'0LMMMMMMMMMN /((C(006688<
 UY 01&:STTTT
 M6#>Pghhpv  qL  M  M  M  M#+22[_2``iijopp:)188loaens8ttzz||7  v
)!3F-..v5	 G NN7
6#5rQX  oA  B  B  C  C  C	 O O O
&"GY\]^Y_Y_``hn  iN  O  O  O  O  O  O  O  O  OOsQ    F& 
A)AAF& AAF& %)F& CF& &
G/04G*$G/*G/Nr   r}   r5   r3   rc  rc    s(        O O O O Or5   rc  c                       e Zd Zd ZdS )deleteUserNotificationsc                 ,   	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j                            d          }|s(t          t          j        ddt          j                  S t          j                            |                              t!          j                               t          t          j        d	d          S # t          $ r?}t          t          j        t          |          dt          j                  cY d }~S d }~ww xY w)
Nr   r   r   r   notification_idzNotification Id is requiredre  r   z!Notification Deleted Successfully)r   rk   r   r@   r   r   r`   r;   ra   rb   r   rZ   r[   r]   ro  r   r   nowrp  rl   )rm   rn   r   rw   rp   rw  s         r3   rx   zdeleteUserNotifications.post  s   ON

 
 CC
 N N NYA'0LMMMMMMMMMN /((C(006688<
 UY 01&:STTTTl&&'899?
 S6#>Pmnnv|  wR  S  S  S  S%%%99@@(,..@YYY
&"4Fijj
k
kk	 O O O
&"GY\]^Y_Y_``hn  iN  O  O  O  O  O  O  O  O  OOsR    E
 
A)AAE
 AAE
 %AE
 )A E
 

F4FFFNry   r}   r5   r3   ru  ru    s(        O O O O Or5   ru  c                       e Zd Zd ZdS )userDeleteAccountc                    	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S d|_        t          j                    |_        |                                 t          t          j        dd          S # t          $ r?}t          t          j        t          |          dt          j                  cY d }~S d }~ww xY w)Nr   r   r   r   TzAccount Deleted Successfullyre  )r   rk   r   r@   r   r   r`   r;   ra   rb   r   is_account_deletedr   ry  r   rg   rp  rl   )rm   rn   r   rw   rp   s        r3   rx   zuserDeleteAccount.post  sz   ON

 
 CC
 N N NYA'0LMMMMMMMMMN /((C(006688<
 UY 01&:STTTT%)<"#<>><
&"4Fdee
f
ff	 O O O
&"GY\]^Y_Y_``hn  iN  O  O  O  O  O  O  O  O  OOsK    C4 
A)AAC4 AAC4 %AC4 4
D=>4D82D=8D=Nry   r}   r5   r3   r{  r{    s(        O O O O Or5   r{  c                       e Zd Zd ZdS )	AddFriendc                 J   	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j        }|                    d          }|st          ddit          j                  S 	 t          j                            |          }n2# t          j        $ r  t          ddit          j
                  cY S w xY wt          j                            ||          	                                }|st          j                            ||d	
          }|j        r|j        }	t          t&          j                  }
|j        dk    r(t-          d           t/          |	d|j        dz              |j        dk    r(t-          d           t/          |	d|j        dz              t2          j                            |j        dz   d|           t          ddi          S t          ddi          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r   	friend_idzfriend_id is requiredUser not found)	from_userto_userF)r  r  rI  rY  z%=====================================zNEW FOLLOW REQUEST RECEIVEDz sent you a follow request.rZ  '111111111111111111111111111111111111111friend_request_receivedr   rk  r   successr[  )r   rk   r   r@   r   r   r`   r;   ra   rb   r   rZ   r[   r]   r_  Friendsrf   r]  r   r   r^  r   ri   r4   rH   ro  rl   )rm   rn   r   rw   rp   rZ   r  friendfriendship_requestr1   ra  s              r3   rx   zAddFriend.post  s   *UN

 
 CC
 N N NYA'0LMMMMMMMMMN/((C(006688<
 UY 01&:STTTT
,4xx$$9
 \Y67v?Z[[[[U_  I ..FF

 U U UY 01&:STTTTTTU  ..v.VV\\^^
 9 //,PVaf/gg ! C'_h233Zi''3444_.KLLb  eB  MB  C  C  Ce##5666_.KLLb  eB  MB  C  C  C
 &&|/EFc/c  wP  V\&  ]  ]  ]Y	*+++Y 67888	 U U UYs1vv&f.STTTTTTTTTUsu    I$ 
A)AAI$ AAI$ %:I$ ! D I$ ,D1.I$ 0D11D!I$ I$ $
J".)JJ"J"Nry   r}   r5   r3   r  r    s(        +U +U +U +U +Ur5   r  c                       e Zd Zd ZdS )AcceptRejectRequestc                    	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j        }|                    d          }|                    d          }|st          ddit          j                  S |st          ddit          j                  S 	 t          j                            |d	
          }n2# t          j        $ r  t          ddit          j
                  cY S w xY w|dk    rd|_        |                                 |j        j        rx|j        j        }	t          t*          j                  }
|j        j        dk    rt1          |	d|j         d           n)|j        j        dk    rt1          |	d|j         d           t4          j                            |j         dd|j                   t          ddi          S |dk    r%|                                 t          ddi          S t          ddit          j                  S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r  
request_idr   Request ID is requiredzStatus is requiredFr   rI  0Friendship request not found or already acceptedacceptTrY  zRequest Acceptedz accepted your follow request.rZ  friend_request_acceptedr  zFriend request acceptedrejectzFriend request rejectedz!Status type must be accept/reject)r   rk   r   r@   r   r   r`   r;   ra   rb   r   rZ   r[   r]   r  r_  rI  rg   r  r]  r   r   r^  r   r4   rH   ro  rf   deleterl   )rm   rn   r   rw   rp   rZ   r  status_typer  r1   ra  s              r3   rx   zAcceptRejectRequest.post  sD   +VN

 
 CC
 N N NYA'0LMMMMMMMMMN/((C(006688<
 UY 01&:STTTT
,4&&:(##;
 _Y 89&B]^^^^
 [Y 45f>YZZZZw ,,
U,KK

 w w wY RS\b\uvvvvvvw X"&#7 |)3=_h233Z$0I==_.@LDZAzAzAz{{{{

&
2e
;
;_.@LDZAzAzAz{{{
 &&,2H/h/h/h  }V  ]o  ]y&  z  z  zY 9:;;;xY 9:;;;Y CDVMhiiii	 V V V
Is1vv&v/T
U
U
UUUUUUUVs    J 
A)AAJ AAJ %AJ 5J !D7 6J 7,E&#J %E&&C'J *J 9J 
K )K	KKNry   r}   r5   r3   r  r    (        ,V ,V ,V ,V ,Vr5   r  c                       e Zd Zd ZdS )SentRequestsListc                 ^   	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S t          j                            |d          }t          |d          j        }t          d	|d
          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r  F)r  rI  Tr   r   r   )r   rk   r   r@   r   r   r`   r;   ra   rb   r   r  SentUserFriendListSerializerrZ   rl   )rm   rn   r   rw   rp   r  r  s          r3   r[   zSentRequestsList.get>  sT   VN

 
 CC
 N N NYA'0LMMMMMMMMMN/((C(006688<
 UY 01&:STTTT..PU.VV*+=DIIIN8
y(;;
<
<<	 V V V
Is1vv&v/T
U
U
UUUUUUUVK    C. 
A)AAC. AAC. %AC. .
D,8)D'!D,'D,Nr   r}   r5   r3   r  r  =  (        V V V V Vr5   r  c                       e Zd Zd ZdS )ReceivedRequestsListc                 ^   	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S t          j                            |d          }t          |d          j        }t          d	|d
          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r  F)r  rI  Tr   r   r   )r   rk   r   r@   r   r   r`   r;   ra   rb   r   r   ReceivedUserFriendListSerializerrZ   rl   )rm   rn   r   rw   rp   received_friendlistr  s          r3   r[   zReceivedRequestsList.getO  sS   VN

 
 CC
 N N NYA'0LMMMMMMMMMN/((C(006688<
 UY 01&:STTTT //u/UU./BNNNS8
y(;;
<
<<	 V V V
Is1vv&v/T
U
U
UUUUUUUVr  Nr   r}   r5   r3   r  r  N  r  r5   r  c                       e Zd Zd ZdS )
FriendListc                 L   	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S t          j                            t          |          t          |          z  t          d          z                                d	d
          }g }|D ]0}|j        |k    r|j        n|j        }|                    |           1t#          |d          j        }	t          d|	d          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r  )r  )r  T)rI  r  r  r   r   r   )r   rk   r   r@   r   r   r`   r;   ra   rb   r   r  r   select_relatedr  r  r  AppUserFriendSerializerrZ   rl   )
rm   rn   r   rw   rp   friendsfriend_listr  friend_userr  s
             r3   r[   zFriendList.geta  s   VN

 
 CC
 N N NYA'0LMMMMMMMMMN /((C(006688<
 UY 01&:STTTT_##<!8!8!88At<L<L<LL ^K++  ; $ $v$*$4$D$D&..&JZK{####%k===B8
y(;;
<
<<	 V V V
Is1vv&v/T
U
U
UUUUUUUVsK    E% 
A)AAE% AAE% %B?E% %
F#/)FF#F#Nr   r}   r5   r3   r  r  `  (        V V V V Vr5   r  c                       e Zd Zd ZdS )SearchFriendc                 J   	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j        }|                    d          }|st          ddit          j                  S t          j                            t          |          t          |          z  d	
                              |j                  }t#          |d	d|i          j        }t          d|d          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r  searchzSearch parameter is required)full_name__icontains)email__icontainsTr%  
login_user)r   rL  r   r   )r   rk   r   r@   r   r   r`   r;   ra   rb   r   r4  r[   r]   r   excluder   r  rZ   rl   )	rm   rn   r   rw   rp   rZ   r  search_friend	user_datas	            r3   r[   zSearchFriend.get}  s   VN

 
 CC
 N N NYA'0LMMMMMMMMMN /((C(006688<
 UY 01&:STTTT

4HHX6
 eY >?Hcdddd?))!*H*H*H1^dKeKeKe*ex|)}}  F  F  JV  JY  F  Z  Z=&}4,XdIefffk9
y)<<
=
==	 V V V
Is1vv&v/T
U
U
UUUUUUUVsQ    E$ 
A)AAE$ AAE$ %:E$  BE$ $
F".)FF"F"Nr   r}   r5   r3   r  r  |  s(        V V V V Vr5   r  c                       e Zd Zd ZdS )CancelSentRequestc                 6   	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j        }|                    d          }|st          ddit          j                  S 	 t          j                            |d          }n2# t          j        $ r  t          dd	it          j
                  cY S w xY w|                                 t          dd
i          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r  r  r  Fr  r  zFriend request cancelled)r   rk   r   r@   r   r   r`   r;   ra   rb   r   rZ   r[   r]   r  r_  r  rl   )rm   rn   r   rw   rp   rZ   r  r  s           r3   rx   zCancelSentRequest.post  s   VN

 
 CC
 N N NYA'0LMMMMMMMMMN /((C(006688<
 UY 01&:STTTT
,4&&:
 _Y 89&B]^^^^w ,,
U,KK

 w w wY RS\b\uvvvvvvw 
I9:
;
;;	 V V V
Is1vv&v/T
U
U
UUUUUUUVsn    E 
A)AAE AAE %:E !!D E ,D2/E 1D22'E 
F$)FFFNry   r}   r5   r3   r  r    r  r5   r  c                       e Zd Zd ZdS )AssessmentListc                    	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S t          j                            |                              d          }t          |d          j        }t          d	|d
          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r  student__app_userr  Tr   r   r   )r   rk   r   r@   r   r   r`   r;   ra   rb   r   StudentAssessmentr  StudentAssessmentSerializerrZ   rl   )rm   rn   r   rw   rp   student_assessmentstudent_serializers          r3   r[   zAssessmentList.get  sn   VN

 
 CC
 N N NYA'0LMMMMMMMMMN /((C(006688<
 UY 01&:STTTT *188" 9  Xe__  44FDQQQV
y0BCC
D
DD	 V V V
Is1vv&v/T
U
U
UUUUUUUVsK    D  
A)AAD  AAD  %AD   
D>
)D93D>9D>Nr   r}   r5   r3   r  r    s(        V V V V Vr5   r  c                       e Zd Zd ZdS )AssessmentDetailc                 0   	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j        }|                    d          }|st          ddit          j                  S t          j                            |          	                                }|st          ddit          j
                  S t          |          j        }t          d|d	          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)
Nr   r   r   r  assessment_idassessment_id is requiredStudentAssessment not foundr   r   )r   rk   r   r@   r   r   r`   r;   ra   rb   r   r4  r[   r]   r  r  rZ   rl   )	rm   rn   r   rw   rp   rZ   r  r  r  s	            r3   r[   zAssessmentDetail.get  s   VN

 
 CC
 N N NYA'0LMMMMMMMMMN /((C(006688<
 UY 01&:STTTT

488O,,=
 bY ;<VE`aaaa *188 9  
UWW   bY =>vG`aaaa34FGGL
y0BCC
D
DD	 V V V
Is1vv&v/T
U
U
UUUUUUUVsW    E 
A)AAE AAE %:E  AE 1%E 
F!)F
FFNr   r}   r5   r3   r  r    s(        V V V V Vr5   r  c                       e Zd Zd ZdS )StartAssessmentProgressc                    	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j        }|                    d          }|                    d          }|st          ddit          j                  S |st          ddit          j                  S 	 t          j                            |          }n2# t          j        $ r  t          dd	it          j
                  cY S w xY w||_        |xj        d
z  c_        |                                 t&          j                            |                              d          	                                }	|	r|	r
|	j        d
z   nd
}
nd
}
t&          j                            |||
          }t          ddi          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r  r  assessment_progressr  assessment_progress is requiredr  r	   r  -attempt_number)r   
assessmentattempt_numberr   )r   rk   r   r@   r   r   r`   r;   ra   rb   r   rZ   r[   r]   r  r_  r  total_attemptrg   AssessmentAttemptr  r  rf   rl   )rm   rn   r   rw   rp   rZ   r  r  r  last_attemptnext_attempt_numberattempts               r3   rx   zStartAssessmentProgress.post  s   'VN

 
 CC
 N N NYA'0LMMMMMMMMMN /((C(006688<
 UY 01&:STTTT
,488O,,="788
 bY ;<VE`aaaa
 hY AB6Kfggggb*266-6HH

( b b bY =>vG`aaaaaab -@)##q(## $+222OOXXYjkkqqss< =IP,599q&--<L^  pC-  D  D7
Iy)
*
**	 V V V
Is1vv&v/T
U
U
UUUUUUUVsv    H 
A)AAH AAH %AH 5H  D6 5H 6,E%"H $E%%B8H 
I()IIINry   r}   r5   r3   r  r    (        (V (V (V (V (Vr5   r  c                       e Zd Zd ZdS )FinishAssessmentProgressc                 	   	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j        }|                    d          }|                    d          }|                    d          }|                    d          }	t          d|	           |                    d	          }
|                    d
          }|st          ddit          j                  S |st          ddit          j                  S 	 t          j                            |          }n2# t          j        $ r  t          ddit          j
                  cY S w xY w||_        |                                 ddlm} |rt(          j                            |j                  }|j        }t          |          }t          d|           t          |          }t          d|            |j        |d          }t          d|            |j        |d          }t          d|           ||z
  }t          d|           |j        dz  |j        z   }|j        dz  |j        dz  z   |j        z   }||z  }|dz  }|dk    rd}n|dk     rd}nt(          j                            |j                  }t;          |
          }t          d|           t;          |	          }t          d|           t;          |j                  }t          d|           t;          |j                  }t          d|           ||z  |z   }t          d|           ||z  }t          d|           ||z  dz  }t          d |           |dk    rd}n|dk     rd}t@          j                            |!          !                    d"          	                                }||_        |	|_        |
|_        ||_"        tG          j$                    |_%        ||_&        |                                 t          dd#i          S # t          $ r4}t          dt          |          it          j'                  cY d }~S d }~ww xY w)$Nr   r   r   r  r  completed_timer  repetitionssetsweightr  r  r  r   )r   completed_time_strtotal_time_strz%H:%M:%Scompleted_time_new
total_timetime_differenceiQ   <   d   completed_setscompleted_repstotal_sets_plannedreps_per_set_plannedtotal_reps_completedtotal_reps_plannedpercentage_completedr  r  r   )(r   rk   r   r@   r   r   r`   r;   ra   rb   r   rZ   r[   ri   r]   r  r_  r  rg   r   
Assesmentsr  completion_timestrptimedayssecondshourminutesecondr?   r  r  r  r  r  r   todaycompleted_datecomplete_percentrl   )rm   rn   r   rw   rp   rZ   r  r  r  r  r  r  r  r   assessment_objr  r  r  r  r  total_seconds_differencetotal_seconds_total_timefraction_completionr  r  r  r  r  r  r  r  s                                  r3   rx   zFinishAssessmentProgress.post  sw   tVN

 
 CC
 N N NYA'0LMMMMMMMMMN /((C(006688<
 UY 01&:STTTT
,488O,,=HH-..>"788-((;{###
((6

4HHX6
 bY ;<VE`aaaa
 hY AB6Kfggggb*266-6HH

( b b bY =>vG`aaaaaab -@)       D'++1C1Q+RRN  /J^,,	
1222__N	
>*****+=zJJ	
1222"">:>>J	,z""" #55O	
O,,, / 4u <@WW *$ 6:;Lr;QRU_Uff25MM.4 c!!		!	!  '++1C1Q+RRNYYN	
>***%%N	
>***^011	
1222~9::	
 !5666*-AA^S	
 !5666+.BB	
122203EEL	
 !5666 c!!		!	! $+222OOXXYjkkqqss<"0<)<<<!%<#7< 
Iy)
*
**	 V V V
Is1vv&v/T
U
U
UUUUUUUVsv    R$ 
A)AAR$ AAR$ %B3R$ R$ 9 F R$ ,G	R$ G		KR$ $
S".)SS"S"Nry   r}   r5   r3   r  r    s-        uV uV uV uV uVr5   r  c                       e Zd Zd ZdS )GetWorkoutTrainerc                 b   	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S t          j                            |                              d          }g }t                      }|D ]s}|j        j        j        }	|	|vr\|                    |	|j        j        j        |j        j        j        |j        j        j        d           |                    |	           tt          d|d	          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)
Nr   r   r   r  r  r  rE  trainer_nametrainer_imageisFavouriter   r   )r   rk   r   r@   r   r   r`   r;   ra   rb   r   StudentWorkOutPlanr  setworkoutrW  r   r  rH   r   is_favouriteaddrl   )
rm   rn   r   rw   rp   student_workoutr  seen_trainer_idsr  rE  s
             r3   r[   zGetWorkoutTrainer.get  s   #VN

 
 CC
 N N NYA'0LMMMMMMMMMN /((C(006688<
 UY 01&:STTTT (/66" 7  Xe__  8 ee! 
& 
&w(+J)))__o-7.4_,9	     *%%%
y(;;
<
<<	 V V V
Is1vv&v/T
U
U
UUUUUUUVsK    E0 
A)AAE0 AAE0 %C
E0 0
F.:)F)#F.)F.Nr   r}   r5   r3   r  r    s(        $V $V $V $V $Vr5   r  c                       e Zd Zd ZdS )WorkOutListc                    	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j                            d          }|st          ddit          j
                  S t          j                            |d          	                                }t          j                            |	                              d
          }|st          ddit          j
                  S g }|D ]}	t           j                            |	                              d
          }
|
D ]L}|j        |j        j        |j        j        |j        j        |j        j        d}|                    |           Md |D             }t/          |                                          }t          d|d          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r  rE  r\  Tr   rP   rW  r  zworkout_plan not foundr  )r   
workout_idnamer   descriptionc                      i | ]}|d          |S r  r}   .0items     r3   
<dictcomp>z#WorkOutList.get.<locals>.<dictcomp>  s    DDD4d<($DDDr5   r   r   )r   rk   r   r@   r   r   r`   r;   ra   rb   r   GETr[   r?  WorkoutPlanr  r  r   r  r  r   r  r  listr@  rl   )rm   rn   r   rw   rp   rE  get_trainerworkout_planall_Datar  r	  
stuworkoutr  unique_workoutsunique_workouts_lists                  r3   r[   zWorkOutList.get  s   'VN

 
 CC
 N N NYA'0LMMMMMMMMMN /((C(006688<
 UY 01&:STTTTkool++:
 XY 34V=VWWWW%%T%JJPPRR;#**;*??HHOO<
 ]Y 89&B[\\\\8  w(077 8  huoo 
 & 	 	
M'*$ &&2 X __X	 ED8DDD?557788
y0DEE
F
FF	 V V V
Is1vv&v/T
U
U
UUUUUUUVsX    H+ 
A)AAH+ AAH+ %8H+ BH+ #CH+ +
I)5)I$I)$I)Nr   r}   r5   r3   r  r    r  r5   r  c                       e Zd Zd ZdS )LikecommentWorkoutc                 (   	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j        }|                    d          }|                    d          }|                    d          }|st          ddit          j
                  S t          j                                        }	|d	k    r|s|	                    |          	                                }
|
xj        d
z  c_        t           j                            ||
d           |
                                 t          ddi          S |dk    r|s|	                    |          	                                }
|
j        dk    s|
xj        d
z  c_        t           j                            ||
d           |
                                 t          ddi          S |d	k    r|r|	                    |          	                                }
|
xj        d
z  c_        t           j                            ||
d|           |
                                 t          ddi          S |dk    r|r|	                    |          	                                }
|
j        dk    s|
xj        d
z  c_        t           j                            ||
d|           |
                                 t          ddi          S |sq|rq|	                    |          	                                }
t           j                            ||
|           |
                                 t          ddi          S d S d S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r  
get_statuscommentr  workout_id not foundliker	   T)r   r  is_likedzLiked succcessfullydisliker   FzDisliked succcessfully)r   r  r*  r'  z!Liked and commented succcessfullyz$Disliked and commented succcessfully)r   r  r'  zCommented succcessfully)r   rk   r   r@   r   r   r`   r;   ra   rb   r   rZ   r[   r  r<   likesWorkoutCommentsrf   rg   rl   )rm   rn   r   rw   rp   rZ   r&  r'  r  r  get_workout_plans              r3   rx   zLikecommentWorkout.post  se   6WO!!SS O O OiQ(1MNNNNNNNNNO ?))S)117799L Vi!126;TUUUU<D,''JHHYGxx%%J \i!78AZ[[[[$((**L6'"))Z)88>>@@Q##>NX\#]]]i!678889W"))Z)88>>@@"A%%a##>NX]#^^^i!9:;;;6g"))Z)88>>@@Q##>NX\el#mmmi!DEFFF9"))Z)88>>@@"A%%a##>NX]fm#nnni!GHIII =' ="))Z)88>>@@##>NW^#___i!:;<<<	= = = =  W W WYA'0UVVVVVVVVVWsn    O 
A)AAO AAO %A$O 
B$O /BO BO 	BO A2O 
P)PPPNry   r}   r5   r3   r$  r$    s(        7W 7W 7W 7W 7Wr5   r$  c                       e Zd Zd ZdS )AllWorkoutLikesCommentsc                 6   	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j        }|                    d          }|st          ddit          j                  S t          j                            |          	                                }t          j                            |          }|                    dd	d
d          }	t#          |	          }
t          j                            ||                                          }|sd }n|j        }|j        ||j        |
d}|st          ddit          j
                  S t          d|d          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r  r  workout_id is requiredr  user__full_nameuser__imager'  
created_atr   r  )r  r*  total_likescommentsWorkout Plan not foundr   r   )r   rk   r   r@   r   r   r`   r;   ra   rb   r   r4  r[   r]   r  r-  r@  r  r=   r*  r   r,  rl   )rm   rn   r   rw   rp   rZ   r  r  get_commentsr8  all_commentsget_like_statuss               r3   r[   zAllWorkoutLikesComments.get#  sK   +WO!!SS O O OiQ(1MNNNNNNNNNO ?))S)117799L Vi!126;TUUUUD,''J `i!9:6C^____&---<<BBDDL (///EEL   !2=<XXHhL#+22\2ZZ__aaO /oo%.o/ %	
 
D  ^i!9:6C\]]]] 	66777
 W W WYA'0UVVVVVVVVVWsW    G 
A)AAG AAG %:G  C'G G 
H$)HHHNr   r}   r5   r3   r0  r0  "  s(        ,W ,W ,W ,W ,Wr5   r0  c                       e Zd Zd ZdS )WorkOutDetailc                 >   	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j        }|                    d          }|st          ddit          j                  S t          j                            |          	                                }|st          ddit          j
                  S t          j                            |j        j                  	                                }|st          ddit          j
                  S d	}	t%          |d
|	i          j        }
d|
v r"t)          |
d         d          D ]
\  }}||d<   t          d|
d          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r  r  r2  student workout not foundr9  private	work_typerK  weeksr	   )startweek_numberr   r   )r   rk   r   r@   r   r   r`   r;   ra   rb   r   r4  r[   r]   r  r  r  r   WorkoutPlanSerializerrZ   	enumeraterl   )rm   rn   r   rw   rp   rZ   r  r	  r  rB  workout_plan_serializerindexweeks                r3   r[   zWorkOutDetail.getQ  sh   $VN

 
 CC
 N N NYA'0LMMMMMMMMMN /((C(006688<
 UY 01&:STTTT

4&&:
 _Y 89&B]^^^^ (/66 7  
UWW   `Y ;<VE^____%,,0G0J,KKQQSS<
 ]Y 89&B[\\\\92<V_H`aaaf((( 7 @qIII  
dT-
y0GHH
I
II	 V V V
Is1vv&v/T
U
U
UUUUUUUVs_    G 
A)AAG AAG %:G  AG 1AG AG 
H()HHHNr   r}   r5   r3   r>  r>  P  s(        %V %V %V %V %Vr5   r>  c                       e Zd Zd ZdS )StudentHomePagec           	         	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S t          j                            d                              dd                                          }t          j                            |d	          }g }|D ]D}|j        |j        |j        |j        |j        |j        |j        d
}	|                    |	           E|j                            d          }
|
st          ddit          j
                  S t2          j                            |
          	                                }t5          |          j        }t8          j                            |          }t;          |d          j        }||d}t          d||d          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r  Tr%  rW  )flat)id__inrP   )r   r  rI   r   total_experiencer   r  dayzDay not found)rQ  r0  r   r2  r   )r   trainer_dataexercise_data)r   rk   r   r@   r   r   r`   r;   ra   rb   r   r  values_listdistinctr?  r   rH   rI   r   rP  r   r   r  r  r[   r5  r6  rZ   r7  r8  rl   )rm   rn   r   rw   rp   unique_trainer_idsunique_trainerstrainer_DatarW  r  rQ  r(  r)  r9  r:  rS  s                   r3   r[   zStudentHomePage.get|  s   ,VN

 
 CC
 N N NYA'0LMMMMMMMMMN /((C(006688<
 UY 01&:STTTT $+22D2IIUUV_fjUkkttvv_++3EW[+\\? <! 
" 
"w:&m; 1nm H !!!!			3
 TY09RSSSS'..3.77==??<0>>C&.55|5LL78HtTTTY2- = i|Tabb
c
cc	 V V V
Is1vv&v/T
U
U
UUUUUUUVsR    H# 
A)AAH# AAH# %C)H# BH# #
I!-)II!I!Nr   r}   r5   r3   rL  rL  {  r   r5   rL  c                       e Zd Zd ZdS )GetTrainerPublicWorkoutc                 r   	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j                            d          }|st          ddit          j
                  S t          j                            d|          }g }|D ]b}|j        |j        |j        |j        |j        |j        |j        |j        |j        |j        |j        |j        d}	|                    |	           ct          d	|d
          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r  rE  public)work_accessrE  r   r  goalr  notesr   duration_typeduration_minutesduration_weeksr]  r5  r  r   r   r  )r   rk   r   r@   r   r   r`   r;   ra   rb   r   r  r[   r  r   r  r_  r  r`  r   ra  rb  rc  r]  r5  r  r  rl   )
rm   rn   r   rw   rp   rE  workout_plan_objpublic_workout_datar  public_workouts
             r3   r[   zGetTrainerPublicWorkout.get  s   "VN

 
 CC
 N N NYA'0LMMMMMMMMMN /((C(006688<
 UY 01&:STTTT--:
 UY 01&:STTTT!)00xS]0^^" / /w
*LL&]]*0,&$' N ~....
i3FGG
H
HH	 V V V
Is1vv&v/T
U
U
UUUUUUUVsQ    E8 
A)AAE8 AAE8 %8E8 BE8 8
F6)F1+F61F6Nr   r}   r5   r3   rZ  rZ    s(        #V #V #V #V #Vr5   rZ  c                       e Zd Zd ZdS )getTrainerPublicWorkoutDetailsc                 <   	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j        }|                    d          }|st          ddit          j                  S t          j                            |          	                                }|st          ddit          j
                  S d}t          |d	|i
          j        }	t          d|	d          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r  r  r2  r9  r\  rB  rK  r   r   )r   rk   r   r@   r   r   r`   r;   ra   rb   r   r4  r[   r]   r  rF  rZ   rl   )
rm   rn   r   rw   rp   rZ   r  r  rB  rH  s
             r3   r[   z"getTrainerPublicWorkoutDetails.get  s   VN

 
 CC
 N N NYA'0LMMMMMMMMMN /((C(006688<
 UY 01&:STTTT4&&:
 _Y 89&B]^^^^%,,
,;;AACC<
 ]Y 89&B[\\\\92<+W`Iabbbg
y0GHH
I
II	 V V V
Is1vv&v/T
U
U
UUUUUUUVsW    E 
A)AAE AAE %:E  AE 1+E 
F')FFFNr   r}   r5   r3   ri  ri    r	  r5   ri  c                       e Zd Zd ZdS )startWorkoutc                    	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j        }|                    d          }|                    d          }|st          ddit          j                  S |st          ddit          j                  S 	 t          j                            |          }n-# |j        $ r  t          dd	it          j
                  cY S w xY w||_        |xj        d
z  c_        |                                 t&          j                            |                              d          	                                }	|	r|	r
|	j        d
z   nd
}
nd
}
t&          j                            |||
          }t          ddi          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r  r  workout_progressr2  workout_progress is requiredr@  r	   r  r  r   r  r  r   )r   rk   r   r@   r   r   r`   r;   ra   rb   r   rZ   r[   r]   r  r_  r  r  rg   WorkoutAttemptr  r  rf   rl   )rm   rn   r   rw   rp   rZ   r  rn  r	  r  r  r  s               r3   rx   zstartWorkout.post  s   'VN

 
 CC
 N N NYA'0LMMMMMMMMMN /((C(006688<
 UY 01&:STTTT
,4&&:hh122
 _Y 89&B]^^^^
 eY >?Hcdddd`(044
4CCOO

& ` ` `Y ;<VE^______` *:?&  A%   !(//:/FFOOPabbhhjj< =IP,599q#**ofy*zz7
Iy)
*
**	 V V V
Is1vv&v/T
U
U
UUUUUUUVsv    H 
A)AAH AAH %AH 5H  D6 5H 6'E H E  B8H 
I#)IIINry   r}   r5   r3   rl  rl    r  r5   rl  c                       e Zd Zd ZdS )
endWorkoutc                 	   	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j        }|                    d          }|st          ddit          j
                  S |                    d          }|                    d          }|st          dd	it          j
                  S |                    d
          }	|                    d          }
|	st          ddit          j
                  S |
st          ddit          j
                  S t          j                            |          	                                }t          j                            |          	                                }|st          ddit          j
                  S t          j                                                    }d}|t%          |                                          z
  }|t%          d          z   }|                    d          }t)          |           t)          |           t*          j                            |          	                                }t)          |           t)          t-          |                     |rt/          j        |          }|D ]}t)          |           |d         }t2          j                            |          	                                }t4          j                            ||||||	|d          	                                }|s't4          j                            |||||||	d           t8          j                            |||g|||	                              d          	                                }|rY||_        t#          j                    |_         ||_!        |	|_"        |
|_#        |$                                 t          ddi          S t8          j                            |||t#          j                    ||	|
           t          ddi          S # t          $ r4}t          dt          |          it          j%                  cY d }~S d }~ww xY w)Nr   r   r   r  r  r(  rS  workout_weekworkout_week not foundworkout_dayr  workout_day not foundcompletion_time not foundr  get_workout not foundrA  r     r.  T)r   r1  r3  r  ru  rw  workout_typeis_completed)r   r1  r3  r  r}  ru  rw  r~  )r   created_at__date__ranger  ru  rw  r  r   )r   r  rS  r  ru  rw  r  )&r   rk   r   r@   r   r   r`   r;   ra   rb   r   rZ   r[   r  r  r'   ry  r   r   weekdayri   PlanExerciser   jsonloadsSubExerciseUserIsExerciseWorkoutrf   rq  r  rS  r  r  ru  rw  r  rg   rl   )rm   rn   r   rw   rp   rZ   r  rS  ru  rw  r  get_workoutget_student_workoutr  r}  start_of_weekend_of_weekr.  get_exercise	list_dataget_idget_sub_exercisecheck_completedr  s                           r3   rx   zendWorkout.post  sN   SXP'""cc P P Py#a&&)&2NOOOOOOOOOPO**c*2288::\ Wy"23F<UVVVVLT((<((Z ]y"89&B[\\\\88O,,] ((>**\ _y":;FD]^^^^-(([XX/00_ ^y"9:6C\]]]] by"=>vG`aaaa$++z+::@@BB[-5<<[<QQWWYY ^y"9:6C\]]]]\^^  ""U\ YEMMOO<<<<] !9!#4#4#44[-(([
;
=&---==CCEE\
=
4 :
=))i 
: 
:$T{{{=!v#+22f2==CCEE,4;;Wc  rB  KV'%<T < S SSXSXSZSZ   :%,,,fv  @K  Ye(&D 	- 	: 	: 	: #*11|]jlw\x  BU  co  |G1  H  H  Q  Q  Rc  d  d  j  j  l  l\ .!.l $(JLLl! ,l*l#2l"y),---##>Q("jll&$_	 $ F F F y),--- X X XiQ(1VWWWWWWWWWXss    R7 
A)AAR7 AAR7 %:R7  AR7 )AR7 2R7 BR7 IR7 /AR7 7
S5)S0*S50S5Nry   r}   r5   r3   rs  rs    s-        TX TX TX TX TXr5   rs  c                       e Zd Zd ZdS )startPublicWorkoutc                 6   	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j        }|                    d          }|                    d          }|st          ddit          j                  S |st          ddit          j                  S t          j                            |          	                                }|r,||_        |xj        d	z  c_        |                                 nt          dd
it          j                  S t$          j                            |                              d          	                                }	|	r|	r
|	j        d	z   nd	}
nd	}
t$          j                            |||
          }t          ddi          S )Nr   r   r   r  r  rn  r2  ro  r	   workout not foundr  r  rp  r   )r   rk   r   r@   r   r   r`   r;   ra   rb   r   rZ   r[   r]   r  r  r  rg   PublicWorkoutAttemptr  r  rf   )rm   rn   r   rw   rp   rZ   r  rn  r  r  r  r  s               r3   rx   zstartPublicWorkout.post  s1   N

 
 CC
 N N NYA'0LMMMMMMMMMN /((C(006688<
 UY 01&:STTTT
,4&&:hh122
 _Y 89&B]^^^^
 eY >?Hcdddd  '':'66<<>>7 Z"2GQLLNNNNY 34V=XYYYY '.555LLUUVghhnnpp< =IP,599q!)00lGdw0xx7
Iy)
*
**    
A)AAANry   r}   r5   r3   r  r    s#        &+ &+ &+ &+ &+r5   r  c                       e Zd Zd ZdS )endPublicWorkoutc                    	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j        }|                    d          }|st          ddit          j
                  S |                    d          }|                    d          }|st          dd	it          j
                  S |                    d
          }	|                    d          }
|	st          ddit          j
                  S |
st          ddit          j
                  S t          j                            |          	                                }|st          ddit          j
                  S t          j                                                    }d}|t#          |                                          z
  }|t#          d          z   }|                    d          }t'          |           t'          |           t(          j                            |          	                                }t'          |           t'          t+          |                     |rt-          j        |          }|D ]}t'          |           |d         }t0          j                            |          	                                }t2          j                            |||||||	d          	                                }|s't2          j                            |||||||	d           t6          j                            ||                              d          	                                }|rR||_        t!          j                    |_        ||_         |	|_!        |"                                 t          ddi          S t6          j                            |||t!          j                    ||	           t          ddi          S )Nr   r   r   r  r  r(  rS  ru  rv  rw  r  rx  ry  rz  r\  r{  r|  r.  T)r   r1  r3  r  ru  r}  rw  r~  r6  r  r   )r   r  rS  r  ru  rw  )#r   rk   r   r@   r   r   r`   r;   ra   rb   r   rZ   r[   r  r'   ry  r   r   r  ri   r  r   r  r  r  r  rf   r  r  rS  r  r  ru  rw  rg   )rm   rn   r   rw   rp   rZ   r  rS  ru  rw  r  r  r  r}  r  r  r.  r  r  r  r  r  r  s                          r3   rx   zendPublicWorkout.post	  s{   O!!SS O O OiQ(1MNNNNNNNNNO?))S)117799L Vi!126;TUUUU<D,''J \i!78AZ[[[[((?++M.))L ^i!9:6C\]]]]''KHH.//O ]i!89&B[\\\\ ai!<=fF_````#**j*99??AAK ]i!89&B[\\\\LNN!!ELI5==??;;;;M  )"3"3"33K''K	+	-%,,,<<BBDDL	-	$}

 9z-((Y 
9 
9Dkkk- f"*11V1<<BBDD+3::Vb  qA  JU&L$$ ; 8 88=   9$++|eu  J'\%4 , 9 9 9 (/66LQ\6]]ffgxyy  B  BL - -\#':<<\ +\)\i+,,,!((l;'!Z\\%#	 ) % % % i+,,,r  Nry   r}   r5   r3   r  r    s(        K- K- K- K- K-r5   r  c                       e Zd Zd ZdS )GetEndWorkoutdetailsc                    	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j                            d          }|st          ddit          j
                  S t          j                            |          	                                }|st          ddit          j
                  S t          j                            ||          }|st          dd	it          j
                  S t          d
|                                d          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r  r  r(  rz  r6  zworkoutattempt not foundr   rd  )r   rk   r   r@   r   r   r`   r;   ra   rb   r   r  r[   r  rq  r@  rl   )rm   rn   r   rw   rp   r  r  workoutattempts           r3   r[   zGetEndWorkoutdetails.getV  s   VN

 
 CC
 N N NYA'0LMMMMMMMMMN /((C(006688<
 UY 01&:STTTT--:
 [Y 67@YZZZZ!)00J0??EEGG;
 \Y 78AZ[[[[ (//\+/VV>
 _Y :;FD]^^^^
i>3H3H3J3JKK
L
LL	 V V V
Is1vv&v/T
U
U
UUUUUUUVs]    F 
A)AAF AAF %8F AF /?F /#F 
G)GGGNr   r}   r5   r3   r  r  U  s(        V V V V Vr5   r  c                       e Zd Zd ZdS )GetDiscoverDatac                 \   	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S t          j                            d          }t          |d          }t          d|j        d	          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)
Nr   r   r   r  Tr%  r   r   rd  )r   rk   r   r@   r   r   r`   r;   ra   rb   r   DiscoverMainCategoryMainCategorySerializerrZ   rl   )rm   rn   r   rw   rp   category_objcategory_serialize_datas          r3   r[   zGetDiscoverData.getq  sT   VN

 
 CC
 N N NYA'0LMMMMMMMMMN /((C(006688<
 UY 01&:STTTT'/66$6OO<3LMMM
i3J3OPP
Q
QQ	 V V V
Is1vv&v/T
U
U
UUUUUUUVr*  Nr   r}   r5   r3   r  r  p  (        V V V V Vr5   r  c                       e Zd Zd ZdS )GetDiscoverExercisec                 z   	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j                            d          }|st          ddit          j
                  S t          j                            |          }t          |          }|j        }t           j                            |j        |          	                                }	|	rd|d	<   t          d
|d          S d|d	<   t          d
|d          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r  subcategory_idzSubcategory id is required)discover_sub_categoryr   Tr  r   rd  F)r   rk   r   r@   r   r   r`   r;   ra   rb   r   r  r[   DiscoverSubCategory!GetSubCategoryExercisesSerializerrZ   FavouriteDiscoverSubCategoryr   rl   )
rm   rn   r   rw   rp   r  r  r  r  fav_objs
             r3   r[   zGetDiscoverExercise.get  s   VN

 
 CC
 N N NYA'0LMMMMMMMMMN /((C(006688<
 UY 01&:STTTT+//"233>
 bi!=>vG`aaaa&.22n2EE<>|LL#(8*299P\P_gs9ttzz||7 ?#H^yH==>>>$H^yH==>>>	 V V V
Is1vv&v/T
U
U
UUUUUUUVsW    E< 
A)AAE< AAE< %8E< BE< %E< <
F:)F5/F:5F:Nr   r}   r5   r3   r  r    r;  r5   r  c                       e Zd Zd ZdS )CreateConversationwithTrainerc                    	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|j
                            d          }|st          t          j        dd          S t          j                            |          	                                }|st          t          j        dd          S t          j                            ||          	                                }|r	|j        }nt          |j                  t          |j                  z   t          |j                  z   t          |j                  z   }	t%          |	          }
t'          j        |
           d	                    |
          }t,          j        }t,          j        }t3          ||          }|j        j        j                            |
          }t          j                            ||j                  }|j        |_        t=          j                    |_         |!                                 t          |j                  t          |j                  t          |j"                  d}tG          j$        |          }|j        j                            |j                  j%                            t          |j                  |          }t          |j                  t          |j                  t          |j"                  d}tG          j$        |          }|j        j                            |j                  j%                            t          |j                  |          }|j        |_&        |j        |_'        |!                                 |j        }t          t          j(        d|d          S # t          $ r4}t          dt          |          it          j)                  cY d }~S d }~ww xY w)Nr   r   r   rE  ztrainer_id is required.re  zNo trainer found)studentrW  rm  )friendly_name)r  rE  )r   r  r   )identity
attributesr  )rf  rg  twilio_channel_sid)*r   rk   r   r@   r   r   r`   r;   ra   rb   rZ   r[   r]   r?  Conversationconversation_room_idrH   r   r  rd   shufflejoinr   TWILIO_ACCOUNT_SIDTWILIO_AUTH_TOKENr    conversationsv1rf   sidr   ry  last_messagerg   r   r  dumpsparticipantsstudent_twilio_idtrainer_twilio_idrp  rl   )rm   rn   r   rw   rp   rE  rA  existing_conversationr  concatinate_namessuffle_stringconversation_nameaccount_sid
auth_tokenclientconversationconversation_objstudent_attributesstudent_json_attributesstudent_participanttrainer_attributes"trainer_attributes_json_attributestrainer_attributes_participants                          r3   rx   z"CreateConversationwithTrainer.post  s	   HVL

 
 CC
 L L LYs1vv&f.JKKKKKKKKKL/((C(006688< l|,,:
 oF$?Slmmnnn'':'66<<>>;
 hF$?Seffggg'/66|U`6aaggii 2?.C;011C8N4O4OORUVbVeRfRffilmxm{i|i||*++M
N=!!!..-K+JK,,F'	v-v..  $+22<S^Sa2cc,8,<)$,LNN!!,/22#l>T:U:U#$$  #j);<< .mL$%%fc,/**6MfNN	  "+.11[=R9S9S"##  *.4F)G)G&%+%9mL$%%fc+.))5WfXX	 # *=)@&)G)K&)> 6#5yfxyy
z
zz	 V V V
Is1vv&v/T
U
U
UUUUUUUVsR    P 
A)AAP AA,P >AP LP 
Q)QQQNry   r}   r5   r3   r  r    s-        IV IV IV IV IVr5   r  c                       e Zd Zd ZdS )CreateFavourateSubCategoryc                    	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddi          S |j
                            d          }|st          ddit          j                  S t          j                            |          	                                }|st          ddit          j                  S t          j                            ||d	          \  }}|s0|                                 t          t          j        d
d          S |                                 t          t          j        dd          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r  discover_subcategory_idz#discover_subcategory_id is requiredzNo subcategory foundT)r  r   
is_deletedzRemoved from favourite listre  zAdded to favourite list.)r   rk   r   r@   r   r   r`   r;   ra   rb   rZ   r[   r   r  r  get_or_creater  rp  rg   rl   )	rm   rn   r   rw   rp   r  discover_subcategory_objfavourite_postcreateds	            r3   rx   zCreateFavourateSubCategory.post  s#   XN

 
 CC
 N N NYA'0LMMMMMMMMMN /((C(006688<
 3Y 01222"<++,EFF
! jY EFvOhiiii 07>>BY>ZZ``bb
" \i!78AZ[[[[9AOOf~  EQ  ]aO  b  b>7
 d6#5Gdeefff6#5Gabbccc	 X X XiQ(1VWWWWWWWWWXs^    F* 
A)AAF* AAF* 8F* AF* #AF* :/F* *
G(4)G#G(#G(Nry   r}   r5   r3   r  r    s(        X X X X Xr5   r  c                       e Zd Zd ZdS )GetFavouriteSubCategoryc                    	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S t          j                            |                              dddd	d
dddddd                              d          }g }|D ]}|                    d          |d<   |                    d          |d<   |                    d          |d<   |                    d          |d<   |                    d          |d<   |                    d          |d<   |                    |           t          d|d          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r  r   r   r  r  r5  
updated_at$discover_sub_category__main_categorydiscover_sub_category__title"discover_sub_category__descriptiondiscover_sub_category__image!discover_sub_category__start_datediscover_sub_category__end_dater   discover_sub_main_categorydiscover_sub_category_title!discover_sub_category_descriptiondiscover_sub_category_image discover_sub_category_start_datediscover_sub_category_end_dater   rd  )r   rk   r   r@   r   r   r`   r;   ra   rb   r   r  r@  r  popr  rl   )rm   rn   r   rw   rp   get_favourite_subcategoryr  	favourites           r3   r[   zGetFavouriteSubCategory.get	  sN   !XP'""cc P P Py#a&&)&2NOOOOOOOOOP O**c*2288::\  Wy"23F<UVVVV #?"F"M"MS_"M"`"`"g"ghn  pG  HT  Ua  bn5,3.1/# # (4..  X/ ! !.7mm<b.c.ci,-/8}}=[/\/\i-.5>]]Cg5h5hi34/8}}=[/\/\i-.4=MMBe4f4fi232;--@a2b2bi01ooi    	X>>??? X X XiQ(1VWWWWWWWWWXsK    F3 
A)AAF3 AAF3 %DF3 3
G1=)G,&G1,G1Nr   r}   r5   r3   r  r  	  s(        "X "X "X "X "Xr5   r  c                       e Zd Zd ZdS )CreateUserAccessTokenc                    	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j        }t          t          t          t          |          }t           r*t#          t                     }|                    |           t&          j        j                            t                     j                                                            ddd	
          }||                                d}	t          t          j        d|	d          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r  )r  )service_sidTdefaultz5You have a new message in ${CONVERSATION}: ${MESSAGE})new_message_enablednew_message_soundnew_message_template)r  r-   zToken Created Successfullyrf  rg  rZ   )r   rk   r   r@   r   r   r`   r;   ra   rb   r   r   r$   r  api_sid
api_secretchat_service_sidr"   	add_grantr  r  r  servicesconfigurationnotificationsr   to_jwtrp  rl   )
rm   rn   r   rw   rp   r  r-   
chat_grantr,   rs  s
             r3   rx   zCreateUserAccessToken.post7	  s   !VN

 
 CC
 N N NYA'0LMMMMMMMMMN/((C(006688<
 UY 01&:STTTTo8{7:xHHH5  '7888J	OOJ&HMOO
FP     <<>> 7 6#5Gckrss
t
tt	 V V V
Is1vv&v/T
U
U
UUUUUUUVsK    F	 
A)AAF	 AAF	 %C#F	 	
G)G<GGNry   r}   r5   r3   r  r  6	  s(        "V "V "V "V "Vr5   r  c                       e Zd Zd ZdS )GetConverstationListingc                 v   	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }t          j                            |          }t          j        }t          j        }t          ||          }g }	|D ]	}
|j        j                            |
j                  j                            dd          }d}d}d}|D ]V}|j        r&|j        }t+          |j                  d	z   }|j        }/|j        r d
}t+          |j                  d	z   }|j        }W|
j        |
j        |
j        j        |
j        j        |
j        j        |
j        j        |
j        j        |
j        j        |||d}|	                    |           t          t          j        d|	d          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   )r  descr	   )orderlimitrm  rj  file)r   r  customer_namecustomer_imagecustomer_idr  r  rE  r  timemessage_dater  r  ) r   rk   r   r@   r   r   r`   r;   ra   rb   r  r   r  r  r    r  r  r  r   r  r+   r   date_createdmediar   r  rH   r   rW  r  rp  rl   )rm   rn   r   rw   rp   r  r  r  r  conversation_listr  r   r  r  r  recordconversation_datas                    r3   r[   zGetConverstationListing.get^	  st   1VL

 
 CC
 L L LYs1vv&f.JKKKKKKKKKL/((C(006688<  '...FF=,;*:;
++6$ !0 !0|#	}\677t&t""	 
 LDL 	) 	) )[lv*++F2d(ll
, )lv*++F2d(l ?'<"*4#+1'*!)3"*0'*    .////
6#5yXijj
k
kk	 V V V
Is1vv&v/T
U
U
UUUUUUUVsD    G: 
A)AAG: AF(G: :
H8)H3-H83H8Nr   r}   r5   r3   r  r  ]	  s(        2V 2V 2V 2V 2Vr5   r  c                       e Zd Zd ZdS )saveWeightReportc                    	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j                            d          }|st          ddit          j
                  S |j                            d          }|st          ddit          j
                  S t          j                            ||j        	          	                                }|r#||_        ||_        |                                 n"t          j                            |||
           t          t          j        dd          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r  r  weight is requiredr   zdate is required)r   r   )r   r   r  r  re  )r   rk   r   r@   r   r   r`   r;   ra   rb   r   rZ   r[   WeightReportr   r  r   rg   rf   rp  rl   )rm   rn   r   rw   rp   r  r   
weight_objs           r3   rx   zsaveWeightReport.post	  s   VN

 
 CC
 N N NYA'0LMMMMMMMMMN/((C(006688<
 UY 01&:STTTTLX&&6
 YY 45f>WXXXX
,

6
"
"4
 WY 23F<UVVVV%,,D,PPVVXX: QJJOOOt<PPP
6#5yQQ
R
RR	 V V V
Is1vv&v/T
U
U
UUUUUUUVsW    F2 
A)AAF2 AAF2 %8F2 8F2 BF2 2
G0<)G+%G0+G0Nry   r}   r5   r3   r  r  	  r;  r5   r  c                       e Zd Zd ZdS )saveBmiReportc           	      \   	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j                            d          }|st          ddit          j
                  S |j                            d          }|st          ddit          j
                  S t          |          t          |          z  }t          |          |z  }t          |          d	k     rd
}	t          |          d	k    r|dk     rd}	t          |          dk    r|dk     rd}	t          |          dk    rd}	t          j                            |j                  	                                }
|
r>||
_        ||
_        |	|
_        t          |          |
_        |
                                 n1t          j                            ||||	t          |                     t          t          j        d|d          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r  r  r  heightzheight is requiredg     2@Underweight   Normal   
OverweightObesityr  )r   r  r  bmi	bmi_valuer  )rf  rg  r#  )r   rk   r   r@   r   r   r`   r;   ra   rb   r   rZ   r[   float	BmiReportr   r  r  r"  r#  rg   rf   rp  rl   )rm   rn   r   rw   rp   r  r  total_heightxr"  
bmi_reports              r3   rx   zsaveBmiReport.post	  s   -VN

 
 CC
 N N NYA'0LMMMMMMMMMN/((C(006688<
 UY 01&:STTTTLX&&6
 YY 45f>WXXXXLX&&6
 YY 45f>WXXXXfeFmm+<
 V}}\!1AhhooCAhhnn2CAhh"nnRCAhh"nn
C!(((@@FFHH: nJJJN 88JOOL&VYdijkdldlmmm
6#5y]^__
`
``	 V V V
Is1vv&v/T
U
U
UUUUUUUVsW    I- 
A)AAI- AAI- %8I- 8I- EI- -
J+7)J& J+&J+Nry   r}   r5   r3   r  r  	  (        .V .V .V .V .Vr5   r  c                       e Zd Zd ZdS )getUserHealthReportc           	         	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S t          j                            |j                  }g }|D ],}|j        |j        |j        d}|                    |           -t           j                            |j                  	                                }	|	r|	j        }
|	j        }nd }
d }|
|d}t&          j                            |          }d	}d	}|D ][}|j        rR|j                                        d
z  }t-          |dz            }|t-          |          z  }|t-          |          z  }\|                                ||d}t          t          j        d|||d	d          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r  )user_id)r   r  r   r  )r#  bmi_typer   r  r8   )total_workouttotal_caloriestotal_minutesr  )rf  rg  weight_Databmi_datacalorie_datar0  )r   rk   r   r@   r   r   r`   r;   ra   rb   r   r  r   r  r   r  r%  r#  r"  rq  r  total_secondsr?   r   rp  rl   )rm   rn   r   rw   rp   weight_reportr2  r  r  bmi_objr#  r.  r3  r  r0  r1  r  minutescaloriesr4  s                       r3   r[   zgetUserHealthReport.get	  s   2VN

 
 CC
 N N NYA'0LMMMMMMMMMN/((C(006688<
 UY 01&:STTTT'...JJ=; ! !v
)mK H
 x    %%LO%<<BBDD7 I[HHIH  8
 %,,,,??;>= # #w #&4466;WGaK  XS]]"^c'll"]%%''#! <
 6#5y_jv~  O[  mn  o  o  p  p  p	 V V V
Is1vv&v/T
U
U
UUUUUUUVsK    H 
A)AAH AAH %E H 
I)H?9I?INr   r}   r5   r3   r+  r+  	  (        3V 3V 3V 3V 3Vr5   r+  c                       e Zd Zd ZdS )GetStudentWorkOutPlanByWeekc                    	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }t          j                            |          	                                }|st          ddit          j                  S |j                            d          }t          j                    }|t!          |                                          z
  }|t!          d          z   }	g }
t%          d	          D ]*}|t!          |          z   }|
                    |           +||cxk    r|	k    r#n n |j        |k    r|
                    |           t*          j                            ||
d
                              dddddd          }g }|D ]}|                    d          |d<   |                    d          |d<   |                    d          |d<   |                    d          |d<   |                    d          |d<   |                    d          |d<   |                    |           t          t          j        |d          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   rX  r   date_numr{  r|     T)r  created_at__date__inrP   student__app_user__full_nameworkout__idworkout__nameworkout__imagern  r5  student_full_namer  workout_nameworkout_imagerf  rZ   )r   rk   r   r@   r   r   r`   r;   ra   rb   rM  r   r  r[   r   r  r   r  ranger  rQ  r  r@  r  rp  rl   )rm   rn   r   rw   rp   student_objr?  current_dater  r  all_dates_in_week
day_offsetcurrent_dayr.  r  r  s                   r3   r[   zGetStudentWorkOutPlanByWeek.get
  s5   .VM!!SS M M MiA'v/KLLLLLLLLLM?))S)117799L"))L)AAGGIIK Vi!126;TUUUU[__Z((H:<<L !9,2F2F2H2H#I#I#IIM  )"3"3"33K Ahh + +
 9*#=#=#==[k**** 333333333H$$|,,,'/66{`q  FJ6  K  K  R  R#M/BRSefrt tH%    	$-MM2P$Q$QY"#&]]=99Y|(}}_==Y~ ).> ? ?Y#,==1C#D#DY!"&]]<88Y|__YF$6hGGHHH	 V V V
Is1vv&v/T
U
U
UUUUUUUVsK    J* 
A)AAJ* ABJ* GJ* *
K(4)K#K(#K(Nr   r}   r5   r3   r<  r<  
  s(        /V /V /V /V /Vr5   r<  c                       e Zd Zd ZdS )GetNearestUserTrainerc           
      P   	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j                            d          }|j                            d          }t          |          }t          |          }|st          d|dt          j
                  S |st          dd	it          j
                  S d
}t          j                            t          ||dz  z
  ||dz  z   ||dz  z
  ||dz  z                       }g }	|D ]<}
|	                    |
j        |
j        |
j        |
j        |
j        |
j        d           =t,          j                            t          ||dz  z
  ||dz  z   ||dz  z
  ||dz  z                       }g }|D ]<}|                    |j        |j        |j        |j        |j        |j        d           =t          t          j        |	|d          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r   user_lat	user_longzuser latitude not found)r   rS  zuser longitude not foundr  gfffff[@)latitude__gtelatitude__ltelongitude__gtelongitude__lte)r   rH   rI   r   rL   rM   )rf  r  rR  )r   rk   r   r@   r   r   r`   r;   ra   rb   r   r  r[   r$  r   r  r   rH   rI   r   rL   rM   r?  rp  rl   )rm   rn   r   rw   rp   rS  rT  kmrangeusers_within_30kmr  r   trainers_within_10kmrR  rW  s                 r3   r[   zGetNearestUserTrainer.getL
  s=   GVN

 
 CC
 N N NYA'0LMMMMMMMMMN /((C(006688<
 UY 01&:STTTTKOOJ''8[__[))98__8I9  r 9XNNW]Wpqqqq
 _Y :;FD]^^^^ 7--X%/%/'E/1'E/14 4 4  9   t7.jj.      "/00X%/%/'E/1'E/14 4 4  <&  w:#mm!#      %      
 V V V
Is1vv&v/T
U
U
UUUUUUUVsX    I' 
A)AAI' AAI' %A1I' I' 6D0I' '
J%1)J J% J%Nr   r}   r5   r3   rQ  rQ  K
  s-        HV HV HV HV HVr5   rQ  c                       e Zd Zd ZdS )StudentFeedbackc                    	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }t          j                            |          	                                }|st          ddit          j                  S |j                            d          }|j                            d          }|st          ddit          j                  S t          j                            |          	                                }|st          dd	it          j                  S t           j                            |j        j                  	                                }	|	st          dd	it          j                  S 	 t&          j                            ||	||
           t          ddit          j                  S # t          $ r(}t          d| it          j                  cY d }~S d }~ww xY w# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r>  r   r  feedbackr2  r  )r  rW  r  r_  zSaved successfully)r   rk   r   r@   r   r   r`   r;   ra   rb   rM  r   rZ   r[   r]   r  r?  rW  r   CreateStudentFeedbackrf   rl   )
rm   rn   r   rw   rp   rK  r  r_  r  r  s
             r3   rx   zStudentFeedback.post
  s   )VN

 
 CC
 N N NYA'0LMMMMMMMMMN /((C(006688<!((<(@@FFHH;
 UY 01&:STTTT l|,,:LZ((8
 _Y 89&B]^^^^  '' (  
UWW   XY 34V=VWWWW%%);%<<BBDD;
 XY 34V=VWWWW	K!((	 )   
 Y 45f>WXXXX
 K K KY1'0IJJJJJJJJJK 
 V V V
Is1vv&v/T
U
U
UUUUUUUVs    I 
A)AAI ABI AI *AI ;AI ?H 
I	!I>I	?I I		I 
J
)J?J
J
Nry   r}   r5   r3   r]  r]  
  s(        *V *V *V *V *Vr5   r]  c                       e Zd Zd ZdS )SaveCaloriesDatac                    	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j        }|                    d          }|st          ddit          j
                  S 	 t          j                            ||           t          ddit          j                  S # t          $ r6}t!          |           t          dd	it          j
                  cY d }~S d }~ww xY w)
Nr   r   r   r  r0  ztotal_calories not found)r   r0  z calories data saved successfullyz&something went wrong while saving data)r   rk   r   r@   r   r   r`   r;   ra   rb   r   rZ   r[   CaloriesDatarf   HTTP_201_CREATEDri   )rm   rn   r   rw   rp   rZ   r0  s          r3   rx   zSaveCaloriesData.post
  s   O!!SS O O OiQ(1MNNNNNNNNNO?))S)117799L Vi!126;TUUUU<D88,--N `i!;<VE^____n  l. QQQi!CDVMdeeee n n n
1XXXi!IJSYSlmmmmmmmmmns8    
A)AAA =D 
E(+EEENry   r}   r5   r3   rb  rb  
  s(        n n n n nr5   rb  c                       e Zd Zd ZdS )GetCaloriesDatac                    	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j        }|                    d          }|st          ddit          j
                  S |}t          j        |d                                          }	 t           j                            ||          }	t          t          j        |	                                d	          S # t          $ r&}t          |ht          j
                  cY d }~S d }~ww xY w)
Nr   r   r   r  get_datezget_date not foundz%d/%m/%Y)r   created_at__daterI  )r   rk   r   r@   r   r   r`   r;   ra   rb   r   r  r[   r   r  r   rd  rp  r@  )
rm   rn   r   rw   rp   rZ   ri  date_strdate_objr  s
             r3   r[   zGetCaloriesData.get
  s   O!!SS O O OiQ(1MNNNNNNNNNO?))S)117799L Vi!126;TUUUU;DXXj!!H Zi!56v?XYYYYH :66;;==H="))|X)VVXF$6hoo>O>OPPQQQ = = =qc&";<<<<<<<<<=s9    
A)AAA	AE 
F"F=FFNr   r}   r5   r3   rg  rg  
  s#        = = = = =r5   rg  c                       e Zd Zd ZdS )GenerateCardsc                    	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j        }|                    d          }|                    d          }|                    d          }|                    d          }	|r|r|st          dd	it          j                  S 	 t          j                            |j         |	
          }
t$          j                            ||
d                                                   s0t$          j                            ||
d         |j        |||           t          ddit          j                  S # t          j        j        $ r4}t          dt          |          it          j                  cY d }~S d }~wt          $ r'}t          ddit          j                  cY d }~S d }~ww xY w)Nr   r   r   r  card_digits	exp_monthexp_year	source_idzInvalid card data provided)sourcer   )r   card_id)r   ru  the_user_stripelast_digitsrq  rr  zCard data saved successfullyzInternal server error)r   rk   r   r@   r   r   r`   r;   ra   rb   r   rZ   r[   r]   stripeCustomercreate_source	stripe_id	UserCardsexistsrf   re  errorStripeErrorrl   )rm   rn   r   rw   rp   rZ   rp  rq  rr  rs  card_detailss              r3   rx   zGenerateCards.post
  s   M	w		33	 M M M
Is1vv&v/K
L
L
LLLLLLLM ''3'//5577,	 T
I/09R
S
S
SS	$''+hh{##)XXj!!(HH[!!)	 bI bX b
I;<VE`
a
a
aag /// 0  < 

"
"\$=O
"
P
P
W
W
Y
Y 
$!+     I=>vG^
_
_
__		! L L L
Is1vv&v/J
K
K
KKKKKKK	 g g g
I67@e
f
f
fffffffgsK    
A)AAA#B,G I$)HII I<IINry   r}   r5   r3   rn  rn  
  s(        .g .g .g .g .gr5   rn  c                       e Zd Zd ZdS )ListallCardsc                 N   	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S 	 t          j                            |d          }t          t          j        |                                d          S # t          $ r&}t          |ht          j
                  cY d }~S d }~ww xY w)Nr   r   r   r  Trh  rI  )r   rk   r   r@   r   r   r`   r;   ra   rb   r   r|  rp  r@  rm   rn   r   rw   rp   r  s         r3   r[   zListallCards.get$  s<   O!!SS O O OiQ(1MNNNNNNNNNO?))S)117799L Vi!126;TUUUU=&&LD&QQXF$6hoo>O>OPPQQQ = = =qc&";<<<<<<<<<=s9    
A)AAA%AC4 4
D$>DD$D$Nr   r}   r5   r3   r  r  #  s#        = = = = =r5   r  c                       e Zd Zd ZdS )DeleteCardsc                    	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j        }|                    d          }t          j                            |          }|                    t          j                               |	                                }|j         	 t$          j                            |j        j        |j                   t          dh          S # t$          j        $ r6}t          |          }t          d|it          j
                  cY d }~S d }~wt          $ r6}t          |          }t          d|it          j                  cY d }~S d }~ww xY w)	Nr   r   r   r  ru  rx  zmessage:deleted successfullyr~  )r   rk   r   r@   r   r   r`   r;   ra   rb   r   rZ   r[   r|  r   r   r  ru  rx  ry  delete_sourcer   r{  r  rl   )	rm   rn   r   rw   rp   rZ   r   r  error_messages	            r3   rx   zDeleteCards.post5  s   O!!SS O O OiQ(1MNNNNNNNNNO?))S)117799L Vi!126;TUUUU<D	)		B%%%,,HOOX^--O...			DLL]_""
i
l   45666 Q Q QVV] g}-f6OPPPPPPPPP ] ] ]VV] g}-f6[\\\\\\\\\]sJ    
A)AAA#>E" "G%1+F"G%"G%/+G G% G%Nry   r}   r5   r3   r  r  4  s(        !] !] !] !] !]r5   r  c                       e Zd Zd ZdS )CreatePaymentc           
         	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j        }|                    d          }|                    d          }|                    d          }t          j                            t!          |          dz  d	d
|          }	|	j        |	j        |	j        j        d}
t*          j                            |d          	                                }|st          ddit          j
                  S 	 t,          j                            t/                      ||t          |          |
d         |
d         |
d         d           t0          j                            |          	                                }|rAt!          |j                  }|t!          |          z   }||_        |                                 t          dt          j        d          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r  rE  rs  amountr  usdPayment)r  currencyr  rt  )txn_idrecipet_urlpayment_modeTr  r\  r  r  r  pay)r>   rW  r   r  r  r  r  transcation_typer  zPayment created successfully)r   rf  )r   rk   r   r@   r   r   r`   r;   ra   rb   r   rZ   r[   rx  Chargerf   r?   balance_transactionreceipt_urlpayment_method_detailsr   r?  r:   rD   TrainerWalletr  rg   rp  rl   )rm   rn   r   rw   rp   rZ   rE  rs  r  paymentpayment_checkr  
get_wallet
old_amount
new_amounts                  r3   rx   zCreatePayment.postZ  s   8VN

 
 CC
 N N NYA'0LMMMMMMMMMN /((C(006688<
 UY 01&:STTTT
,4&&:xx$$9HHX6]!!v;;	 "  7 )&27 = '':'MMSSUU;
 XY 34V=VWWWWW##*,,
KK(#}-/ $ 	 	 	 &--k-BBHHJJJ j'((Zs6{{*Z#Z__ >vOabbccc
 W W WYA'0UVVVVVVVVVW 
 V V V
Is1vv&v/T
U
U
UUUUUUUVsv    J/ 
A)AAJ/ AAJ/ %C$J/ C"I. .
J,8)J'!J,"J/ 'J,,J/ /
K-9)K("K-(K-Nry   r}   r5   r3   r  r  Y  s(        9V 9V 9V 9V 9Vr5   r  c                       e Zd Zd ZdS )GetWorkoutFeedbackc                 p   	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j                            d          }|st          ddit          j
                  S t          j                            |          	                                }|st          ddit          j
                  S t          j                            |                              d	d
dd          }t          d|d          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r\  r  r(  zworkout_obj not foundr  rB  student__app_user__imager_  r5  r   r   )r   rk   r   r@   r   r   r`   r;   ra   rb   r   r  r[   r  r`  r@  rl   )rm   rn   r   rw   rA  r  workout_objr_  s           r3   r[   zGetWorkoutFeedback.get  s   XP'""cc P P Py#a&&)&2NOOOOOOOOOP?))S)117799[ Zy"56v?XYYYY--Z ]y"89&B[\\\\$++z+::@@BB[ ^y"9:6C\]]]]%-44[4IIPPQo  qK  LV  Wc  d  dX	::;;; X X XiQ(1VWWWWWWWWWXsX    E7 
A)AAE7 AAE7 %8E7 AE7 /AE7 7
F5)F0*F50F5Nr   r}   r5   r3   r  r    s(        X X X X Xr5   r  c                       e Zd Zd Zd ZdS )EditSubExercisec                    	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j        }|                    d          }|st          ddit          j                  S t          j                            |          	                                }t          |          j        }t          d|d          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)	Nr   r   r   r  r.  r/  r   r   )r   rk   r   r@   r   r   r`   r;   ra   rb   r   r4  r[   r]   r  SubExerciseSerializerrZ   rl   )	rm   rn   r   rw   user_objrZ   r.  r9  r:  s	            r3   r[   zEditSubExercise.get  s   VN

 
 CC
 N N NYA'0LMMMMMMMMMN o$$$,,22448
 UY 01&:STTTT

4-((;
 `Y 9:6C^____!)00K0@@FFHH23CDDI
i/FGG
H
HH	 V V V
Is1vv&v/T
U
U
UUUUUUUVsQ    D8 
A)AAD8 AAD8 %:D8  AD8 8
E6)E1+E61E6c                 @   	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j        }|                    d          }|                    d          }|                    d          }|                    d          }	|                    d	          }
|                    d
          }|                    d          }|                    d          }|                    d          }|                    d          }|                    d          }|                    d          }|st          ddit          j                  S |st          ddit          j                  S |st          ddit          j                  S |	st          ddit          j                  S |
st          ddit          j                  S |st          ddit          j                  S |st          ddit          j                  S |st          ddit          j                  S |st          ddit          j                  S |st          ddit          j                  S |st          ddit          j                  S |st          ddit          j                  S t          j                            |          	                                }|st          ddit          j
                  S ||_        ||_        |	|_        |
|_        ||_        ||_        ||_        ||_        ||_        ||_        ||_        |                                 t          ddi          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r  r.  r  r  r8  noter   r  repsr  youtube_linkr  videoszname is requiredzdescription is requiredr/  zcomments is requiredznote is requiredr   zsets is requiredr  zreps is requiredzyoutube_link is requiredzimages is requiredzvideos is requiredzExercise not foundr   )r   rk   r   r@   r   r   r`   r;   ra   rb   r   rZ   r[   r]   r  r  r  r8  r  r   r  r  r  r  r  r  rg   rl   )rm   rn   r   rw   r  rZ   r.  r  r  r8  r  r   r  r  r  r  r  r  r9  s                      r3   rx   zEditSubExercise.post  sq   DVN

 
 CC
 N N NYA'0LMMMMMMMMMN o$$$,,22448
 UY 01&:STTTT
,4-((;
((6

4-((;hhz""8
((6

4&&:
((6

4
((6

4HHX6((>**<HHX6HHX6
 YY 23F<WXXXX
 `Y 9:6C^____
 `Y 9:6C^____
 ]Y 67@[\\\\
 YY 23F<WXXXX
 _Y 89&B]^^^^
 YY 23F<WXXXX
 [Y 45f>YZZZZ
 YY 23F<WXXXX
 aY :;FD_````
 [Y 45f>YZZZZ
 [Y 45f>YZZZZ!)00K0@@FFHH
 YY 45f>WXXXX +'!+##/ !#
Ii(
)
))	 V V V
Is1vv&v/T
U
U
UUUUUUUVs    O 
A)AAO AAO %D!O O &O O $O O "O O  O ?O O =O AO -A1O 
P))PPPN)rz   r{   r|   r[   rx   r}   r5   r3   r  r    s?        V V V&EV EV EV EV EVr5   r  c                       e Zd Zd ZdS )GetSubExerciseListc                    	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j        }|                    d          }|st          ddit          j                  S t          j                            |d          	                                }t          j                            |d	          }g }	|D ]]}
|
j                            d
                              dd                              d          }|
j                            d
                              dd                              d          }|
j                            d
                              dd                              d          }d |D             }d |D             }d |D             }i d|
j        d|
j        d|
j        d|
j        d|
j        d|d|
j        d|
j        d|
j        d|
j        d|
j        d|d|d|
j         d|
j!        d|
j"        }_|	#                    |           t          d |	d!          S # t          $ r4}t          dt          |          it          j$                  cY d }~S d }~ww xY w)"Nr   r   r   r  r.  r/  Tr  )r1  rP   []'rm  , c                 6    g | ]}|                                 S r}   stripr  s     r3   
<listcomp>z*GetSubExerciseList.get.<locals>.<listcomp>  s     ===$===r5   c                 6    g | ]}|                                 S r}   r  r  s     r3   r  z*GetSubExerciseList.get.<locals>.<listcomp>       555dTZZ\\555r5   c                 6    g | ]}|                                 S r}   r  r  s     r3   r  z*GetSubExerciseList.get.<locals>.<listcomp>   r  r5   r   r  r  r  r   r  r  r  r  
video_linkr  r  r5  r  r   r   r   )%r   rk   r   r@   r   r   r`   r;   ra   rb   r   r4  r[   r]   Exerciser  r   r  replacesplitr  r  r   r.  r  r  r  r  r  r  r  r  r5  r  r   r  rl   )rm   rn   r   rw   r  rZ   r.  r(  subexercise_obj
total_datar1  r   r  r  focus_area_resultvideos_resultimages_results                    r3   r[   zGetSubExerciseList.get  s   -VN

 
 CC
 N N NYA'0LMMMMMMMMMN o$$$,,22448
 UY 01&:STTTT

4-((;
 `Y 9:6C^____"))[$)OOUUWW<&--|UY-ZZ?:"  x$**40088bAAGGMMJ_""4((00b99??EEF_""4((00b99??EEF==*===55f555M55f555M
(+
8'
 HM
 8'	

 X]
 "
 X]
 X]
 x
 X*
 8&
 m
 }
 8&
 (%
  "!
DD$ T
iz::
;
;;	 V V V
Is1vv&v/T
U
U
UUUUUUUVsQ    J> 
A)AAJ> AAJ> %:J>  GJ> >
K<)K71K<7K<Nr   r}   r5   r3   r  r    r)  r5   r  c                       e Zd Zd ZdS )GetSubExerciseDetailsc                    	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j        }|                    d          }|st          ddit          j                  S t          j                            |d          	                                }g }|j                            d	                              d
d                              d          }	|j                            d	                              d
d                              d          }
|j                            d	                              d
d                              d          }d |	D             }d |
D             }d |D             }i d|j        d|j        d|j        d|j        d|j        d|d|j        d|j        d|j        d|j        d|j        d|d|d|j        d|j         d|j!        }|"                    |           t          d |d!          S # t          $ r4}t          dt          |          it          j#                  cY d }~S d }~ww xY w)"Nr   r   r   r  sub_exercise_idzsub_exercise_id is requiredTr  r  r  rm  r  c                 6    g | ]}|                                 S r}   r  r  s     r3   r  z-GetSubExerciseDetails.get.<locals>.<listcomp>P  s     <<<

<<<r5   c                 6    g | ]}|                                 S r}   r  r  s     r3   r  z-GetSubExerciseDetails.get.<locals>.<listcomp>Q       444TDJJLL444r5   c                 6    g | ]}|                                 S r}   r  r  s     r3   r  z-GetSubExerciseDetails.get.<locals>.<listcomp>R  r  r5   r   r.  r  r  r  r   r  r  r  r  r  r  r  r5  r  r   r   r   )$r   rk   r   r@   r   r   r`   r;   ra   rb   r   r4  r[   r]   r  r   r  r  r  r  r  r   r.  r  r  r  r  r  r  r  r  r5  r  r   r  rl   )rm   rn   r   rw   r  rZ   r  r  r  r   r  r  r  r  r  s                  r3   r[   zGetSubExerciseDetails.get:  si   2VN

 
 CC
 N N NYA'0LMMMMMMMMMN o$$$,,22448
 UY 01&:STTTT

4XX/00?
 dY =>vGbcccc&--RV-WW]]__?:*0066>>sBGGMMdSS:"((..66sB??EEdKK6"((..66sB??EEdKK6<<<<<44V444=44V444=			/-	 
?	 /-		
 
O 	 !	 
O 	 
O 	 o$	 O0	 /,	 ]	 m	 /,	 +	  (!	4$ T
iz::
;
;; 
 V V V
Is1vv&v/T
U
U
UUUUUUUVsQ    J 
A)AAJ AAJ %:J  F5J 
K )K	KKNr   r}   r5   r3   r  r  9  r:  r5   r  c                       e Zd Zd ZdS )ReadNotificationsc                 *   	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S t          j                            d          }t          ddit          j
                  S # t          $ r&}t          |ht          j
                  cY d }~S d }~ww xY w)Nr   r   r   r  T)ri  znotification read successfully)r   rk   r   r@   r   r   r`   r;   ra   rb   r   ro  r   )rm   rn   r   rw   rp   r,   s         r3   rx   zReadNotifications.postp  s7   ;O!!SS O O OiQ(1MNNNNNNNNNO ?))S)117799L Vi!126;TUUUU$,33D3AALY @A&Jcdddd  ; ; ;QC 9:::::::::;sJ    C" 
A)AAC" AAC" %<C" "
D,DDDNry   r}   r5   r3   r  r  o  s#        ; ; ; ; ;r5   r  c                       e Zd Zd ZdS )ChangeisFavWorkoutTrainerStatusc                    	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j        }|                    d          }|st          ddit          j
                  S |                    d          }|st          ddit          j
                  S t          j                            |d	
          	                                }|dk    rd	|_        nd|_        |                                 |j        |j        |j        |j        d}	t          d|	d          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r  rE  ztrainer_id not foundr  isFavourite not foundTr  trueFr   zis_favourate status changedr   )r   rk   r   r@   r   r   r`   r;   ra   rb   r   rZ   r[   r?  r  rg   r   rH   r   rl   )
rm   rn   r   rw   rp   rZ   rE  r  rA  r  s
             r3   rx   z$ChangeisFavWorkoutTrainerStatus.post  s    VN

 
 CC
 N N NYA'0LMMMMMMMMMN /((C(006688<
 UY 01&:STTTT
,4hh|$$:
 [Y 67@YZZZZ-((;
 \Y 78AZ[[[[%%T%JJPPRR;6!K"KN!+"(,	 8 <hOO
P
PP	 V V V
Is1vv&v/T
U
U
UUUUUUUVsW    F 
A)AAF AAF %:F  3F BF 
G')GGGNry   r}   r5   r3   r  r    s(        !V !V !V !V !Vr5   r  c                       e Zd Zd ZdS )GetIsFavouriteTrainersc                    	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S t          j                            dd          }g }|D ]0}|                    |j        |j        |j        |j        d           1t          d|d	          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)
Nr   r   r   r  T)r  rP   r   r   r   )r   rk   r   r@   r   r   r`   r;   ra   rb   r   r?  r  r   rH   r   r  rl   )rm   rn   r   rw   rp   rA  r  rW  s           r3   r[   zGetIsFavouriteTrainers.get  s   VN

 
 CC
 N N NYA'0LMMMMMMMMMN /((C(006688<
 UY 01&:STTTT%%4%NN;8  w__J'}(	      y99
:
::	 V V V
Is1vv&v/T
U
U
UUUUUUUVsK    D 
A)AAD AAD %A'D 
E)E EENr   r}   r5   r3   r  r    r;  r5   r  c                       e Zd Zd ZdS )ChangeFavWorkoutStatusc                 Z   	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j        }|                    d          }|st          ddit          j
                  S |                    d          }|st          ddit          j
                  S t          j                            d	|
          	                                }|st          ddit          j
                  S |dk    rd|_        nd|_        |                                 |j        |j        |j        |j        |j        |j        |j        |j        |j        |j        |j        |j        d}	t          d|	d          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r  r  r(  r  r  r\  )r]  r   zworkout_plan_obj not foundr  TFr^  r   rd  )r   rk   r   r@   r   r   r`   r;   ra   rb   r   rZ   r[   r  r  rg   r   r  r_  r  r`  r   ra  rb  rc  r]  r5  rl   )
rm   rn   r   rw   rp   rZ   r  r  re  rg  s
             r3   rx   zChangeFavWorkoutStatus.post  sp   0VN

 
 CC
 N N NYA'0LMMMMMMMMMN /((C(006688<
 UY 01&:STTTT ,4hh|$$:
 [Y 67@YZZZZ-((;
 \Y 78AZ[[[[!)00x:0VV\\^^
 aY <=fF_````6"&!!"'! 
	  ".""$2'8%4".!,"/ > i>BB
C
CC	 V V V
Is1vv&v/T
U
U
UUUUUUUVs^    G, 
A)AAG, AAG, %:G,  3G, AG, &BG, ,
H*6)H%H*%H*Nry   r}   r5   r3   r  r    s(        1V 1V 1V 1V 1Vr5   r  c                       e Zd Zd ZdS )GetIsFavouriteWorkoutsc                    	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S t          j                            ddd          }g }|D ]b}|j        |j        |j        |j        |j        |j        |j        |j        |j        |j        |j        |j        d}|                    |           ct          d	|d
          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r  r\  T)r]  r  rP   r^  r   rd  )r   rk   r   r@   r   r   r`   r;   ra   rb   r   r  r   r  r_  r  r`  r   ra  rb  rc  r]  r5  r  r  rl   )	rm   rn   r   rw   rp   re  r  r  rg  s	            r3   r[   zGetIsFavouriteWorkouts.get  s   VN

 
 CC
 N N NYA'0LMMMMMMMMMN /((C(006688<
 UY 01&:STTTT!)00xUYko0pp8" $ $w
*LL&]]*0,&$' N OON####
i8<<
=
==	 V V V
Is1vv&v/T
U
U
UUUUUUUVsK    E  
A)AAE  AAE  %BE   
E>
)E93E>9E>Nr   r}   r5   r3   r  r    rR  r5   r  c                       e Zd Zd ZdS )GetExercisetimerc                 P   	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S t          j                                                                        }t          d|d          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r  r   rd  )r   rk   r   r@   r   r   r`   r;   ra   rb   r   r   r@  r=   rl   r  s         r3   r[   zGetExercisetimer.get  sD   VN

 
 CC
 N N NYA'0LMMMMMMMMMN /((C(006688<
 UY 01&:STTTT#**,,11338
i8<<
=
==	 V V V
Is1vv&v/T
U
U
UUUUUUUVsK    C' 
A)AAC' AAC' %AC' '
D%1)D D% D%Nr   r}   r5   r3   r  r    r  r5   r  c                       e Zd Zd ZdS ) Getuserprivateworkoutperformancec                    	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j                            d          }|st          ddit          j
                  S t          j                            |d          	                                }|st          dd	it          j
                  S t          j                                                    }|t#          |                                
          z
  }|t#          d
          z   }	t&          j                            ||||	g                                          }
g }|
D ]}i }|d         |d<   |d         |d<   |d         |d<   	 t+          j        |d                             dd                    }n# t*          j        $ r g }Y nw xY wt3          d |D                       }||d<   |                    |           t7          |           t          d|it          j                  S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r  r  r(  Tr  !workout with workout_id not foundr{  r|  r   r  r  r-  rw  rS  r  "c              3      K   | ]E}t          |d                    t          |d                   z  t          |d                   z  V  FdS r  r  r  Nr$  r?   r  exs     r3   	<genexpr>z7Getuserprivateworkoutperformance.get.<locals>.<genexpr>Y  M      ffVX%8--BvJ?#bj//Qffffffr5   training_volumerZ   )r   rk   r   r@   r   r   r`   r;   ra   rb   r   r  r[   r  r'   ry  r   r   r  rq  r@  r  r  r  JSONDecodeErrorsumr  ri   rp  rl   rm   rn   r   rw   rp   r  r  r  r  r  r  complete_dataatt
entry_data	exercisesr  s                   r3   r[   z$Getuserprivateworkoutperformance.get+  s7   :VN

 
 CC
 N N NYA'0LMMMMMMMMMN /((C(006688<
 UY 01&:STTTTkool++:
 [Y 67@YZZZZ!)00JPT0UU[[]];
 hY CDVMfgggg<>>  5 9%--//::::= !2!2!22; #**kkx  {F  kG*  H  H  O  O  Q  Q7 =  % %sJ	NJy"<0J| #M 2J}C088cBBCCYY   YYY ff\efffffO %4J ! $$$$ 	
F=*63E
F
F
FF	 V V V
Is1vv&v/T
U
U
UUUUUUUV}    J 
A)AAJ AAJ %8J AJ 0B<J -.HJ H0-J /H00A"J 
K)KKKNr   r}   r5   r3   r  r  *  r~   r5   r  c                       e Zd Zd ZdS )Getuserpublicworkoutperformancec                    	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j                            d          }|st          ddit          j
                  S t          j                            |d          	                                }|st          dd	it          j
                  S t          j                                                    }|t#          |                                
          z
  }|t#          d
          z   }	t&          j                            ||||	g                                          }
g }|
D ]}i }|d         |d<   |d         |d<   |d         |d<   	 t+          j        |d                             dd                    }n# t*          j        $ r g }Y nw xY wt3          d |D                       }||d<   |                    |           t7          |           t          d|it          j                  S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r  r  r(  Tr  r  r{  r|  r  r-  rw  rS  r  r  c              3      K   | ]E}t          |d                    t          |d                   z  t          |d                   z  V  FdS r  r  r  s     r3   r  z6Getuserpublicworkoutperformance.get.<locals>.<genexpr>  r  r5   r  rZ   )r   rk   r   r@   r   r   r`   r;   ra   rb   r   r  r[   r  r'   ry  r   r   r  r  r@  r  r  r  r  r  r  ri   rp  rl   r  s                   r3   r[   z#Getuserpublicworkoutperformance.geti  s:   >VN

 
 CC
 N N NYA'0LMMMMMMMMMN /((C(006688<
 UY 01&:STTTTkool++:
 [Y 67@YZZZZ "))Z)NNTTVV;  hY CDVMfgggg<>>  5 9%--//::::= !2!2!22; ")00lKq~  AL  qM0  N  N  U  U  W  W7 =  % %sJ	NJy"<0J| #M 2J}C088cBBCCYY   YYY ff\efffffO %4J ! $$$$ 	
F=*63E
F
F
FF	 V V V
Is1vv&v/T
U
U
UUUUUUUVr  Nr   r}   r5   r3   r  r  h  s(        ?V ?V ?V ?V ?Vr5   r  c                       e Zd Zd ZdS )ChangeexerciseStatusc                    	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j        }|                    d          }|                    d          }|st          ddit          j
                  S t          |           t          j                            |d	          	                                }|st          dd
it          j
                  S ||_        |                                 t          ddit          j                  S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r  r.  r~  zexercise_id not foundTr  exercise not foundstatus changed successfully)r   rk   r   r@   r   r   r`   r;   ra   rb   r   rZ   r[   ri   r  r~  rg   rp  rl   )	rm   rn   r   rw   rp   rZ   r.  r~  r  s	            r3   rx   zChangeexerciseStatus.post  s   VN

 
 CC
 N N NYA'0LMMMMMMMMMN /((C(006688<
 UY 01&:STTTT
,4xx&&;((<
 \Y 78AZ[[[[#**k4*PPVVXX<  YY 45f>WXXXX)<
I;=fFX
Y
Y
YY	 V V V
Is1vv&v/T
U
U
UUUUUUUVsX    F 
A)AAF AAF %AF 5A F 7F 
G)GGGNry   r}   r5   r3   r  r    rR  r5   r  c                       e Zd Zd ZdS )GetUserWeeklyPrivateworkoutsc                 x   	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S t          j                                                    }|t          |                                          z
  }|t          d          z   }g }g }	t           j                            |||g          }
d}|
D ]}|j        rt%          j        |j                  }|D ]}|d	         r"t)          t+          |d	                             nd|d	<   |d
         r"t)          t+          |d
                             nd|d
<   |d         r"t          t+          |d                             nd|d<   |                    |j        |j        j        |j        j        |j        j        j        |j        j        j        |r|nd |j        |j        |j        d	           |j        r)|t?          t%          j        |j                            z  }|j        r/tA          |j                   |	                    |j                    tC          d d |	D             D                       }t          |          }|"                                }tG          |d          \  }}t?          |          }g d|$                    fd           t          dt)          |           dt)          |           ||d|dt          j%                  S # t          $ r4}t          dt          |          it          j&                  cY d }~S d }~ww xY w)Nr   r   r   r  r{  r|  )r   r  r   r  r  r  )	r   r-  r  rG  rH  rS  ru  rw  r  c              3      K   | ]=\  }}}t          |          d z  t          |          dz  z   t          |          z   V  >dS )r  r  N)r?   )r  hmss       r3   r  z3GetUserWeeklyPrivateworkouts.get.<locals>.<genexpr>  s`        1a FFTMCFFRK#a&&(     r5   c              3   @   K   | ]}|                     d           V  dS ):N)r  )r  r  s     r3   r  z3GetUserWeeklyPrivateworkouts.get.<locals>.<genexpr>  s,      <<DJJsOO<<<<<<r5   )r  r  MondayTuesday	WednesdayThursdayFridaySaturdaySundayc                 :                         | d                   S Nrw  rI  r'  
week_orders    r3   <lambda>z2GetUserWeeklyPrivateworkouts.get.<locals>.<lambda>      z//-0@AA r5   keyTr  r  )r   workout_minutes
total_dayscompleted_workoutsr   rZ   )'r   rk   r   r@   r   r   r`   r;   ra   rb   r   r'   ry  r   r   r  rq  rS  r  r  r?   r$  r  r   r   r  r  r   ru  rw  r  lenri   r  r5  divmodsortrp  rl   )rm   rn   r   rw   r  r  r  r  r  time_valuesr  r  r  rZ   r1  r5  r  r8  remaining_secondsr  r  s                       @r3   r[   z GetUserWeeklyPrivateworkouts.get  s>   FVN

 
 CC
 N N NYA'0LMMMMMMMMMN o$$$,,22448
 UY 01&:STTTT<>>  5 9%--//::::= !2!2!22;8; #**R_alQm*nn7 2 2s  W
*S&
'
'T W W9A&9IPU8F#344555qhv9A&9IPU8F#344555qhv=Eh=OV3uXh%788999UVhxOO6;>[(-k)/",dd%O+	- 	-     <TZ(9::;;;
 2
33.0111  <<<<<    =
 -000:++--= &}b 9 97(mm:^^^: ==AAAA=BBB
Ts7||4^4^cJ[F\F\4^4^lv  M_  js  {C  E  E  NT  N`  a  a  a  a	 V V V
Is1vv&v/T
U
U
UUUUUUUVsK    M; 
A)AAM; AAM; &KM; ;
N9)N4.N94N9Nr   r}   r5   r3   r  r    s-        GV GV GV GV GVr5   r  c                       e Zd Zd ZdS )GetUserPrivateworkoutdetailc           
      p   	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j                            d          }|st          ddit          j
                  S t          j                                                    }|t!          |                                          z
  }|t!          d          z   }t$          j                            ||||g	          }	g }
|	D ]X}|
                    |j        |j        j        |j        j        t/          j        |j                  |j        |j        d
           Yg d|
                    fd           t          d|
it          j                  S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r  rw  rx  r{  r|  )rw  r   r  )r   r-  r  rS  ru  rw  r	  c                 :                         | d                   S r  r  r  s    r3   r  z1GetUserPrivateworkoutdetail.get.<locals>.<lambda>@  r  r5   r  rZ   )r   rk   r   r@   r   r   r`   r;   ra   rb   r   r  r[   r'   ry  r   r   r  rq  r  r   r   r  astliteral_evalrS  ru  rw  r  rp  rl   )rm   rn   r   rw   r  rw  r  r  r  r  r  r  r  s               @r3   r[   zGetUserPrivateworkoutdetail.get  s{   +VN

 
 CC
 N N NYA'0LMMMMMMMMMN o$$$,,22448
 UY 01&:STTTT{}--;
 \Y 78AZ[[[[<>>  5 9%--//::::= !2!2!22;#**{jw  zE  jF*  G  G78
   s OO6;>&s'899%O      _^^: ==AAAA=BBB
F8%f.@
A
A
AA	 V V V
Is1vv&v/T
U
U
UUUUUUUVsQ    G7 
A)AAG7 AAG7 &8G7 DG7 7
H5)H0*H50H5Nr   r}   r5   r3   r#  r#    r  r5   r#  c                       e Zd Zd ZdS )ResetWorkoutc                 
   	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j        }|                    d          }t          j                            |          	                                }|                    d          }|st          ddit          j
                  S |st          ddit          j
                  S t          j                            ||d	
          }	|	st          ddit          j
                  S |	D ]}
d|
_        |
                                 t          ddit          j                  S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r  r  rw  rz  rx  T)r  rw  rP   r  Fr  )r   rk   r   r@   r   r   r`   r;   ra   rb   r   rZ   r[   r  r  r~  rg   rp  rl   )rm   rn   r   rw   rp   rZ   r  r  rw  r  objs              r3   rx   zResetWorkout.postF  s.   WO!!SS O O OiQ(1MNNNNNNNNNO ?))S)117799L Vi!126;TUUUU<Dxx%%J#**j*99??AAK''K ]i!89&B[\\\\ ]i!89&B[\\\\&.55kVasw5xxL  Zi!56v?XYYYY  SXXZZZZY<>vGYZZZZ
 W W WYA'0UVVVVVVVVVWs^    G 
A)AAG AAG %BG 'G A G <G 
H)G=7H=HNry   r}   r5   r3   r)  r)  E  s(        W W W W Wr5   r)  c                       e Zd Zd ZdS )Calculateworkoutperformancec                    	 	 t          |          }nA# t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY wt          j                            |          	                                }|st          ddit          j
                  S |j                            d          }|j                            d          }|st          ddit          j
                  S |st          ddit          j
                  S t          j                            |          	                                }|st          dd	it          j
                  S t          j                                                    }|t#          |                                
          z
  }	|	t#          d
          z   }
t&          j                            |||	|
gt          |                              d                                                    }g }|D ]}i }|d         |d<   |d         |d<   |d         |d<   t-          t          |d                                       d                    |d<   	 t/          j        |d                             dd                    }n# t.          j        $ r g }Y nw xY wt7          d |D                       }d}d |D             }|d         |z  }||d<   ||d<   |                    |           t;          |           t          d|it          j                  S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   r  r  ru  r(  rv  r  r{  r|  r  )r   r  r  ru  r-  rw  rS  r  c              3      K   | ]E}t          |d                    t          |d                   z  t          |d                   z  V  FdS r  r  r  s     r3   r  z2Calculateworkoutperformance.get.<locals>.<genexpr>  r  r5   g~jtX?c                     g | ]C}t          |d                    t          |d                   z  t          |d                   z  DS )r  r  r  r  r  s     r3   r  z3Calculateworkoutperformance.get.<locals>.<listcomp>  sC    gggWY5H..RZ@3r&z??Rgggr5   r   r  total_calories_countrZ   ) r   rk   r   r@   r   r   r`   r;   ra   rb   r   r  r[   r  r'   ry  r   r   r  rq  r  r@  r?   r  r  r  r  r  r  ri   rp  rl   )rm   rn   r   rw   rp   r  ru  r  r  r  r  r  r  r  r  r  r  calories_per_pound_liftedtotal_weight_liftedcalories_burneds                       r3   r[   zCalculateworkoutperformance.getg  s   IVN

 
 CC
 N N NYA'0LMMMMMMMMMN /((C(006688<
 UY 01&:STTTTkool++://<
 [Y 67@YZZZZ
 ]Y 89&B[\\\\+3::j:IIOOQQ
 hY CDVMfgggg<>>  5 9%--//::::= !2!2!22; #**FY  tA  CN  sO  ]`  am  ]n  ]n  ]t  ]t  ux  ]y  ]y*  z  z  A  A  C  C7 =   %  %sJ	NJy"<0J| #M 2J}!$S^)<%=%=%C%CC%H%H!I!IJ~C088cBBCCYY   YYY ff\efffffO !' hg]fggg *!,/HHO
 %4J !)8J%& $$$$ 	
F=*63E
F
F
FF	 V V V
Is1vv&v/T
U
U
UUUUUUUVs    M 
A)AAM AAM %AM 8M AM (DM >.J-,M -K>M  KB M 
N )M;5N ;N Nr   r}   r5   r3   r-  r-  f  s-        JV JV JV JV JVr5   r-  )rI   r   django.shortcutsr   rest_framework.viewsr   rest_framework.responser   rest_frameworkr   modelsr   r   r   django.confr   authenticationr   django.contrib.auth.modelsr   rest_framework_simplejwt.tokensr   passlib.hashr   r^   django.template.loaderr   django.corer   django.core.mailr   mathrd   pytzstringdjango.contribr   jwtdjango.core.files.storager   osr&  django.db.modelsr   pyfcmr   serializersdjango.views.genericr   admin_panel.modelsr   r   r   r   trainer.modelstrainer.serializers	functionsdjango.utils.timesincer   twilio.restr    r  twilio.jwt.access_token.grantsr!   r"   r#   twilio.jwt.access_tokenr$   rx  firebase_adminr%   decoupler&   django.utilsr'   api_keyr  r  r  r  TWILIO_CHAT_SIDr  TWILIO_SYNC_SIDsync_service_sidTWILIO_API_SIDr  TWILIO_API_SECRETr  r  r4   rD   rF   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r   r#  r,  r=  rC  rT  rc  ru  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r$  r0  r>  rL  rZ  ri  rl  rs  r  r  r  r  r  r  r  r  r  r  r  r  r+  r<  rQ  r]  rb  rg  rn  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r#  r)  r-  r}   r5   r3   <module>r^     s         # # # # # # ( ( ( ( ( ( , , , , , , ! ! ! ! ! !     . . . . . . . . . .             ) ) ) ) ) ) + + + + + + 8 8 8 8 8 8 8 8 8 8 8 8 3 3 3 3 3 3       3 3 3 3 3 3 ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! # # # # # # 



 7 7 7 7 7 7 				 



       ! ! ! ! ! !     - - - - - - ` ` ` ` ` ` ` ` ` ` ` `     ! ! ! !     , , , , , ,                            
       / / / / / /  $ $ $ $ $ $       ! ! ! ! ! !       



())('
+ + 

!&
	Z	(	(	 	 	  <V <V <V <V <Vw <V <V <V|*V *V *V *V *V *V *V *VZ.V .V .V .V .V' .V .V .VdT T T T Tg T T T@.V .V .V .V .VW .V .V .V`T T T T TG T T T08T 8T 8T 8T 8T 8T 8T 8Tv!U !U !U !U !UW !U !U !UJT T T T T T T T&T T T T T T T T6RV RV RV RV RVg RV RV RVlV V V V VW V V VDT T T T T T T T TV TV TV TV TV' TV TV TVnV V V V V7 V V V>T T T T T T T TT T T T T7 T T TT T T T T7 T T TV V V V V7 V V V(V V V V Vg V V V<V V V V VW V V V,V V V V Vw V V VH'V 'V 'V 'V 'V 'V 'V 'VTO O O O O7 O O O8O O O O Og O O O(O O O O O O O O(,U ,U ,U ,U ,U ,U ,U ,U`-V -V -V -V -V' -V -V -V`V V V V Vw V V V"V V V V V7 V V V$V V V V V V V V8V V V V V7 V V V0V V V V V V V V:V V V V VW V V V<V V V V Vw V V VB)V )V )V )V )Vg )V )V )VXvV vV vV vV vVw vV vV vVv%V %V %V %V %V %V %V %VN)V )V )V )V )V' )V )V )VT8W 8W 8W 8W 8W 8W 8W 8Wt-W -W -W -W -Wg -W -W -W\&V &V &V &V &VG &V &V &VV.V .V .V .V .Vg .V .V .Vb$V $V $V $V $Vg $V $V $VPV V V V VW V V V@)V )V )V )V )V7 )V )V )V^UX UX UX UX UX UX UX UXn'+ '+ '+ '+ '+ '+ '+ '+ZM- M- M- M- M-w M- M- M-\V V V V V7 V V V6V V V V Vg V V V"V V V V V' V V VBJV JV JV JV JVG JV JV JVZX X X X X X X XB#X #X #X #X #Xg #X #X #XL#V #V #V #V #VG #V #V #VN3V 3V 3V 3V 3Vg 3V 3V 3VlV V V V Vw V V V:/V /V /V /V /VG /V /V /Vd4V 4V 4V 4V 4V' 4V 4V 4Vn0V 0V 0V 0V 0V' 0V 0V 0VdIV IV IV IV IVW IV IV IVV+V +V +V +V +Vg +V +V +VZn n n n nw n n n*= = = = =g = = =2/g /g /g /g /gG /g /g /gd= = = = =7 = = =""] "] "] "] "]' "] "] "]J:V :V :V :V :VG :V :V :VxX X X X X X X X.YV YV YV YV YVg YV YV YVv/V /V /V /V /V /V /V /Vd4V 4V 4V 4V 4VG 4V 4V 4Vl; ; ; ; ; ; ; ;&"V "V "V "V "Vg "V "V "VHV V V V Vg V V V:2V 2V 2V 2V 2VW 2V 2V 2VjV V V V VW V V VBV V V V Vw V V V"<V <V <V <V <Vw <V <V <V|@V @V @V @V @Vg @V @V @VFV V V V V7 V V VBHV HV HV HV HV7 HV HV HVT-V -V -V -V -V' -V -V -V^W W W W W7 W W WBKV KV KV KV KV' KV KV KV KV KVr5   