
    
UgJ                     j   d dl mZ ddlT d dlT d dlmZmZ d dlmZ d dl	m
Z
 d dl	mZ d dlmZ d d	lZ G d
 dej                  Z G d dej                  Z G d dej                  Z G d dej                  Z G d dej                  Z G d dej                  Z G d dej                  Z G d dej                  Z G d dej                  Zd d	lZ G d dej                  Z G d dej                  Z G d  d!ej                  Z G d" d#ej                  Z G d$ dej                  Z G d% d&ej                  Z G d' d(ej                  Z G d) d*ej                  Z  G d+ d,ej                  Z! G d- d.ej                  Z" G d/ d0ej                  Z#d	S )1    )serializers   )*)AppUserSerializerAssessmentAttempt)ExtractMonth)Count)Min)	timedeltaNc                   (    e Zd Z G d d          ZdS )ExerciseSerializerc                       e Zd ZeZdZdS ExerciseSerializer.Meta)idnamedescriptionimageN__name__
__module____qualname__Exercisemodelfields     9/var/www/html/Alfredo_demo/alfredo/trainer/serializers.pyMetar      s        
%1&&&r   r   Nr   r   r   r   r   r   r   r   r      <        2 2 2 2 2 2 2 2 2 2r   r   c                       e Zd Z ej                    Z ej                    Z ej                    Z G d d          Zd Z	d Z
d ZdS )SubExerciseSerializerc                       e Zd ZeZdZdS )SubExerciseSerializer.Meta)r   r   r   commentsnote
focus_areasetsrepsweightyoutube_linkvideosimagesN)r   r   r   SubExerciser   r   r   r   r   r   r%      s        
% G&&&r   r   c                     |j         }|r=|                    d                              dd                              d          }ng }|S Nz[]' z, r.   stripreplacesplitselfobjimages_stringimages_arrays       r   
get_imagesz SubExerciseSerializer.get_images   O    *- %%d++33C<<BB4HH<<<	r   c                     |j         }|r=|                    d                              dd                              d          }ng }|S r1   r-   r5   r6   r7   r9   r:   videos_stringvideos_arrays       r   
get_videosz SubExerciseSerializer.get_videos$   r>   r   c                     |j         }|r=|                    d                              dd                              d          }ng }|S r1   )r(   r5   r6   r7   )r9   r:   focus_area_stringr(   s       r   get_focus_areaz$SubExerciseSerializer.get_focus_area,   P    n !''--55c2>>DDTJJ:::	r   N)r   r   r   r   SerializerMethodFieldr.   r-   r(   r   r=   rD   rG   r   r   r   r#   r#      s        
++
+
-
-
++
+
-
-/k/11G G G G G G G G
        r   r#   c                   (    e Zd Z G d d          ZdS )VideosSerializerc                       e Zd ZeZdZdS )VideosSerializer.Meta__all__N)r   r   r   Videosr   r   r   r   r   r   rM   7   s        
%&&&r   r   Nr    r   r   r   rK   rK   6   <                 r   rK   c                      e Zd Z ej        d          Z ej        d          Z ej        d          Z ej        d          Z ej        d          Z	 ej        d          Z
 G d d	          Zd
 Zd Zd Zd Zd Zd ZdS )TrainerSerializerget_exercisessourceget_workout_plansrD   get_total_exerciseget_specialityget_is_requestedc                       e Zd ZeZg dZdS )TrainerSerializer.Meta)r   	full_nameemailgenderager   
