ó
    Uœi“   ã            
       óè  • S SK JrJrJrJr  S SKJr  S SKJr  S SK	J
r
  S SKJrJrJr  S SKJr  S SKJr  S SKJr  \" S	S
/S9r\R-                  S5      \" SSS9\" SSS9\" \
5      \" \5      4S\\   S\\   S\S\4S jj5       r\R-                  S5      \" \
5      \" \5      4S\S\S\4S jj5       r\R-                  S5      \" \
5      \" \5      4S\S\S\4S jj5       r\R7                  S5      \" \
5      \" \5      4S\S\S\4S jj5       r\R;                  S5      \" \
5      \" \5      4S\S\S\S\4S jj5       r\R?                  S5      \" \
5      \" \5      4S\S\S\4S jj5       rg)é    )Ú	APIRouterÚDependsÚQueryÚstatus)ÚJSONResponse)Úget_db)Úget_current_active_user)Ú	UserLoginÚStoreCollaborativeWorkÚUpdateCollaborativeWork)ÚCollaborativeWorkClass)ÚSession)ÚOptionalz/collaborative_workszCollaborative Works)ÚprefixÚtagsÚ Nz-1 o omitir = no filtrar)ÚdescriptionÚ	school_idÚ	course_idÚsession_userÚdbc           	      ó¦  •  [        U5      R                  XS9nUR                  S5      S:X  a<  [        [        R                  SUR                  SS5      UR                  S/ 5      S.S	9$ [        [        R
                  S
SUR                  S/ 5      S.S	9$ ! [         a/  n[        [        R                  S[        U5      / S.S	9s SnA$ SnAff = f)z]Lista registros activos (deleted_date is None). Filtros opcionales por school_id y course_id.)r   r   r   Úerroréô  ÚmessagezError al listarÚdata©r   r   r   ©Ústatus_codeÚcontentéÈ   ÚOKN)r   Úgetr   r   ÚHTTP_500_INTERNAL_SERVER_ERRORÚHTTP_200_OKÚ	ExceptionÚstr)r   r   r   r   ÚresultÚes         ÚYC:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\routers\collaborative_works.pyÚget_listr+      sÖ   € ð
Ü'¨Ó+×/Ñ/¸)Ð/ÐYˆØ:‰:hÓ 7Ó*ÜÜ"×AÑAà!Ø%Ÿz™z¨)Ð5FÓGØ"ŸJ™J v¨rÓ2ññð ô Ü×*Ñ*àØØŸ
™
 6¨2Ó.ññ
