o
    ahe,                     @   s,  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 dejZG dd dejZG d	d
 d
ejZG dd dejZG dd dejZG dd dejZG dd dejZG dd dejZG dd dejZG dd dejZG dd dejZG dd dejZG dd dejZG dd  d ejZ G d!d" d"ejZ!G d#d$ d$ejZ"G d%d& d&ejZ#G d'd( d(ejZ$G d)d* d*ejZ%G d+d, d,ejZ&G d-d. d.ejZ'G d/d0 d0ejZ(G d1d2 d2ejZ)G d3d4 d4ejZ*G d5d6 d6ejZ+G d7d8 d8ejZ,d9S ):    )serializers   )CourseCourseEligibility	CourseFee	FeeDetail	HostelFeeSemesterSubjectCareerProspect	RecruiterWhyJoinCourseHighlightCourseImageTestimonial)Collegec                   @      e Zd ZG dd dZdS )CourseEligibilitySerializerc                   @      e Zd ZeZddgZdS )z CourseEligibilitySerializer.MetaidcourseN)__name__
__module____qualname__r   modelexclude r   r   (/var/www/apihucms/courses/serializers.pyMeta       r   Nr   r   r   r   r   r   r   r   r   
       r   c                   @   r   )FeeDetailSerializerc                   @   r   )zFeeDetailSerializer.Metar   
course_feeN)r   r   r   r   r   r   r   r   r   r   r      r   r   Nr    r   r   r   r   r"      r!   r"   c                   @   &   e Zd ZedddZG dd dZdS )CourseFeeSerializerTmany	read_onlyc                   @   r   )z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%          r%   c                   @   r   )HostelFeeSerializerc                   @   r   )zHostelFeeSerializer.Metar   r   N)r   r   r   r   r   r   r   r   r   r   r      r   r   Nr    r   r   r   r   r+      r!   r+   c                   @   r   )SubjectSerializerc                   @   r   )zSubjectSerializer.Metar   semesterN)r   r   r   r
   r   r   r   r   r   r   r   %   r   r   Nr    r   r   r   r   r,   $   r!   r,   c                   @   r$   )SemesterSerializerTr&   c                   @   r   )zSemesterSerializer.Metar   r   N)r   r   r   r	   r   r   r   r   r   r   r   -   r   r   N)r   r   r   r,   subjectsr   r   r   r   r   r.   *   r*   r.   c                   @   r   )CareerProspectSerializerc                   @   r   )zCareerProspectSerializer.Metar   r   N)r   r   r   r   r   r   r   r   r   r   r   3   r   r   Nr    r   r   r   r   r0   2   r!   r0   c                   @   r   )RecruiterSerializerc                   @   r   )zRecruiterSerializer.Metar   r   N)r   r   r   r   r   r   r   r   r   r   r   ;   r   r   Nr    r   r   r   r   r1   :   r!   r1   c                   @   r   )WhyJoinSerializerc                   @   r   )zWhyJoinSerializer.Metar   r   N)r   r   r   r   r   r   r   r   r   r   r   A   r   r   Nr    r   r   r   r   r2   @   r!   r2   c                   @   r   )CourseHighlightSerializerc                   @   r   )zCourseHighlightSerializer.Metar   r   N)r   r   r   r   r   r   r   r   r   r   r   G   r   r   Nr    r   r   r   r   r3   F   r!   r3   c                   @   r   )CourseImageSerializerc                   @   r   )zCourseImageSerializer.Metar   r   N)r   r   r   r   r   r   r   r   r   r   r   M   r   r   Nr    r   r   r   r   r4   L   r!   r4   c                   @   r   )TestimonialSerializerc                   @   r   )zTestimonialSerializer.Metar   r   N)r   r   r   r   r   r   r   r   r   r   r   S   r   r   Nr    r   r   r   r   r5   R   r!   r5   c                   @   s   e Zd ZeddZeddZeddZe	dddZ
edddZedddZedddZedddZedddZedddZG dd dZdS )CourseDetailSerializerT)r(   r&   c                   @      e Zd ZeZg dZdS )z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   rA   r%   rB   r+   rC   r.   rD   r0   rE   r1   rF   r2   rG   r3   rH   r4   rI   r5   rJ   r   r   r   r   r   r6   X   s    