specialityr   addresslatitude	longitudetotal_experienceis_profile_completed	exercisesworkout_plansr-   total_exerciseis_requestedNr   r   r   Trainerr   r   r   r   r   r   r[   d   s'        
%{ { {&&&r   r   c                 ~    t           j                            |          d d         }t          |d          j        S )Ntrainer
   Tmany)r   objectsfilterr   datar9   r:   exercise_objs      r   rS   zTrainerSerializer.get_exercisesj   s:    !(((55crc:,	Lt	4	4	4	99r   c                     t           j                            |d          d d         }t          |d          j        S )Npublic)rn   work_accessro   Trp   )WorkoutPlanrr   rs   WorkoutPlanSerializerrt   ru   s      r   rV   z#TrainerSerializer.get_workout_plansn   s<    $++CH+MMcrcR,	|$	7	7	7	<<r   c                 n    t           j                            |          }t          |d          j        S )Nrm   Trp   )rO   rr   rs   rK   rt   )r9   r:   	video_objs      r   rD   zTrainerSerializer.get_videosr   s0    n##C#00)	)$	/	/	/	44r   c                 f    t           j                            |                                          S )Nrm   )r   rr   rs   countr9   r:   s     r   rW   z$TrainerSerializer.get_total_exercisev   s(    			 	 	 	-	-	3	3	5	55r   c                     |j         }|r=|                    d                              dd                              d          }ng }|S r1   )r`   r5   r6   r7   )r9   r:   speciality_stringr`   s       r   rX   z TrainerSerializer.get_specialityy   rH   r   c                 :    | j                             d          }|S )Nri   )contextget)r9   r:   ri   s      r   rY   z"TrainerSerializer.get_is_requested   s    !!.11,	r   N)r   r   r   r   rI   rf   rg   r-   rh   r`   ri   r   rS   rV   rD   rW   rX   rY   r   r   r   rR   rR   [   s        .[.oFFF22:MNNN
++
+<
@
@
@3+3;OPPP/k/7GHHH119KLLL{ { { { { { { {: : := = =5 5 56 6 6      r   rR   c                   (    e Zd Z G d d          ZdS )AssessmentAttemptSerializerc                       e Zd ZeZg dZdS ) AssessmentAttemptSerializer.Meta)r   attempt_numbercompletion_timecompleted_datecomplete_percentN)r   r   r   r   r   r   r   r   r   r   r      s        
%ZZZ&&&r   r   Nr    r   r   r   r   r      sF        [ [ [ [ [ [ [ [ [ [r   r   c                       e Zd Z ej                    Z ej                    Z ej                    Z ej                    Z G d d          Z	d Z
d Zd Zd ZdS )AssessmentSerializerc                       e Zd ZeZg dZdS )AssessmentSerializer.Meta)r   r   r   exerciserepetitionsr)   r+   resultsnotesr,   next_assessment_dater.   r-   best_student_recordNr   r   r   
Assesmentsr   r   r   r   r   r   r      s'        
% s  s  s&&&r   r   c                    |j         j        }t          |           t          j                            |                                          }|d         }|r|d         }t          dt          |          |           |d         }t          dt          |          |           |rQt          j	        |d         
                    dd                    }||d<   t          dt          |          |           |rQt          j	        |d         
                    dd                    }||d<   t          dt          |          |           |S i S )	Nr   r   r.   zbefore changesr-   r2   "zAfter changes)r   r   printr/   rr   rs   valuestypejsonloadsr6   )	r9   r:   exercise_idr   rt   r.   r-   changed_imageschanges_videoss	            r   get_exercisez!AssessmentSerializer.get_exercise   s7   lo+%%%55<<>>({$ N6	$v,,v...N6	$v,,v... /:d8n44S$??@@N!DN	/$v,,v... /:d8n44S$??@@N!DN	/$v,,v...
; 9r   c                     |j         }|r=|                    d                              dd                              d          }ng }|S r1   r4   r8   s       r   r=   zAssessmentSerializer.get_images   r>   r   c                     |j         }|r=|                    d                              dd                              d          }ng }|S r1   r@   rA   s       r   rD   zAssessmentSerializer.get_videos   r>   r   c                 z   t           j                            |          }i }|r|D ]}t          j                            |                              d                              dddd                              t          d                    }|D ]}}|d         }|d         }|d         }	|d	         }
|d         }|
Q|
                                d
