Ë
    ÷esjï  ã            
       óX  — d dl Z e j                  j                  d d«       d dlmZmZ d dlmZmZm	Z	m
Z
mZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ  eddg¬«      Zej3                  ddd¬«       e
dd¬«       e
dd¬«       e
dd¬«       ee«      fdedededefd„«       Zej3                  ddd¬«       edd ¬«       ee«      fd!edefd"„«       Zej?                  dd#d$d%¬&«       ee«      fd'edefd(„«       Z ejC                  dd)d*¬«       edd ¬«      d ee«      fd!ed'edefd+„«       Z"ejG                  dd,d-¬«       edd.¬«       ee«      fd!edefd/„«       Z$ej?                  d0d1d2¬«       edd3¬«       ee«      fd!edefd4„«       Z%d5e&fd6„Z'd7„ Z(d;d8ed9ed5e&fd:„Z)y)<é    Nz/var/www/html/metafoliadorv2)ÚCreateSiteRequestÚUpdateSiteRequest)Ú	APIRouterÚDependsÚHTTPExceptionÚQueryÚPath)ÚSession)Úget_db)ÚAlfrescoSite)ÚAlfrescoConnection)Únow)Úisoz/api/v1/sitesÚsites)ÚprefixÚtagsÚ zListar sitiosuq   Lista todos los sitios Alfresco registrados. Filtrable por connection_id, activos y bÃºsqueda por nombre/tÃ­tulo.)ÚsummaryÚdescriptionu$   Filtrar por ID de conexiÃ³n Alfresco)r   FzFiltrar solo sitios activosu%   Buscar por nombre o tÃ­tulo del sitioÚconnection_idÚactive_onlyÚsearchÚdbc           
   ƒ   óV  K  — |j                  t        «      }| r"|j                  t        j                  | k(  «      }|r"|j                  t        j                  dk(  «      }|rV|j                  t        j
                  j                  d|› d�«      t        j                  j                  d|› d�«      z  «      }|j                  t        j
                  «      j                  «       }t        |«      }|D �cg c](  }t        ||j                  |j                  d«      «      ‘Œ* c}S c c}w ­w)NTú%r   )Úqueryr   Úfilterr   ÚactiveÚnameÚilikeÚtitleÚorder_byÚallÚ_get_site_sizesÚ
_serializeÚgetÚid)r   r   r   r   Úqr   Ú
site_sizesÚss           ú4/var/www/html/metafoliadorv2/app/api/routes/sites.pyÚ
list_sitesr,      sï   è ø€ ð 	�‰”Ó€AÙØ�H‰H”\×/Ñ/°=Ñ@ÓAˆÙØ�H‰H”\×(Ñ(¨DÑ0Ó1ˆÙØ�H‰HÜ×Ñ×$Ñ$ q¨¨° ]Ó3Ü×Ñ×%Ñ%¨¨&¨° mÓ4ñ6ó
ˆð �J‰J”|×(Ñ(Ó)×-Ñ-Ó/€EÜ  Ó$€JØ<AÖB°qŒJ�q˜*Ÿ.™.¨¯©¨qÓ1Õ2ÒBÐBùÒBùs   ‚C2D)Ã4-D$Ä!D)z
/{site_id}zObtener sitioz<Devuelve el detalle completo de un sitio Alfresco por su ID..zID del sitioÚsite_idc              ƒ   ó  K  — |j                  t        «      j                  t        j                  | k(  «      j	                  «       }|st        dd¬«      ‚t        |«      }t        ||j                  |j                  d«      «      S ­w)Né”  úSitio no encontrado©Ústatus_codeÚdetailr   )	r   r   r   r'   Úfirstr   r$   r%   r&   )r-   r   r*   r)   s       r+   Úget_siter5   '   sh   è ø€ à
�‰”Ó×%Ñ%¤l§o¡o¸Ñ&@ÓA×GÑGÓI€AÙÜ¨Ð4IÔJÐJÜ  Ó$€JÜ�a˜Ÿ™¨¯©¨aÓ0Ó1Ð1ùs   ‚BBéÉ   zCrear sitiouR   Registra un nuevo sitio Alfresco manualmente, vinculado a una conexiÃ³n existente.)r2   r   r   Úbodyc              ƒ   ó0  K  — g d¢}|D ]  }t        | |«      rŒt        dd|› d�¬«      ‚ |j                  t        «      j	                  t        j
                  | j                  k(  «      j                  «       }|st        dd¬«      ‚t        | j                  | j                  | j                  | j                  xs | j                  | j                  xs d| j                  xs d| j                  xs d| j                  xs d| j                   xs d| j"                  xs d| j$                  xs d| j&                  | j(                  �| j(                  nd	¬