ð 	
øô ó 
ÜÜ×=Ñ=àÜ˜q›6Øññ
õ 	
ûð
ús$   ‚A(B Á++B Â
CÂ!$CÃCÃCz/by_course/{course_id}c                 ó„  •  [        U5      R                  U S9nUR                  S5      S:X  a,  [        [        R
                  SUR                  SS5      SS.S	9$ [        [        R                  S
SUR                  S5      S.S	9$ ! [         a/  n[        [        R                  S[        U5      SS.S	9s SnA$ SnAff = f)zVObtiene el registro de trabajo colaborativo para un course_id (uno por curso, activo).)r   r   r   é”  r   úRegistro no encontradoNr   r   r!   r"   r   r   )
r   Úget_by_course_idr#   r   r   ÚHTTP_404_NOT_FOUNDr%   r&   r$   r'   )r   r   r   r(   r)   s        r*   r/   r/   6   sÅ   € ð
Ü'¨Ó+×<Ñ<ÀyÐ<ÐQˆØ:‰:hÓ 7Ó*ÜÜ"×5Ñ5à!Ø%Ÿz™z¨)Ð5MÓNØ ññð ô Ü×*Ñ*àØØŸ
™
 6Ó*ññ
ð 	
øô ó 
ÜÜ×=Ñ=Ø"¬s°1«v¸tÑDñ
õ 	
ûð
ús$   ‚AB Á*B Â
B?Â$B:Â4B?Â:B?z/{id}Úidc                 óˆ  •  [        U5      R                  U 5      nUR                  S5      S:X  a,  [        [        R
                  SUR                  SS5      SS.S9$ [        [        R                  S	S
UR                  S5      S.S9$ ! [         a/  n[        [        R                  S[        U5      SS.S9s SnA$ SnAff = f)zObtiene un registro por id.r   r   r-   r   r.   Nr   r   r!   r"   r   r   )
r   Ú	get_by_idr#   r   r   r0   r%   r&   r$   r'   ©r1   r   r   r(   r)   s        r*   r3   r3   W   sÂ   € ð
Ü'¨Ó+×5Ñ5°bÓ9ˆØ:‰:hÓ 7Ó*ÜÜ"×5Ñ5à!Ø%Ÿz™z¨)Ð5MÓNØ ññð ô Ü×*Ñ*àØØŸ
™
 6Ó*ññ
ð 	
øô ó 
ÜÜ×=Ñ=Ø"¬s°1«v¸tÑDñ
õ 	
ûð
ús$   ‚AB Á*B Â
CÂ$B<Â6CÂ<Cz/storer   c           	      óŠ  •  [        U S5      (       a  U R                  5       OU R                  5       nUR                  S5      c  U(       a  UR                  US'   [        U5      R                  U5      nUR                  S5      S:X  a,  [        [        R                  SUR                  SS5      SS	.S
9$ UR                  S5      n[        [        R                  SUR                  SS5      Ub  UOSUR                  S5      0S	.S
9$ ! [         a/  n[        [        R                  S[        U5      SS	.S
9s SnA$ SnAff = f)un   Crea o actualiza: si ya existe para ese course_id, actualiza; si no, crea. school_id del body o de la sesiÃ³n.Ú
model_dumpr   Nr   r   r   r   zError al guardarr   r   r   éÉ   zRegistro creador1   )Úhasattrr6   Údictr#   r   r   Ústorer   r   r$   ÚHTTP_201_CREATEDr&   r'   )r   r   r   Úpayloadr(   Úcreatedr)   s          r*   r:   r:   x   s-  € ð
Ü'.¨t°\×'BÑ'B$—/‘/Ô#ÈÏ	É	ËˆØ;‰;{Ó#Ñ+¶Ø#/×#9Ñ#9ˆGKÑ Ü'¨Ó+×1Ñ1°'Ó:ˆØ:‰:hÓ 7Ó*ÜÜ"×AÑAà!Ø%Ÿz™z¨)Ð5GÓHØ ññð ð —*‘*˜VÓ$ˆÜÜ×/Ñ/àØ!Ÿ:™: iÐ1BÓCØ#*Ñ#6™¸TÀ6Ç:Á:ÈdÓCSÐ<Tññ
ð 	
øô ó 
ÜÜ×=Ñ=àÜ˜q›6Øññ
õ 	
ûð
ús%   ‚B3D	 Â6AD	 Ä	
EÄ$D=Ä7EÄ=Ec           	      óh  •  [        US5      (       a  UR                  SS9O7UR                  5       R                  5        VVs0 s H  u  pEUc  M
  XE_M     snnn[	        U5      R                  X5      nUR                  S5      S:X  a,  [        [        R                  SUR                  SS	5      SS
.S9$ [        [        R                  SUR                  SS5      SUR                  S5      0S
.S9$ s  snnf ! [         a/  n[        [        R                  S[        U5      SS
.S9s SnA$ SnAff = f)zActualiza un registro por id.r6   T)Úexclude_unsetNr   r   r-   r   r.   r   r   r!   zRegistro actualizador1   r   )r8   r6   r9   Úitemsr   Úupdater#   r   r   r0   r%   r&   r$   r'   )	r1   r   r   r   ÚkÚvr<   r(   r)   s	            r*   rA   rA   ¡   s:  € ð
Ü9@ÀÀ|×9TÑ9T$—/‘/°/Ñ5Ðlp×luÑluÓlw×l}Ñl}Ôlô  [RÒlÑdhÐdeð  DEÓ[_Ð[\Ò[_Ñlò  [RˆÜ'¨Ó+×2Ñ2°2Ó?ˆØ:‰:hÓ 7Ó*ÜÜ"×5Ñ5à!Ø%Ÿz™z¨)Ð5MÓNØ ññð ô Ü×*Ñ*àØ!Ÿ:™: iÐ1GÓHØ˜vŸz™z¨$Ó/Ð0ññ
ð 	
ùó [Røô& ó 
ÜÜ×=Ñ=àÜ˜q›6Øññ
õ 	
ûð
ús=   ‚AC8 Á	C2ÁC2ÁAC8 Â5<C8 Ã2C8 Ã8
D1Ä$D,Ä&D1Ä,D1c                 óŠ  •  [        U5      R                  U 5      nUR                  S5      S:X  a,  [        [        R
                  SUR                  SS5      SS.S9$ [        [        R                  S	UR                  SS
5      SS.S9$ ! [         a/  n[        [        R                  S[        U5      SS.S9s SnA$ SnAff = f)u$   Borrado lÃ³gico: setea deleted_date.r   r   r-   r   r.   Nr   r   r!   zRegistro eliminador   )
r   Údeleter#   r   r   r0   r%   r&   r$   r'   r4   s        r*   rE   rE   È   sÉ   € ð
Ü'¨Ó+×2Ñ2°2Ó6ˆØ:‰:hÓ 7Ó*ÜÜ"×5Ñ5à!Ø%Ÿz™z¨)Ð5MÓNØ ññð ô Ü×*Ñ*àØ!Ÿ:™: iÐ1EÓFØññ
ð 	
øô ó 
ÜÜ×=Ñ=àÜ˜q›6Øññ
õ 	
ûð
ús$   ‚AB	 Á+B	 Â	
CÂ$B=Â7CÂ=C) Úfastapir   r   r   r   Úfastapi.responsesr   Úapp.backend.db.databaser   Úapp.backend.auth.auth_userr	   Úapp.backend.schemasr
   r   r   Ú,app.backend.classes.collaborative_work_classr   Úsqlalchemy.ormr   Útypingr   Úcollaborative_worksr#   Úintr+   r/   r3   Úpostr:   ÚputrA   rE   © ó    r*   Ú<module>rT      s/  ðß 5Ó 5Ý *Ý *Ý >ß ZÑ ZÝ OÝ "Ý áØ!Ø
Ð	 ñÐ ð ×Ñ˜Óá$ TÐ7QÑRÙ$ TÐ7QÑRÙ%Ð&=Ó>Ù˜&“/ñ	"
Ø˜‰}ð"
à˜‰}ð"
ð ð"
ð 	ô	"
ó ð"
ðJ ×ÑÐ1Ó2ñ &Ð&=Ó>Ù˜&“/ñ
Øð
àð
ð 	ô
ó 3ð
ð@ ×Ñ˜Ó!ñ &Ð&=Ó>Ù˜&“/ñ
Øð
àð
ð 	ô
ó "ð
ð@ ×Ñ˜(Ó#ñ &Ð&=Ó>Ù˜&“/ñ%
Ø
 ð%
àð%
ð 	ô%
ó $ð%
ðP ×Ñ˜Ó!ñ &Ð&=Ó>Ù˜&“/ñ	#
Øð#
à
!ð#
ð ð#
ð 	ô	#
ó "ð#
ðL ×Ñ˜GÓ$ñ &Ð&=Ó>Ù˜&“/ñ!
Øð!
àð!
ð 	ô!
ó %ñ!
rS   