k    r9||vs*|
||         	                    dt          j                  k     r|||
|	|d||<   ~t          |                                d           }|S g S )N
assessmentuseruser_iduser__full_namer   r   r   best_completion_timer   ro   r   r   r   r   r   c                     | d         S Nr   r   xs    r   <lambda>z>AssessmentSerializer.get_best_student_record.<locals>.<lambda>       CTAU r   keyStudentAssessmentrr   rs   r   order_byr   annotater
   total_secondsr   r   maxsortedr9   r:   student_assessment_objbest_attemptssa_objbest_attemptattemptr   usernamer   r   r   sorted_recordss                r   get_best_student_recordz,AssessmentSerializer.get_best_student_record      ,4;;s;KK- ' 
p 
pv$,33v3FFOOPVWW^^_hj{  }M  N^  _  _  h  h  ~A  BS  ~T  ~T  h  U  UL p py!W)*X./^#$:;./^(-A-O-O-Q-QTV-V-V		%	%)=g@V@Z@Z[lnwn{@|@|)|)|,3XZn  AO  ao  !p  !p}Wp =//117U7UVVV>

9r   N)r   r   r   r   rI   r.   r-   r   r   r   r   r=   rD   r   r   r   r   r   r      s        
++
+
-
-
++
+
-
-8{8::-K-//s s s s s s s s  2        r   r   c                       e Zd Z ej                    Z ej                    Z ej                    Z ej                    Z ej                    Z	 G d d          Z
d Zd Zd Zd Zd ZdS )	GetIdAssessmentSerializerc                       e Zd ZeZg dZdS )GetIdAssessmentSerializer.Meta)r   r   r   r   exercise_namer   r)   r+   r   r   r,   r   r.   r-   r   Nr   r   r   r   r   r      s'        
% C  C  C&&&r   r   c                     |j         j        }t          |           t          j                            |          }|r |                                d         d         S i S )Nr   r   r   )r   r   r   r/   rr   rs   r   )r9   r:   r   r   s       r   r   z&GetIdAssessmentSerializer.get_exercise   s[    lo+%%%55( 
//

A
t
$$ 9r   c                     |j         j        }t          |           t          j                            |          }|r |                                d         d         S i S )N)r   r   r   )r   r   r   r/   rr   rs   r   )r9   r:   r   r   s       r   get_exercise_namez+GetIdAssessmentSerializer.get_exercise_name   s\    !-%%=%99( 
//

A
v
&& 9r   c                     |j         }|r=|                    d                              dd                              d          }ng }|S r1   r4   r8   s       r   r=   z$GetIdAssessmentSerializer.get_images   r>   r   c                     |j         }|r=|                    d                              dd                              d          }ng }|S r1   r@   rA   s       r   rD   z$GetIdAssessmentSerializer.get_videos   r>   r   c                 z   t           j                            |          }i }|r|D ]}t          j                            |                              d                              dddd                              t          d                    }|D ]}}|d         }|d         }|d         }	|d	         }
|d         }|
Q|
                                d