«      }|j+                  |«       |j-                  «        |j/                  |«       t1        |«      S ­w)N)r   r-   r   i�  ú'z' es requeridor1   zConexion no exister   ÚPUBLICT)r   r   r-   r!   r   Ú
visibilityÚroot_folder_idÚroot_folder_pathÚdocument_library_idÚsite_presetÚ	site_roleÚmetadata_jsonr   )Úgetattrr   r   r   r   r'   r   r4   r   r   r-   r!   r   r;   r<   r=   r>   r?   r@   rA   r   ÚaddÚcommitÚrefreshr%   )r7   r   ÚrequiredÚfieldÚconnr*   s         r+   Úcreate_siterI   0   sY  è ø€ â3€HØò SˆÜ�t˜UÕ#Ü¨C¸!¸E¸7À.Ð8QÔRÐRðSð �8‰8Ô&Ó'×.Ñ.Ô/A×/DÑ/DÈ×HZÑHZÑ/ZÓ[×aÑaÓc€DÙÜ¨Ð4HÔIÐIäØ×(Ñ(Ø�Y‰YØ—‘Ø�j‰jÒ%˜DŸI™IØ×$Ñ$Ò*¨Ø—?‘?Ò. hØ×*Ñ*Ò0¨bØ×.Ñ.Ò4°"Ø ×4Ñ4Ò:¸Ø×$Ñ$Ò*¨Ø—.‘.Ò& BØ×(Ñ(Ø"Ÿk™kÐ5ˆt�{Š{¸4ô	€Að ‡F�Fˆ1„IØ‡I�I„KØ‡J�Jˆq„MÜ�a‹=Ðùs   ‚F™E=FzActualizar sitiozHModifica los metadatos de un sitio Alfresco. Permite activar/desactivar.c              ƒ   óœ  K  — |j                  t        «      j                  t        j                  | k(  «      j	                  «       }|st        dd¬«      ‚|j                  d¬«      }g d¢}|D ]  }||v sŒ||   €Œt        ||||   «       Œ d|v r|d   �
|d   |_        |j                  «        |j                  |«       t        |«      S ­w)Nr/   r0   r1   T)Úexclude_unset)r   r!   r   r;   r<   r=   r>   r?   r@   rA   r   r   )r   r   r   r'   r4   r   Ú
model_dumpÚsetattrr   rD   rE   r%   )r-   r7   r   r*   ÚdataÚ	updatablerG   s          r+   Úupdate_siterP   P   sÆ   è ø€ à
�‰”Ó×%Ñ%¤l§o¡o¸Ñ&@ÓA×GÑGÓI€AÙÜ¨Ð4IÔJÐJà�?‰?¨ˆ?Ó.€Dò€Ið
 ò +ˆØ�DŠ=˜T %™[Ñ4Ü�A�u˜d 5™kÕ*ð+ð �4Ñ˜D ™NÐ6Ø˜‘>ˆŒà‡I�I„KØ‡J�Jˆq„MÜ�a‹=Ðùs   ‚A2CÁ5CÁ;ACzEliminar sitioz`Elimina permanentemente un sitio y todos sus datos de Series, Subseries, Expedientes y archivos.zID del sitio a eliminarc              ƒ   óø   K  — |j                  t        «      j                  t        j                  | k(  «      j	                  «       }|st        dd¬«      ‚|j                  |«       |j                  «        ddiS ­w)Nr/   r0   r1   ÚokT)r   r   r   r'   r4   r   ÚdeleterD   ©r-   r   r*   s      r+   Údelete_siterU   g   s`   è ø€ à
�‰”Ó×%Ñ%¤l§o¡o¸Ñ&@ÓA×GÑGÓI€AÙÜ¨Ð4IÔJÐJØ‡I�Iˆa„LØ‡I�I„KØ�$ˆ<Ðùs   ‚A8A:z/{site_id}/synczSincronizar sitioub   Actualiza la marca de sincronizaciÃ³n del sitio. La sincronizaciÃ³n real se dispara desde folders.zID del sitio a sincronizarc              ƒ   ó  K  — |j                  t        «      j                  t        j                  | k(  «      j	                  «       }|st        dd¬«      ‚t        «       |_        |j                  «        dt        |j                  «      dœS ­w)Nr/   r0   r1   T)rR   Úlast_sync_at)
r   r   r   r'   r4   r   ÚtznowrW   rD   r   rT   s      r+   Ú	sync_siterY   q   sh   è ø€ à
�‰”Ó×%Ñ%¤l§o¡o¸Ñ&@ÓA×GÑGÓI€AÙÜ¨Ð4IÔJÐJÜ“W€A„NØ‡I�I„KØ¬¨A¯N©NÓ(;Ñ<Ð<ùs   ‚B
BÚreturnc                 ó�   — ddl m} | j                   |d«      «      j                  «       }|D �ci c]  }|d   |d   “Œ c}S c c}w )z$Retorna {site_id: total_size_bytes}.r   )Útexta  
        SELECT af.site_id, COALESCE(SUM(afi.size_bytes), 0)
        FROM alfresco_folders af
        JOIN alfresco_files afi ON afi.folder_id = af.id AND afi.deleted = false AND afi.name != 'index.xml'
        WHERE af.deleted = false
        GROUP BY af.site_id
    é   )Ú
