
    HUj*              
          S r SSKJr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  SSKJrJr  SSKJr  SS	KJrJr  \" S
S/S9rS\S\
S\4S jr\R5                  S5      \" \5      \" \5      4S\
S\4S jj5       r\R5                  S5      \" \5      \" \5      4S\S\
S\4S jj5       r\R5                  S5      \" \5      \" \5      4S\S\
S\4S jj5       r\R?                  S5      \" S5      \" \5      \" \5      4S\S\S\
S\4S jj5       r \RC                  S5      \" \5      \" \5      4S\S\
S\4S jj5       r"g)z>Plantillas/modelos descargables para documentos de solo carga.    )	APIRouterDependsFile
UploadFilestatus)FileResponse)Session)get_current_active_user)DocumentFormatModelsClass)	api_errorapi_response)get_db)RolModel	UserModelz/document-format-modelszDocument format models)prefixtagssession_userdbreturnc                    [        [        U SS5      =(       d    S5      nUS:X  a  gUS:X  a  gUR                  [        5      R	                  [        R
                  U R                  :H  5      R                  5       nU(       a  UR                  (       d  g[        UR                  5      R                  5       nSU;   d  SU;   a  gS	U;   a  S
U;  a  gg)zWAdministrador de establecimiento, coordinador o evaluador (por cliente). No superadmin.rol_idr      F   Tcoordinador	evaluadoradministradorsuper)intgetattrqueryr   filteridr   firstrolstrlower)r   r   ridr$   ns        [C:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\routes\document_format_models.py_can_manage_modelsr*      s    
glHa05A
6C
ax
ax
((8

#
#HKK<3F3F$F
G
M
M
OCcggCGGA[A-!q 0     c                     [        X5      (       d  [        [        R                  SS9$ [	        U 5      R                  5       n[        US9$ )Nz7No tienes permiso para gestionar modelos de documentos.status_codemessagedata)r*   r   r   HTTP_403_FORBIDDENr   
list_itemsr   )r   r   r2   s      r)   list_format_modelsr5   %   sH    
 l//11M
 	
 %R(335DT""r+   z/{document_id}document_idc                    Un[        U5      R                  U 5      nU(       d  [        [        U 5      SS S.S9$ [        [        U 5      SUR                  UR
                  (       a  UR
                  R                  5       OS S.S9$ )NF)r6   	has_modeloriginal_filenamer1   T)r6   r8   r9   
updated_at)r   	get_modelr   r   r9   r:   	isoformat)r6   r   r   _rows        r)   get_format_model_metar?   3   s     	A
#B
'
1
1+
>C";/"%)
 	
 {+!$!6!68;#..224D	
 r+   z/{document_id}/downloadc                 R   Un[        U5      nUR                  U 5      nU(       d  [        [        R                  SS9$ UR                  U5      nU(       d  [        [        R                  SS9$ [        UUR                  =(       d    UR                  UR                  =(       d    SS9$ )Nz*No hay modelo cargado para este documento.r.   z!Archivo del modelo no encontrado.zapplication/octet-stream)filename
media_type)
r   r;   r   r   HTTP_404_NOT_FOUNDabsolute_pathr   r9   namecontent_type)r6   r   r   r=   svcr>   paths          r)   download_format_modelrI   M   s     	A
#B
'C
--
$C11@
 	
 S!D117
 	
 &&3$))##A'A r+   .filec                 >  #    [        X25      (       d  [        [        R                  SS9$ UR	                  5       I S h  vN n[        U5      R                  U UR                  =(       d    SUUR                  [        USS 5      (       a  [        UR                  5      OS 5      nUR                  S5      S:X  a8  [        UR                  S[        R                  5      UR                  SS	5      S9$ [        UR                  SS
5      UR                  S5      S9$  N7f)Nz4No tienes permiso para cargar modelos de documentos.r.   zmodelo.docxr"   r   errorhttp_statusr0   ErrorOKr2   )r0   r2   )r*   r   r   r3   readr   uploadrA   rF   r   r   r"   getHTTP_400_BAD_REQUESTr   )r6   rJ   r   r   r2   results         r)   upload_format_modelrU   i   s      l//11J
 	
 D&r*11& 'dD A ALOOtF zz(w&

=&2M2MNJJy'2
 	
 

9d ;&**VBTUU s   <DDCDc                 R   [        X!5      (       d  [        [        R                  SS9$ [	        U5      R                  U 5      nUR                  S5      S:X  a8  [        UR                  S[        R                  5      UR                  SS5      S9$ [        UR                  SS5      S	9$ )
Nz6No tienes permiso para eliminar modelos de documentos.r.   r   rL   rM   r0   rN   rO   )r0   )	r*   r   r   r3   r   deleterR   rC   r   )r6   r   r   rT   s       r)   delete_format_modelrX      s     l//11L
 	
 'r*11+>Fzz(w&

=&2K2KLJJy'2
 	
 

9d ;<<r+   N)#__doc__fastapir   r   r   r   r   fastapi.responsesr   sqlalchemy.ormr	   app.backend.auth.auth_userr
   0app.backend.classes.document_format_models_classr   app.backend.core.responsesr   r   app.backend.db.databaser   app.backend.db.modelsr   r   document_format_modelsboolr*   rR   r5   r   r?   rI   postrU   rW   rX    r+   r)   <module>rf      s   D @ @ * " > V > * 5"$
"	# Y G  $ B&/%&=>
#
#
#  
# ,- &/%&=>  .2 56 &/%&=>  76 -. Cy&/%&=>	VV
V 	V 	V /V6 /0 &/%&=>=== = 1=r+   