
    ahe,                        d dl mZ ddlmZmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZ d dlm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 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- d.ej$                        Z' G d/ d0ej$                        Z( G d1 d2ej$                        Z) G d3 d4ej$                        Z* G d5 d6ej$                        Z+ G d7 d8ej$                        Z,y9):    )serializers   )CourseCourseEligibility	CourseFee	FeeDetail	HostelFeeSemesterSubjectCareerProspect	RecruiterWhyJoinCourseHighlightCourseImageTestimonial)Collegec                        e Zd Z G d d      Zy)CourseEligibilitySerializerc                       e Zd ZeZddgZy) CourseEligibilitySerializer.MetaidcourseN)__name__
__module____qualname__r   modelexclude     (/var/www/apihucms/courses/serializers.pyMetar      s    !"r   r!   Nr   r   r   r!   r   r   r    r   r   
       # #r   r   c                        e Zd Z G d d      Zy)FeeDetailSerializerc                       e Zd ZeZddgZy)FeeDetailSerializer.Metar   
course_feeN)r   r   r   r   r   r   r   r   r    r!   r'      s    &r   r!   Nr"   r   r   r    r%   r%      s    ' 'r   r%   c                   4    e Zd Z edd      Z G d d      Zy)CourseFeeSerializerTmany	read_onlyc                       e Zd ZeZddgZy)CourseFeeSerializer.Metar   r   N)r   r   r   r   r   r   r   r   r    r!   r/          "r   r!   N)r   r   r   r%   detailsr!   r   r   r    r*   r*      s    !tt<G# #r   r*   c                        e Zd Z G d d      Zy)HostelFeeSerializerc                       e Zd ZeZddgZy)HostelFeeSerializer.Metar   r   N)r   r   r   r	   r   r   r   r   r    r!   r5      r0   r   r!   Nr"   r   r   r    r3   r3      r#   r   r3   c                        e Zd Z G d d      Zy)SubjectSerializerc                       e Zd ZeZddgZy)SubjectSerializer.Metar   semesterN)r   r   r   r   r   r   r   r   r    r!   r9   %   s    $r   r!   Nr"   r   r   r    r7   r7   $   s    % %r   r7   c                   4    e Zd Z edd      Z G d d      Zy)SemesterSerializerTr+   c                       e Zd ZeZddgZy)SemesterSerializer.Metar   r   N)r   r   r   r
   r   r   r   r   r    r!   r>   -   s    "r   r!   N)r   r   r   r7   subjectsr!   r   r   r    r<   r<   *   s     dd;H# #r   r<   c                        e Zd Z G d d      Zy)CareerProspectSerializerc                       e Zd ZeZddgZy)CareerProspectSerializer.Metar   r   N)r   r   r   r   r   r   r   r   r    r!   rC   3   s    "r   r!   Nr"   r   r   r    rA   rA   2   r#   r   rA   c                        e Zd Z G d d      Zy)RecruiterSerializerc                       e Zd ZeZddgZy)RecruiterSerializer.Metar   r   N)r   r   r   r   r   r   r   r   r    r!   rG   ;   r0   r   r!   Nr"   r   r   r    rE   rE   :   r#   r   rE   c                        e Zd Z G d d      Zy)WhyJoinSerializerc                       e Zd ZeZddgZy)WhyJoinSerializer.Metar   r   N)r   r   r   r   r   r   r   r   r    r!   rK   A   s    "r   r!   Nr"   r   r   r    rI   rI   @   r#   r   rI   c                        e Zd Z G d d      Zy)CourseHighlightSerializerc                       e Zd ZeZddgZy)CourseHighlightSerializer.Metar   r   N)r   r   r   r   r   r   r   r   r    r!   rO   G   s    "r   r!   Nr"   r   r   r    rM   rM   F   r#   r   rM   c                        e Zd Z G d d      Zy)CourseImageSerializerc                       e Zd ZeZddgZy)CourseImageSerializer.Metar   r   N)r   r   r   r   r   r   r   r   r    r!   rS   M       "r   r!   Nr"   r   r   r    rQ   rQ   L   r#   r   rQ   c                        e Zd Z G d d      Zy)TestimonialSerializerc                       e Zd ZeZddgZy)TestimonialSerializer.Metar   r   N)r   r   r   r   r   r   r   r   r    r!   rX   S   rT   r   r!   Nr"   r   r   r    rV   rV   R   r#   r   rV   c                       e Zd Z ed      Z ed      Z ed      Z e	dd      Z
 edd      Z edd      Z edd      Z edd      Z edd      Z edd      Z G d d      Zy)CourseDetailSerializerT)r-   r+   c                       e Zd ZeZg dZy)CourseDetailSerializer.Meta)r   titleslugshort_descriptionoverviewdurationcategorybanner_image