k    r9||vs*|
||         	                    dt          j                  k     r|||
|	|d||<   ~t          |                                d           }|S g S )Nr   r   r   r   r   r   r   r   r   ro   r   c                     | d         S r   r   r   s    r   r   zCGetIdAssessmentSerializer.get_best_student_record.<locals>.<lambda>  r   r   r   r   r   s                r   r   z1GetIdAssessmentSerializer.get_best_student_record  r   r   N)r   r   r   r   rI   r.   r-   r   r   r   r   r   r   r=   rD   r   r   r   r   r   r      s        
++
+
-
-
++
+
-
-8{8::-K-//2244C C C C C C C C            r   r   c                   d    e Zd Z e            Z ej        d          Z G d d          Zd Z	dS )StudentAssessmentSerializerget_assessment_reportsrT   c                       e Zd ZeZg dZdS ) StudentAssessmentSerializer.Metar   r   
created_atassessment_progressassessment_reportsNr   r   r   r   r   r   r   r   r   r   r             
%XXX&&&r   r   c                     t           j                            |                              d          }|rt	          |d          j        S g S Nr   r   Trp   r   rr   rs   r   r   rt   r9   r:   assessment_attempt_objs      r   r   z2StudentAssessmentSerializer.get_assessment_reports$  O    ,4;;s;KKTTUeff 
%&<$
G
G
G
LL
9r   N)
r   r   r   r   r   r   rI   r   r   r   r   r   r   r   r     sx        ""$$7k7?WXXXY Y Y Y Y Y Y Y
    r   r   c                   d    e Zd Z e            Z ej        d          Z G d d          Zd Z	dS ) GetIdStudentAssessmentSerializerr   rT   c                       e Zd ZeZg dZdS )%GetIdStudentAssessmentSerializer.Metar   Nr   r   r   r   r   r   .  r   r   r   c                     t           j                            |                              d          }|rt	          |d          j        S g S r   r   r   s      r   r   z7GetIdStudentAssessmentSerializer.get_assessment_reports3  r   r   N)
r   r   r   r   r   r   rI   r   r   r   r   r   r   r   r   +  sx        ''))7k7?WXXXY Y Y Y Y Y Y Y
    r   r   c                      e Zd Z ej        dd          Z ej        dd          Z ej        dd          Z ej        dd          Z ej        dd          Z	 ej
        d          Z ej
        d          Z ej
        d          Z ej
        d          Z ej
                    Z ej
                    Z G d	 d
          Zd Zd Zd Zd Zd Zd Zd ZdS )StudentSerializerzapp_user.full_nameT)rU   	read_onlyzapp_user.imagezapp_user.agezapp_user.genderzapp_user.fitness_level)r   c                       e Zd ZeZg dZdS )StudentSerializer.Meta)r   r   r   r_   r^   fitness_levelr(   
main_goalsmedical_conditionsany_allergiesassessmentsrg   app_userN)r   r   r   Studentsr   r   r   r   r   r   r   I  s'        
% k  k  k&&&r   r   c                 @    |                      |j        j                  S N)_safe_json_loadr   r(   r   s     r   rG   z StudentSerializer.get_focus_areaM  s    			cl5	6	66r   c                 @    |                      |j        j                  S r   )r   r   	main_goalr   s     r   get_main_goalsz StudentSerializer.get_main_goalsP  s    			cl4	5	55r   c                 @    |                      |j        j                  S r   )r   r   medical_conditionr   s     r   get_medical_conditionsz(StudentSerializer.get_medical_conditionsS  s    			cl<	=	==r   c                 @    |                      |j        j                  S r   )r   r   allergies_exclusionsr   s     r   get_any_allergiesz#StudentSerializer.get_any_allergiesV  s    			cl?	@	@@r   c                 p    |r3	 t          j        |          S # t           j        t          f$ r g cY S w xY wg S )z2Safely load a JSON string or return an empty list.)r   r   JSONDecodeError	TypeError)r9   values     r   r   z!StudentSerializer._safe_json_loadY  sP    
 :e
+   III	)s    33c                     |j                             d                              d          }t          |d          }|j        S NT)end_date__isnullz-idrp   )studentassessment_setrs   r   r   rt   )r9   r:   r   
serializers       r   get_assessmentsz!StudentSerializer.get_assessmentsa  sD    )00$0GGPPQVWW+/$GGG*	r   c                     |j                             d                              d          }t          |d          }|j        S r	  )studentworkoutplan_setrs   r   StudentWorkOutSerializerrt   )r9   r:   rg   r  s       r   rV   z#StudentSerializer.get_workout_plansf  sD    ,33T3JJSSTYZZ-'DAAA*	r   N)r   r   r   r   	CharFieldr   r   r_   r^   r   rI   r(   r   r   r   r   rg   r   rG   r   r   r  r   r  rV   r   r   r   r   r   <  s       %9TJJJ		&6$	G	G	G{NdCCC
+
'8D
I
I
I&&.FRVWWW/k/$???/k/$???7k7$GGG22TBBB0{0222244k k k k k k k k7 7 76 6 6> > >A A A    
    r   r   c                   P    e Zd Z ej        d          Z G d d          Zd ZdS )AppTrainerFriendSerializerget_friend_statusrT   c                       e Zd ZeZg dZdS )AppTrainerFriendSerializer.Meta)r   r\   r   r^   r_   friend_statusNrj   r   r   r   r   r  q  s        