r6   c                   @   r   )!CourseEligibilityCreateSerializerc                   @   r7   )z&CourseEligibilityCreateSerializer.Meta)academic_qualificationminimum_marksentrance_examN)r   r   r   r   r   rL   r   r   r   r   r   q   r   r   Nr    r   r   r   r   rM   p   r!   rM   c                   @   r   )FeeDetailCreateSerializerc                   @   r7   )zFeeDetailCreateSerializer.Meta)fee_head
first_yearsecond_year
third_yearfourth_yearis_one_timeN)r   r   r   r   r   rL   r   r   r   r   r   w   r   r   Nr    r   r   r   r   rQ   v   r!   rQ   c                   @   &   e Zd ZedddZG dd dZdS )CourseFeeCreateSerializerTFr'   requiredc                   @   r7   )zCourseFeeCreateSerializer.Meta)domesticinternationalr)   N)r   r   r   r   r   rL   r   r   r   r   r      r   r   N)r   r   r   rQ   r)   r   r   r   r   r   rY   |   r*   rY   c                   @   r   )HostelFeeCreateSerializerc                   @   r7   )zHostelFeeCreateSerializer.Meta)fee_per_yearac_room_additionalsecurity_depositnotesN)r   r   r   r   r   rL   r   r   r   r   r      r   r   Nr    r   r   r   r   r^      r!   r^   c                   @   r   )SubjectCreateSerializerc                   @   r7   )zSubjectCreateSerializer.Meta)codenamecreditsdescriptionN)r   r   r   r
   r   rL   r   r   r   r   r      r   r   Nr    r   r   r   r   rc      r!   rc   c                   @   rX   )SemesterCreateSerializerTFrZ   c                   @   r7   )zSemesterCreateSerializer.Meta)re   numberr/   N)r   r   r   r	   r   rL   r   r   r   r   r      r   r   N)r   r   r   rc   r/   r   r   r   r   r   rh      r*   rh   c                   @   r   )CareerProspectCreateSerializerc                   @   r7   )z#CareerProspectCreateSerializer.Meta)r8   salary_rangerg   N)r   r   r   r   r   rL   r   r   r   r   r      r   r   Nr    r   r   r   r   rj      r!   rj   c                   @   r   )RecruiterCreateSerializerc                   @   r   )zRecruiterCreateSerializer.Metare   logoN)r   r   r   r   r   rL   r   r   r   r   r      r   r   Nr    r   r   r   r   rl      r!   rl   c                   @   r   )WhyJoinCreateSerializerc                   @   r   )zWhyJoinCreateSerializer.Metar8   rg   N)r   r   r   r   r   rL   r   r   r   r   r      r   r   Nr    r   r   r   r   rn      r!   rn   c                   @   r   )CourseHighlightCreateSerializerc                   @   r7   )z$CourseHighlightCreateSerializer.Meta)r8   rg   iconN)r   r   r   r   r   rL   r   r   r   r   r      r   r   Nr    r   r   r   r   ro      r!   ro   c                   @   r   )CourseImageCreateSerializerc                   @   r7   )z CourseImageCreateSerializer.Meta)imager8   	is_bannerN)r   r   r   r   r   rL   r   r   r   r   r      r   r   Nr    r   r   r   r   rq      r!   rq   c                   @   r   )TestimonialCreateSerializerc                   @   r7   )z TestimonialCreateSerializer.Meta)re   positioncompanycontentphotoN)r   r   r   r   r   rL   r   r   r   r   r      r   r   Nr    r   r   r   r   rt      r!   rt   c                   @   s   e Zd ZdZeddZeddZeddZ	e
dddZedddZedddZedddZedddZedddZedddZejdddZG dd	 d	Zd
d Zdd ZdS )CourseCreateSerializerzMComprehensive serializer for creating a complete course with all related dataF)r[   TrZ   z&ID of the college offering this course)r[   	help_textc                   @   r7   )zCourseCreateSerializer.Meta)r8   r:   r;   r<   r=   r>   
college_idrA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   NrK   r   r   r   r   r      r   r   c                 C   s$   |rt jj|d std|S )z Validate that the college existsr   z$College with this ID does not exist.)r   objectsfilterexistsr   ValidationError)selfvaluer   r   r   validate_college_id   s   
z*CourseCreateSerializer.validate_college_idc           !      C   s  | dd}| dd}| dd}| dg }| dg }| dg }| dg }| d	g }	| d
g }
| dg }| dd}tjjd!i |}|rXtjjd!d|i| |r{| dg }tjjd!d|i|}|D ]}tjjd!d|i| qm|rtjjd!d|i| |D ]#}| dg }tjjd!d|i|}|D ]}t	jjd!d|i| qq|D ]}t
jjd!d|i| q|D ]}tjjd!d|i| q|D ]}tjjd!d|i| q|	D ]}tjjd!d|i| q|
D ]}tjjd!d|i| q|D ]}tjjd!d|i| q |rxzYtjj|d}ddlm}m} |jj||j dd|j dd\}}d} d|j v sQd|j v sQd|j v rTd} n
d|j v r^d} |jj||j|| d  W |S  tjyw   Y |S w |S )"z#Create course with all related datarA   NrB   rC   rD   rE   rF   rG   rH   rI   rJ   r{   r   r)   r#   r/   r-   r|   r   )ProgramProgramsSectionz	 ProgramszPrograms offered by )r8   rg   )collegedefaultsUGmastermtechmbaPGdiplomaDP)programs_sectionre   r   program_typer   )popr   r}   creater   r   r   r   r	   r
   r   r   r   r   r   r   r   getcolleges.modelsr   r   get_or_createre   r8   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   r   r   r   r      s   


0	zCourseCreateSerializer.createN)r   r   r   __doc__rM   rA   rY   rB   r^   rC   rh   rD   rj   rE   rl   rF   rn   rG   ro   rH   rq   rI   rt   rJ   r   IntegerFieldr{   r   r   r   r   r   r   r   ry      s     


	ry   N)-rest_frameworkr   modelsr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   ModelSerializerr   r"   r%   r+   r,   r.   r0   r1   r2   r3   r4   r5   r6   rM   rQ   rY   r^   rc   rh   rj   rl   rn   ro   rq   rt   ry   r   r   r   r   <module>   s:    <