
    R;h                         d dl mZ d dlmZmZmZmZ d dlmZm	Z	m
Z
mZ d dlmZ d dlmZ d dlmZmZmZmZmZmZmZmZmZ d dlmZ  G d d	e      Z G d
 de      Zy)    )HTTPException)INTEGERVARCHAREnum
ForeignKey)Mappedmapped_columnSessionrelationship)Base)Field)	CdiElementEnumFunctionalAreaEnumOperationalAreaEnumRightshipDbmsEnum
SeriesEnumSireElementEnumStcwElementEnumTargetAudienceEnumTmsaElementEnum)CustomModelc                      e Zd ZU  ed      Zedz  ed<    ed      Zedz  ed<    ed      Z	edz  ed<    ed      Z
edz  ed<    ed      Zedz  ed<    ed      Zedz  ed<    ed      Zedz  ed	<    ed      Zedz  ed
<    ed      Zedz  ed<    ed      Zedz  ed<    ed      Zedz  ed<    ed      Zedz  ed<    ed      Zedz  ed<    ed      Zedz  ed<    ed      Zedz  ed<    ed      Zedz  ed<    ed      Zedz  ed<    ed      Zedz  ed<    ed      Zedz  ed<    ed      Zedz  ed<    ed      Zedz  ed<   y)CourseListBaseN)default	course_idcourse_nameduration_hrsoperational_areafunctional_areatarget_audience	standardsvalidity_daysminimum_hourspass_percentagemaximum_mark	pass_markseriessire_elementsrightship_dbms_elementstmsa_elementscdi_elementsstcw_elementsapproved_by_classnkcourse_overviewfull_course_id)__name__
__module____qualname__r   r   int__annotations__r   strr   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/        7/var/www/html/beacon-api/app/models/main/course_list.pyr   r      s   !$/IsTz/#D1Kt1$T2L#*2#(#6cDj6"'"5OS4Z5"'"5OS4Z5!$/IsTz/ %d 3M3:3 %d 3M3:3"'"5OS4Z5$T2L#*2!$/IsTz/t,FC$J, %d 3M3:3*/*=S4Z= %d 3M3:3$T2L#*2 %d 3M3:3&+D&9t9"'"5OS4Z5!&t!4NC$J4r7   r   c            	       f   e Zd ZU dZ ededd      Zee   e	d<    ed e
d      d      Zee   e	d<    ed	ed      Zee   e	d	<    e ee      d      Zee   e	d
<    e ee      d      Zee   e	d<    e ee      d      Zee   e	d<    ed e
d      d      Zee   e	d<    eded      Zee   e	d<    ee ed      d      Zee   e	d<    ededd      Zee   e	d<    ededd      Zee   e	d<    ededd      Zee   e	d<    ededd      Zee   e	d<    e ee      dd      Zee   e	d<    e ee      dd      Z ee   e	d<    e ee!      dd      Z"ee!   e	d<    e ee#      dd      Z$ee#   e	d<    e ee%      dd      Z&ee%   e	d<    e ee'      dd      Z(ee'   e	d<    ed e
d      dd      Z)ee   e	d<    ed  e
d      dd      Z*ee   e	d <    e+d!d"#      Z, e+d$d%#      Z-e.d&e/d'e0d(d fd)       Z1e.ded'e0d(e/fd*       Z2e.ded&e/d'e0d(d+fd,       Z3y)-TblCourseListcourse_listr   T)primary_keyautoincrementr      F)nullabler   r   r   r    r!   2   r"   ztbl_full_courses.full_course_idr/   r#   N)r?   r   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-      r.   TblFullCoursecourses)back_populatesTblCompanyCourseRoleMapcoursedatadbreturnc                 x    |j                         } | di |}|j                  |       |j                          |S )Nr6   )
model_dumpaddflush)clsrG   rH   	data_dict
new_courses        r8   createzTblCourseList.create=   s6    OO%	%9%

z

r7   c                     |j                  |       j                  | j                  |k(        j                         }|st	        dd      t
        j                  |      S )Ni  zCourse not found)status_codedetail)queryfilterr   firstr   r   model_validate)rN   r   rH   results       r8   	get_by_idzTblCourseList.get_by_idE   sN    #%%cmmy&@AGGIC8JKK,,V44r7   zTblCourseList | Nonec                 4   |j                  |       j                  | j                  |k(        j                         }|sy |j	                         }|j                         D ]  \  }}|	t        |||        |j                          |j                  |       |S )N)	rU   rV   r   rW   rK   itemssetattrcommitrefresh)rN   r   rG   rH   get_datarO   keyvalues           r8   updatezTblCourseList.updateY   s    88C=''(BCIIKOO%	#//+JC #u- , 			


8r7   )4r0   r1   r2   __tablename__r	   r   r   r   r3   r4   r   r   r5   r   r   r   r   r   r   r   r    r!   r"   r   r/   r#   r$   r%   r&   r   r'   r   r(   r   r)   r   r*   r   r+   r   r,   r-   r.   r   full_coursecompany_course_rolesclassmethodr   r
   rQ   rZ   rc   r6   r7   r8   r:   r:       s	   !M*;TaefIvc{f,]GCLSXYKY -ngPT UL&+U4A$GZB[fj4kf01k2?EW@Xcg2hOV./h2?EW@Xcg2hOV./h*;dSIvc{S!.RV!WM6#;W"/De9fqu"vNF3Kv!.RV`d!eM6#;e#01BGVZdh#iOVC[i -ngPT^b cL&+c*;$X\]Ivc{]!.tJ/?$X\!]FF:]-:4;P[_im-nM6/*n9FtL]G^imw{9|V$56|-:4;P[_im-nM6/*n+8n9MX\fj+kL&(k-:4;P[_im-nM6/*n'45JGTVKbfpt'uu#01BGCL[_im#nOVC[nyIK'(ARZ[ . g /   5# 57 5~ 5 5& 
s 
. 
g 
J` 
 
r7   r:   N)fastapir   
sqlalchemyr   r   r   r   sqlalchemy.ormr   r	   r
   r   app.models.mainr   pydanticr   app.utils.common_utilsr   r   r   r   r   r   r   r   r   app.utils.schemas_utilsr   r   r:   r6   r7   r8   <module>ro      sI    ! 8 8 G G    A  A  A /5[ 50DD Dr7   