%EEE&&&r   r   c                 0   | j                             d          }t          j                            t
                              ||          t
                              ||          z            }|sd }n |D ]}|j        dk    rd}|j        dk    rd}|S )N
login_user)	from_userto_userTfriendsF	requested)r   r   TrainerFriendsrr   rs   modelsQaccepted)r9   r:   r  r  r  s        r   r  z,AppTrainerFriendSerializer.get_friend_statusu  s    |--*
 !(//	88j#8..CQ[1\1\\ - 
 !== ! !w]]		U	"	" ]	r   N)r   r   r   r   rI   r  r   r  r   r   r   r  r  o  si        22:MNNNF F F F F F F F    r   r  c                   <    e Zd Z e            Z G d d          ZdS )SentFriendListSerializerc                       e Zd ZeZg dZdS )SentFriendListSerializer.Meta)r   r  r!  Nr   r   r   r  r   r   r   r   r   r   r%    s        
%(((&&&r   r   N)r   r   r   r  r  r   r   r   r   r#  r#    sJ        %%'') ) ) ) ) ) ) ) ) )r   r#  c                   <    e Zd Z e            Z G d d          ZdS )ReceivedFriendListSerializerc                       e Zd ZeZg dZdS )!ReceivedFriendListSerializer.Meta)r   r  r!  Nr&  r   r   r   r   r*    s        
%***&&&r   r   N)r   r   r   r  r  r   r   r   r   r(  r(    sJ        ''))+ + + + + + + + + +r   r(  c                   (    e Zd Z G d d          ZdS )r   c                       e Zd ZeZg dZdS r   r   r   r   r   r   zExerciseSerializer.Meta  s        
%111&&&r   r   Nr    r   r   r   r   r     r!   r   c                   p    e Zd Z ej                    Z ej                    Z G d d          Zd Zd Z	dS )PlanExerciseSerializerc                       e Zd ZeZg dZdS )PlanExerciseSerializer.Meta)r   	body_partexercise_datar   
updated_atend_dateN)r   r   r   PlanExerciser   r   r   r   r   r   r0    s        5WWW666r   r   c                     |j         }|r=|                    d                              dd                              d          }ng }|S r1   )r1  r5   r6   r7   )r9   r:   body_part_stringr1  s       r   get_body_partz$PlanExerciseSerializer.get_body_part  sP    m  &&t,,44S"==CCDIIIII
r   c                 L   | j                             dd          }|j        j        }t	          d|            g }t                      }t	          |j                   |j        D ]}d|v r|d         nd }	 t          j        	                    |          
                                }t          j        	                    ||||          }	|	rd}
nd}
|r|j        rt          j        |j                  }nd }|j        rt          j        |j                  }nd }|d	         |d
         |                    dd           |j        |j        |j        |r|d         nd f}||vrm|                    |           |                    |d	         |d
         |                    dd           |j        |j        |j        |
|r|d         nd |d	           k# t          j        $ rB |                    |d	         |d
         |                    dd           |d d d d d           Y w xY w|S )N	work_typerx   z'Workout Day Name in get_exercise_data: r   r   )sub_exerciser   workout_dayworkout_typeTFr)   r*   r+   r   )	r)   r*   r+   r   r   exercise_descriptionis_completedexercise_imageexercise_video)r)   r*   r+   r   r   r>  r@  rA  )r   r   dayr   r   setr2  r/   rr   rs   firstUserIsExerciseWorkoutr.   astliteral_evalr-   r   r   addappendDoesNotExist)r9   r:   r:  workout_day_namer2  seen_exercisesexercise_entryr   r   check_completedr?  exercise_imagesexercise_videosunique_datas                 r   get_exercise_dataz(PlanExerciseSerializer.get_exercise_data  s   |X669gl	E3C	E	EFFF=EE>	* : :~3@N3R3R.//X\K6#**k*::@@BBX*299xY\iy  HQ9  R  R_ lll "
	 )(/::	 )(/:: ff(D)){},6q$k 