sqlalchemyr\   ÚexecuteÚfetchall)r   r\   ÚrowsÚrs       r+   r$   r$   {   sM   € åØ�:‰:‘dð ó 	ó 
÷ ‰(‹*ð 	ð !%Ö%˜1ˆAˆa‰D�!�A‘$‰JÒ%Ð%ùÒ%s   °Ac                 óŒ   — | r| dk(  ry| dk  r| › d�S | dk  r	| dz  d›d�S | dk  r	| dz  d›d	�S | d
k  r	| dz  d›d�S | d
z  d›d�S )Nr   u   â€”i   z Bi   z.1fz KBi   @z MBl        z.2fz GBz TB© )Ú	bytes_vals    r+   Ú_format_sizerf   ˆ   s�   € Ù˜	 QšØØ�4ÒØ�˜BÐÐØ	�WÒ	Ø˜dÑ" 3Ð' sÐ+Ð+Ø	�ZÒ	Ø˜gÑ% cÐ*¨#Ð.Ð.Ø	�]Ò	"Ø˜jÑ(¨Ð-¨SÐ1Ð1à˜mÑ+¨CÐ0°Ð4Ð4ó    r*   Ú	site_sizec                 óX  — i d| j                   “d| j                  “d| j                  r| j                  j                  nd “d| j                  “d| j                  “d| j
                  “d| j                  “d| j                  “d	| j                  “d
| j                  “d| j                  “d| j                  “d| j                  “d| j                  “d| j                  “dt        | j                   «      “d|“t#        |«      t        | j$                  «      t        | j&                  «      dœ¥S )Nr'   r   Úconnection_namer   r-   r!   r   r;   r<   r=   r>   r?   r@   rA   r   rW   Ú	repo_size)Úrepo_size_humanÚ
created_atÚ
updated_at)r'   r   Ú
connectionr   r-   r!   r   r;   r<   r=   r>   r?   r@   rA   r   r   rW   rf   rm   rn   )r*   rh   s     r+   r%   r%   —   sT  € ðØˆa�d‰dðà˜Ÿ™ðð 	°·²˜1Ÿ<™<×,Ò,À$ðð 	�—‘ð	ð
 	�1—9‘9ðð 	�—‘ðð 	�q—}‘}ðð 	�a—l‘lðð 	˜!×*Ñ*ðð 	˜A×.Ñ.ðð 	˜q×4Ñ4ðð 	�q—}‘}ðð 	�Q—[‘[ðð 	˜Ÿ™ðð 	�!—(‘(ðð  	œ˜AŸN™NÓ+ð!ð" 	�Yð#ô$ (¨	Ó2Ü˜!Ÿ,™,Ó'Ü˜!Ÿ,™,Ó'ò)ð rg   )r   )*ÚsysÚpathÚinsertÚapp.schemasr   r   Úfastapir   r   r   r   r	   Úsqlalchemy.ormr
   Úapp.models.databaser   Úapp.models.alfresco_siter   Úapp.models.alfresco_connectionr   Úapp.services.timezoner   rX   r   Úrouterr&   ÚintÚboolÚstrr,   r5   ÚpostrI   ÚputrP   rS   rU   rY   Údictr$   rf   r%   rd   rg   r+   ú<module>r�      s}  ðÛ 
Ø ‡�‡��Ð1Ô 2ß <ç BÕ BÝ "å &Ý 1Ý =Ý .Ý %á	˜/°°	Ô	:€ð ‡�ˆB˜ð  6i€ó  já˜tÐ1WÔXÙ˜eÐ1NÔOÙ˜Ð*QÔRÙ˜&“/ñ	CØðCàðCð ðCð 	ò	Có jðCð* ‡�ˆL /Ð?}€Ó~Ù"& s¸Ô"GÑW^Ð_eÓWfñ 2˜Cð 2ÈWò 2ó ð2ð ‡�ˆR˜S¨-ð  FZ€ó  [Ù=DÀV»_ñ Ð-ð °7ò ó [ðð> ‡�ˆLÐ"4ð  CM€ó  NÙ%)¨#¸>Ô%JÐfjñ  {Bð  CIó  {Jñ ˜sð ÐRcð Ðpwò ó Nðð, ‡�ˆ|Ð%5ð  Df€ó  gÙ%)¨#Ð;TÔ%UÑelÐmsÓetñ ˜sð Ð[bò ó gðð ‡�ÐÐ(;ð  Jn€ó  oÙ#'¨Ð9UÔ#VÑfmÐntÓfuñ =˜Sð =Ð\cò =ó oð=ð
&˜4ó 
&ò5ñ�,ð ¨3ð °tô rg   