created_at
updated_ateligibilityfees
hostel_fee	semesterscareer_prospects
recruiterswhy_join
highlightsimagestestimonialsNr   r   r   r   r   fieldsr   r   r    r!   r\   e       
r   r!   N)r   r   r   r   rf   r*   rg   r3   rh   r<   ri   rA   rj   rE   rk   rI   rl   rM   rm   rQ   rn   rV   ro   r!   r   r   r    rZ   rZ   X   s    -=K.D$t4J"=I/TTJ$$$?J dd;H*EJ"=F(ddCL
 
r   rZ   c                        e Zd Z G d d      Zy)!CourseEligibilityCreateSerializerc                       e Zd ZeZg dZy)&CourseEligibilityCreateSerializer.Meta)academic_qualificationminimum_marksentrance_examN)r   r   r   r   r   rq   r   r   r    r!   rv   q   s    !Mr   r!   Nr"   r   r   r    rt   rt   p   s    N Nr   rt   c                        e Zd Z G d d      Zy)FeeDetailCreateSerializerc                       e Zd ZeZg dZy)FeeDetailCreateSerializer.Meta)fee_head
first_yearsecond_year
third_yearfourth_yearis_one_timeN)r   r   r   r   r   rq   r   r   r    r!   r}   w   s    fr   r!   Nr"   r   r   r    r{   r{   v   s    g gr   r{   c                   4    e Zd Z edd      Z G d d      Zy)CourseFeeCreateSerializerTFr,   requiredc                       e Zd ZeZg dZy)CourseFeeCreateSerializer.Meta)domesticinternationalr1   N)r   r   r   r   r   rq   r   r   r    r!   r      s    9r   r!   N)r   r   r   r{   r1   r!   r   r   r    r   r   |   s    'TEBG: :r   r   c                        e Zd Z G d d      Zy)HostelFeeCreateSerializerc                       e Zd ZeZg dZy)HostelFeeCreateSerializer.Meta)fee_per_yearac_room_additionalsecurity_depositnotesN)r   r   r   r	   r   rq   r   r   r    r!   r      s    Tr   r!   Nr"   r   r   r    r   r      s    U Ur   r   c                        e Zd Z G d d      Zy)SubjectCreateSerializerc                       e Zd ZeZg dZy)SubjectCreateSerializer.Meta)codenamecreditsdescriptionN)r   r   r   r   r   rq   r   r   r    r!   r      s    ;r   r!   Nr"   r   r   r    r   r      s    < <r   r   c                   4    e Zd Z edd      Z G d d      Zy)SemesterCreateSerializerTFr   c                       e Zd ZeZg dZy)SemesterCreateSerializer.Meta)r   numberr?   N)r   r   r   r
   r   rq   r   r   r    r!   r      s    /r   r!   N)r   r   r   r   r?   r!   r   r   r    r   r      s    &D5AH0 0r   r   c                        e Zd Z G d d      Zy)CareerProspectCreateSerializerc                       e Zd ZeZg dZy)#CareerProspectCreateSerializer.Meta)r]   salary_ranger   N)r   r   r   r   r   rq   r   r   r    r!   r      s    9r   r!   Nr"   r   r   r    r   r      s    : :r   r   c                        e Zd Z G d d      Zy)RecruiterCreateSerializerc                       e Zd ZeZddgZy)RecruiterCreateSerializer.Metar   logoN)r   r   r   r   r   rq   r   r   r    r!   r      s    &!r   r!   Nr"   r   r   r    r   r      s    " "r   r   c                        e Zd Z G d d      Zy)WhyJoinCreateSerializerc                       e Zd ZeZddgZy)WhyJoinCreateSerializer.Metar]   r   N)r   r   r   r   r   rq   r   r   r    r!   r      s    =)r   r!   Nr"   r   r   r    r   r      s    * *r   r   c                        e Zd Z G d d      Zy)CourseHighlightCreateSerializerc                       e Zd ZeZg dZy)$CourseHighlightCreateSerializer.Meta)r]   r   iconN)r   r   r   r   r   rq   r   r   r    r!   r      s    1r   r!   Nr"   r   r   r    r   r      s    2 2r   r   c                        e Zd Z G d d      Zy)CourseImageCreateSerializerc                       e Zd ZeZg dZy) CourseImageCreateSerializer.Meta)imager]   	is_bannerN)r   r   r   r   r   rq   r   r   r    r!   r      s    0r   r!   Nr"   r   r   r    r   r      s    1 1r   r   c                        e Zd Z G d d      Zy)TestimonialCreateSerializerc                       e Zd ZeZg dZy) TestimonialCreateSerializer.Meta)r   positioncompanycontentphotoN)r   r   r   r   r   rq   r   r   r    r!   r      s    Dr   r!   Nr"   r   r   r    r   r      s    E Er   r   c                      e Zd ZdZ ed      Z ed      Z ed      Z	 e