N	*	*+&&&v&v& $$Xt44{! ( 4$0?I/!,,T)
	 
	 

 

 

 #   V$V$""8T22 "	 	 	 	 	 	 	 s   7EGAH! H!N)
r   r   r   r   rI   r1  r2  r   r8  rR  r   r   r   r.  r.    s        /k/11)3+355-X X X X X X X X  D D D D Dr   r.  c                   B    e Zd Z edd          Z G d d          ZdS )WorkoutDaySerializerTplanexercise_setrq   rU   c                       e Zd ZeZddgZdS )WorkoutDaySerializer.Metar   rf   N)r   r   r   
WorkoutDayr   r   r   r   r   r   rX    s        
%K &&&r   r   N)r   r   r   r.  rf   r   r   r   r   rT  rT    sR        ##6HIII! ! ! ! ! ! ! ! ! !r   rT  c                   B    e Zd Z edd          Z G d d          ZdS )WorkoutWeekSerializerTworkoutday_setrV  c                       e Zd ZeZddgZdS )WorkoutWeekSerializer.Metaweek_numberdaysN)r   r   r   WorkoutWeekr   r   r   r   r   r   r^     s        
%6"&&&r   r   N)r   r   r   rT  r`  r   r   r   r   r[  r[    sR        $/?@@@# # # # # # # # # #r   r[  c                   B    e Zd Z edd          Z G d d          ZdS )r{   Tworkoutweek_setrV  c                       e Zd ZeZdZdS )WorkoutPlanSerializer.MetarN   Nr   r   r   rz   r   r   r   r   r   r   re            
%&&&r   r   N)r   r   r   r[  weeksr   r   r   r   r{   r{     sR        		D1B	C	C	C         r   r{   c                   (    e Zd Z G d d          ZdS )WorkoutPlanListSerializerc                       e Zd ZeZdZdS )WorkoutPlanListSerializer.MetarN   Nrf  r   r   r   r   rl    rg  r   r   Nr    r   r   r   rj  rj    rP   r   rj  c                   <    e Zd Z e            Z G d d          ZdS )r  c                       e Zd ZeZg dZdS )StudentWorkOutSerializer.Meta)r   workoutr   workout_progressN)r   r   r   StudentWorkOutPlanr   r   r   r   r   r   ro    s        
%===&&&r   r   N)r   r   r   r{   rp  r   r   r   r   r  r    sJ          ""> > > > > > > > > >r   r  )$rest_frameworkr   r  user_app.modelsuser_app.serializersr   r   django.db.models.functionsr   django.db.modelsr	   r
   datetimer   rF  ModelSerializerr   r#   rK   rR   r   r   r   r   r   r   r   r  r#  r(  r.  rT  r[  r{   rj  r  r   r   r   <module>rz     sP   & & & & & &         E E E E E E E E 3 3 3 3 3 3 " " " " " "                   



2 2 2 2 24 2 2 2    K7   F    {2   J) ) ) ) )3 ) ) )^[ [ [ [ [+"= [ [ [E E E E E;6 E E EN? ? ? ? ? ; ? ? ?D    +"=       {'B     - - - - -3 - - -f    !<   4) ) ) ) ){: ) ) )+ + + + +;#> + + +2 2 2 2 24 2 2 2T T T T T[8 T T Tj! ! ! ! !;6 ! ! !# # # # #K7 # # #    K7        ;   > > > > >{: > > > > >r   