dd      Z edd      Z edd      Z edd      Z edd      Z edd      Z edd      Z ej2                  dd      Z G d d	      Zd
 Zd Zy)CourseCreateSerializerzMComprehensive serializer for creating a complete course with all related dataF)r   Tr   z&ID of the college offering this course)r   	help_textc                       e Zd ZeZg dZy)CourseCreateSerializer.Meta)r]   r_   r`   ra   rb   rc   
college_idrf   rg   rh   ri   rj   rk   rl   rm   rn   ro   Nrp   r   r   r    r!   r      rr   r   r!   c                     |rCt         j                  j                  |      j                         st	        j
                  d      |S )z Validate that the college existsr   z$College with this ID does not exist.)r   objectsfilterexistsr   ValidationError)selfvalues     r    validate_college_idz*CourseCreateSerializer.validate_college_id   s9    //5/9@@B--.TUUr   c                    |j                  dd      }|j                  dd      }|j                  dd      }|j                  dg       }|j                  dg       }|j                  dg       }|j                  dg       }|j                  d	g       }	|j                  d
g       }
|j                  dg       }|j                  dd      }t        j                  j                  d!i |}|r!t	        j                  j                  d!d|i| |r[|j                  dg       }t        j                  j                  d!d|i|}|D ]#  }t        j                  j                  d!d|i| % |r!t        j                  j                  d!d|i| |D ]]  }|j                  dg       }t        j                  j                  d!d|i|}|D ]#  }t        j                  j                  d!d|i| % _ |D ]#  }t        j                  j                  d!d|i| % |D ]#  }t        j                  j                  d!d|i| % |D ]#  }t        j                  j                  d!d|i| % |	D ]#  }t        j                  j                  d!d|i| % |
D ]#  }t        j                  j                  d!d|i| % |D ]#  }t        j                  j                  d!d|i| % |r	 t         j                  j#                  |      }ddlm}m} |j                  j+                  ||j,                   dd|j,                   d      \  }}d} d|j.                  j1                         v s8d|j.                  j1                         v sd|j.                  j1                         v rd} nd|j.                  j1                         v rd} |j                  j                  ||j.                  ||         |S |S # t         j2                  $ r Y |S w xY w)"z#Create course with all related datarf   Nrg   rh   ri   rj   rk   rl   rm   rn   ro   r   r   r1   r(   r?   r:   r   r   )ProgramProgramsSectionz	 ProgramszPrograms offered by )r]   r   )collegedefaultsUGmastermtechmbaPGdiplomaDP)programs_sectionr   r   program_typer   )popr   r   creater   r   r   r	   r
   r   r   r   r   r   r   r   r   getcolleges.modelsr   r   get_or_creater   r]   lowerDoesNotExist)!r   validated_dataeligibility_data	fees_datahostel_fee_datasemesters_datacareer_prospects_datarecruiters_datawhy_join_datahighlights_dataimages_datatestimonials_datar   r   fee_details_datar(   detail_datasemester_datasubjects_datar:   subject_dataprospect_datarecruiter_datawhy_join_itemhighlight_data
image_datatestimonial_datar   r   r   r   createdr   s!                                    r    r   zCourseCreateSerializer.create   s5    *--mTB"&&vt4	(,,\4@'++K< . 2 23Er J(,,\2>&**:r:(,,\2>$((26*..~rB#''d;
 &&88 %%,,OFO>NO (}}Y;"**11MM9MJ/ O!!((NJN+NO $$FFFoF , 	JM)--j"=M''..NfNNH - J&&IILIJ	J 3 	JM""))II=I	J . 	FN$$EFEnE	F + 	CMOO""B&BMB	C . 	LN##**K&KNK	L & 	DJ&&CfC
C	D !2 	J&&IfI8HI	J !//---<D,;,C,C,Q,Q#$+LL>!;)=gll^'L -R -) '  $v||1133w&,,BTBTBV7VZ_cicococucucwZw#'L&,,"4"4"66#'L&&%5!!-	 '  v '' s   DO( (O?>O?N)r   r   r   __doc__rt   rf   r   rg   r   rh   r   ri   r   rj   r   rk   r   rl   r   rm   r   rn   r   ro   r   IntegerFieldr   r!   r   r   r   r   r    r   r      s    W 4UCK$e4D*E:J(dUCI54%P*uEJ&D5AH0dUKJ(dUCF.D5IL *))5DlmJ
 
]r   r   N)-rest_frameworkr   modelsr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   ModelSerializerr   r%   r*   r3   r7   r<   rA   rE   rI   rM   rQ   rV   rZ   rt   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r    <module>r     s   &   
 $#+"="= #'+55 '#+55 ##+55 #%33 %#44 ##{:: ##+55 ##33 ## ; ; ##K77 ##K77 #
[88 
0N(C(C Ng ; ; g: ; ; :U ; ; U<k99 <0{:: 0:[%@%@ :" ; ; "*k99 *2k&A&A 21+"="= 1E+"="= E~[88 ~r   