Ë
    *fsj
;  ã                   ó²  — d dl Z e j                  j                  d d«       d dlmZmZmZmZmZ d dl	m
Z
 d dlmZmZ d dlmZ d dlmZ d dlmZ d d	lmZmZ d d
lmZ d dlmZ  eddg¬«      Zej9                  ddd¬«       edd¬«       edd¬«       ee«      fdedede
fd„«       Zej9                  ddd¬«       edd¬«       ee«      fd e de
fd!„«       Z!ejE                  dd"d#d$¬%«       ee«      fd&ede
fd'„«       Z#ejI                  dd(d)¬«       edd¬«      d ee«      fd e d&ede
fd*„«       Z%ejM                  dd+d,¬«       edd-¬«       ee«      fd e de
fd.„«       Z'ejE                  d/d0d1¬«       edd2¬«       ee«      fd e de
fd3„«       Z(ejE                  d4d5d6¬«       edd¬«       ee«      fd e de
fd7„«       Z)d8„ Z*d9e+fd:„Z,d>d;ed<e d9e+fd=„Z-y)?é    Nz/var/www/html/metafoliadorv2)Ú	APIRouterÚDependsÚHTTPExceptionÚQueryÚPath)ÚSession)ÚCreateConnectionRequestÚUpdateConnectionRequest)Úget_db)ÚAlfrescoConnection)ÚAlfrescoSite)Úencrypt_credentialÚdecrypt_credential)Únow)Úisoz/api/v1/connectionsÚconnections)ÚprefixÚtagsÚ zListar conexionesue   Lista todas las conexiones Alfresco configuradas. Permite filtrar por activas y bÃºsqueda por nombre.)ÚsummaryÚdescriptionFzFiltrar solo conexiones activas)r   u   Buscar por nombre de conexiÃ³nÚactive_onlyÚsearchÚdbc           
   ƒ   óÆ  K  — |j                  t        «      }| r"|j                  t        j                  dk(  «      }|r2|j                  t        j                  j                  d|› d�«      «      }|j                  t        j                  «      j                  «       }t        |«      }|D �cg c](  }t        ||j                  |j                  d«      «      ‘Œ* c}S c c}w ­w)NTú%r   )Úqueryr   ÚfilterÚactiveÚnameÚilikeÚorder_byÚallÚ_get_repo_sizesÚ
_serializeÚgetÚid)r   r   r   Úqr   Ú
repo_sizesÚcs          ú:/var/www/html/metafoliadorv2/app/api/routes/connections.pyÚlist_connectionsr,      s±   è ø€ ð 	�‰Ô#Ó$€AÙØ�H‰HÔ'×.Ñ.°$Ñ6Ó7ˆÙØ�H‰HÔ'×,Ñ,×2Ñ2°Q°v°h¸a°=ÓAÓBˆØ—*‘*Ô/×4Ñ4Ó5×9Ñ9Ó;€KÜ  Ó$€JØ<GÖH°qŒJ�q˜*Ÿ.™.¨¯©¨qÓ1Õ2ÒHÐHùÒHùs   ‚B*C!Â,-CÃC!z/{connection_id}u   Obtener conexiÃ³nuA   Devuelve el detalle completo de una conexiÃ³n Alfresco por su ID..u   ID de la conexiÃ³n AlfrescoÚconnection_idc              ƒ   ó  K  — |j                  t        «      j                  t        j                  | k(  «      j	                  «       }|st        dd¬«      ‚t        |«      }t        ||j                  |j                  d«      «      S ­w)Né”  úConexion no encontrada©Ústatus_codeÚdetailr   )	r   r   r   r'   Úfirstr   r$   r%   r&   )r-   r   r*   r)   s       r+   Úget_connectionr5   #   sl   è ø€ à
�‰Ô#Ó$×+Ñ+Ô,>×,AÑ,AÀ]Ñ,RÓS×YÑYÓ[€AÙÜ¨Ð4LÔMÐMÜ  Ó$€JÜ�a˜Ÿ™¨¯©¨aÓ0Ó1Ð1ùs   ‚BBéÉ   u   Crear conexiÃ³nue   Registra una nueva conexiÃ³n a una instancia Alfresco. La contraseÃ±a se almacena cifrada con Fernet.)r2   r   r   Úbodyc              ƒ   óÜ  K  — g d¢}|D ]  }t        | |«      rŒt        d|› d�¬«      ‚ t        | j                  | j                  | j
                  j                  d«      | j                  xs d| j                  rt        | j                  «      nd | j                  xs d | j                  rt        | j                  «      nd | j                  xs d| j                  rt        | j                  «      nd | j                  xs d| j                  �| j                  nd| j                   xs d¬	«      }|j#                  |«       |j%                  «        |j'                  |«       t)        |«      S ­w)
N)r    Úbase_urlÚ	ip_serveré�  z es requeridor1   ú/r   ÚbasicT)r    r:   r9   ÚusernameÚpassword_hashÚapi_usernameÚapi_password_hashÚ	client_idÚclient_secret_hashÚ	auth_typer   Únotes)Úgetattrr   r   r    r:   r9   Úrstripr>   Úpasswordr   r@   Úapi_passwordrB   Úclient_secretrD   r   rE   ÚaddÚcommitÚrefreshr%   )r7   r   ÚrequiredÚfieldr*   s        r+   Úcreate_connectionrP   ,   s*  è ø€ â0€HØò QˆÜ�t˜UÕ#Ü¨C¸5¸'ÀÐ8OÔPÐPðQô 	Ø�Y‰YØ—.‘.Ø—‘×%Ñ% cÓ*Ø—‘Ò$ "Ø;?¿=º=Ô(¨¯©Ô7ÈdØ×&Ñ&Ò.¨$ØCG×CTÒCTÔ,¨T×->Ñ->Ô?ÐZ^Ø—.‘.Ò& BØEI×EWÒEWÔ-¨d×.@Ñ.@ÔAÐ]aØ—.‘.Ò+ GØ"Ÿk™kÐ5ˆt�{Š{¸4Ø�j‰jÒ˜Bô	€Að ‡F�Fˆ1„IØ‡I�I„KØ‡J�Jˆq„MÜ�a‹=Ðùs   ‚E,™EE,u   Actualizar conexiÃ³nu^   Modifica los datos de una conexiÃ³n Alfresco existente. Si se envÃ­a contraseÃ±a, se re-cifra.c              ƒ   óª  K  — |j                  t        «      j                  t        j                  | k(  «      j	                  «       }|st        dd¬«      ‚|j                  d¬«      }dD ]6  }||v sŒ||   €Œt        |||dk7  r||   n||   j                  d«      «       Œ8 |j                  rt        |j                  «      |_        |j                  rt        |j                  «      |_        |j                  rt        |j                  «      |_        d	|v r|d	   �
|d	   |_        |j#                  «        |j%                  |«       t'        |«      S ­w)
Nr/   r0   r1   T)Úexclude_unset)r    r9   r:   r>   r@   rB   rD   rE   r9   r<   r   )r   r   r   r'   r4   r   Ú
model_dumpÚsetattrrG   rH   r   r?   rI   rA   rJ   rC   r   rL   rM   r%   )r-   r7   r   r*   ÚdatarO   s         r+   Úupdate_connectionrV   G   s+  è ø€ à
�‰Ô#Ó$×+Ñ+Ô,>×,AÑ,AÀ]Ñ,RÓS×YÑYÓ[€AÙÜ¨Ð4LÔMÐMà�?‰?¨ˆ?Ó.€DØqò _ˆØ�DŠ=˜T %™[Ñ4Ü�A�u¨U°jÒ-@˜d 5škÀdÈ5Ák×FXÑFXÐY\ÓF]Õ^ð_ð ‡}‚}Ü,¨T¯]©]Ó;ˆŒØ×ÒÜ0°×1BÑ1BÓCˆÔØ×ÒÜ1°$×2DÑ2DÓEˆÔØ�4Ñ˜D ™NÐ6Ø˜‘>ˆŒà‡I�I„KØ‡J�Jˆq„MÜ�a‹=Ðùs   ‚A.EÁ1EÁ7CEu   Eliminar conexiÃ³nuL   Elimina permanentemente una conexiÃ³n Alfresco y todos sus sitios asociados.u   ID de la conexiÃ³n 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   ÚdeleterL   )r-   r   r*   s      r+   Údelete_connectionrZ   _   sd   è ø€ à
�‰Ô#Ó$×+Ñ+Ô,>×,AÑ,AÀ]Ñ,RÓS×YÑYÓ[€AÙÜ¨Ð4LÔMÐMØ‡I�Iˆa„LØ‡I�I„KØ�$ˆ<Ðùs   ‚A8A:z/{connection_id}/testu   Probar conexiÃ³nu�   Verifica conectividad con la instancia Alfresco consultando su endpoint de versiÃ³n. Actualiza last_check_at y last_check_status.u   ID de la conexiÃ³n a probarc              ƒ   ó¸  K  — |j                  t        «      j                  t        j                  | k(  «      j	                  «       }|st        dd¬«      ‚dd l}	 |j                  › d�}d }|j                  r=|j                  r1t        |j                  «      }|j                  |j                  |«      }|j                  dd¬«      4 ƒd {  –—† }|j                  ||¬	«      ƒ d {  –—† }t        «       |_        |j                   d
k  rdnd|_        |j%                  «        d|j                   |j                   dk(  r|j'                  «       nt)        |j                   «      dœcd d d «      ƒd {  –—†  S 7 Œ©7 Œ�7 Œ	# 1 ƒd {  –—†7  sw Y   y xY w# t*        $ r>}	t        «       |_        d|_        |j%                  «        dt)        |	«      dœcY d }	~	S d }	~	ww xY w­w)Nr/   r0   r1   r   z:/alfresco/api/-default-/public/alfresco/versions/1/versioné
   F©ÚtimeoutÚverify©Úauthéô  rX   ÚerrorTéÈ   )rX   r2   Úinfo)rX   rc   )r   r   r   r'   r4   r   Úhttpxr9   r>   r?   r   Ú	BasicAuthÚAsyncClientr&   ÚtznowÚlast_check_atr2   Úlast_check_statusrL   ÚjsonÚstrÚ	Exception)
r-   r   r*   rf   Úurlra   ÚpwdÚclientÚrespÚes
             r+   Útest_connectionrt   i   sŸ  è ø€ à
�‰Ô#Ó$×+Ñ+Ô,>×,AÑ,AÀ]Ñ,RÓS×YÑYÓ[€AÙÜ¨Ð4LÔMÐMãð.Ø—‘�ÐVÐWˆØˆØ�:Š:˜!Ÿ/š/Ü$ Q§_¡_Ó5ˆCØ—?‘? 1§:¡:¨sÓ3ˆDØ×$Ñ$¨R¸Ð$Ó>÷ 	Lð 	LÀ&ØŸ™ C¨d˜Ó3×3ˆDÜ#›gˆAŒOØ*.×*:Ñ*:¸SÒ*@¡$ÀgˆAÔØ�I‰IŒKØ¨t×/?Ñ/?ÐX\×XhÑXhÐloÒXoÈÏÉÌÔuxÐy}÷  zJñ  zJó  vKñ  L÷	L÷ 	Lò 	LøØ3øð	Lø÷ 	L÷ 	Lñ 	Lûô ò .Ü›'ˆŒØ%ˆÔØ
�	‰	ŒØ¤c¨!£fÑ-Õ-ûð	.üsž   ‚AGÁA1F ÃE5ÃF ÃE;Ã&E7Ã'A<E;Å#F Å/E9Å0F Å4GÅ5F Å7E;Å9F Å;FÆFÆFÆ	F ÆGÆF Æ	GÆ3GÇGÇGÇGÇGz/{connection_id}/fetch-siteszDescubrir sitios desde AlfrescozyConsulta la API de Alfresco para obtener todos los sitios disponibles y los registra/actualiza en la base de datos local.c              ƒ   ó¤  ‡(K  — |j                  t        «      j                  t        j                  | k(  «      j	                  «       }|st        dd¬«      ‚|j                  r|j                  st        dd¬«      ‚|j                  st        dd¬«      ‚dd l	}dd l
}	 t        |j                  «      }|j                  |j                  |«      }|j                  dd	¬
«      4 ƒd {  –—† }|j                  › d�}|j                  ||¬«      ƒ d {  –—† }	|	j                   dk(  rt        dd¬«      ‚|	j                   dk7  rt        dd|	j                   › �¬«      ‚|	j#                  «       }
|
j                  di «      j                  dg «      }d}d}g }|D �]¯  }|j                  di «      }|j                  dd«      Š(‰(sŒ+‰(‰(|j                  d‰(«      |j                  dd«      |j                  dd«      |j                  dd«      |j                  dd«      dœ}	 |j                  › d‰(› �}|j                  ||¬«      ƒ d {  –—† }|j                   dk(  rA|j#                  «       j                  di «      }|j                  dd«      }|r||d <   d!‰(› �|d"<   d}�r˜|j                  › d‰(› d#�}|j                  ||¬«      ƒ d {  –—† }|j                   dk(  rx|j#                  «       j                  di «      j                  dg «      }|D ]C  }|j                  di «      }|j                  dd«      }|j                  d$d«      }|d%k(  sŒ?|r|} n |sâ|rà|j                  › d&|› d'�}|j                  ||¬«      ƒ d {  –—† }|j                   dk(  r„|j#                  «       j                  di «      j                  dg «      } | D ]N  }!|!j                  di «      }"|"j                  d(«      d%k(  sŒ*|"j                  d)«      sŒ<|"j                  dd«      } n" n |j%                  ‰(› d*|j                   › �«       |r ||d+<   |j                  d"«      s4d!‰(› d,�|d"<   n*|rt'        ˆ(fd-„|D «       «      s|j%                  ‰(› d.�«       |j                  t,        «      j                  t,        j.                  ‰(k(  t,        j0                  | k(  «      j	                  «       }$|$r>|j3                  «       D ]  \  }%}&|&sŒ	t5        |$|%|&«       Œ t7        «       |$_        |d0z  }�Œ€t-        d8d1| i|¤d	t7        «       d2œ¤Ž}'|j;                  |'«       |d0z  }�Œ² |j=                  «        t7        «       |_        d3|_         |j=                  «        d4tC        |«      |||d5œcd d d «      ƒd {  –—†  S 7 �Œ¹7 �Œ’7 �Œd7 �Œå7 �Œ0# t(        $ r*}#|j%                  ‰(› d/t+        |#«      › �«       Y d }#~#�Œ]d }#~#ww xY w7 ŒJ# 1 ƒd {  –—†7  sw Y   y xY w# t
        $ r ‚ t(        $ rA}#t7        «       |_        d6|_         |j=                  «        t        d7t+        |#«      ¬«      ‚d }#~#ww xY w­w)9Nr/   r0   r1   r;   z.La conexion no tiene credenciales configuradaszLa conexion esta inactivar   é   Fr]   zF/alfresco/api/-default-/public/alfresco/versions/1/sites?maxItems=1000r`   i‘  z$Credenciales invalidas para Alfrescord   iö  zAlfresco respondio HTTP ÚlistÚentriesÚentryr'   r   Útitler   Ú
visibilityÚPUBLICÚpresetÚrole)r    Úsite_idrz   r   r{   Úsite_presetÚ	site_rolez9/alfresco/api/-default-/public/alfresco/versions/1/sites/ÚguidÚroot_folder_idz/Sites/Úroot_folder_pathz/containersÚfolderIdÚdocumentLibraryz9/alfresco/api/-default-/public/alfresco/versions/1/nodes/z/children?maxItems=20r    ÚisFolderz: nodes children HTTP Údocument_library_idz/documentLibraryc              3   ó&   •K  — | ]  }‰|v –— Œ
 y ­w)N© )Ú.0rs   r   s     €r+   ú	<genexpr>z,fetch_sites_from_alfresco.<locals>.<genexpr>â   s   øè ø€ Ò.LÀ¨w¸!¬|Ñ.Lùs   ƒz: documentLibrary no encontradoz: error=é   r-   )r   Úlast_sync_atrX   T)rX   Útotal_sitesÚcreatedÚupdatedÚerrorsrc   rb   rŠ   )"r   r   r   r'   r4   r   r>   r?   r   rf   Úasyncior   rg   rh   r9   r&   r2   rl   ÚappendÚanyrn   rm   r   r   r-   ÚitemsrT   ri   rŽ   rK   rL   rj   rk   Úlen))r-   r   r*   rf   r“   rp   ra   rq   Ú	sites_urlrr   rU   rx   r�   r‘   r’   ry   Ú	site_infoÚ	site_dataÚsite_detail_urlÚdetail_respr3   r‚   Ú	doclib_idÚcontainers_urlÚ	cont_respÚ
containersÚ	containerÚcinfoÚcontainer_idÚ	folder_idÚ
doclib_urlÚdl_respÚchildrenÚchildÚchild_entryrs   ÚexistingÚkeyÚvalÚsr   s)                                           @r+   Úfetch_sites_from_alfrescor®   ƒ   sJ  øè ø€ à
�‰Ô#Ó$×+Ñ+Ô,>×,AÑ,AÀ]Ñ,RÓS×YÑYÓ[€AÙÜ¨Ð4LÔMÐMØ�:Š:˜QŸ_š_Ü¨Ð4dÔeÐeØ�8Š8Ü¨Ð4OÔPÐPãÛð@<Ü  §¡Ó1ˆØ�‰˜qŸz™z¨3Ó/ˆà×$Ñ$¨R¸Ð$Ó>÷ t	ð t	À&ØŸ:™:˜,Ð&lÐmˆIØŸ™ I°D˜Ó9×9ˆDà×Ñ 3Ò&Ü#°Ð<bÔcÐcØ×Ñ 3Ò&Ü#°Ð>VÐW[×WgÑWgÐVhÐ<iÔjÐjà—9‘9“;ˆDØ—h‘h˜v rÓ*×.Ñ.¨y¸"Ó=ˆGàˆGØˆGØˆFà ó V!�Ø!ŸI™I g¨rÓ2�	Ø#Ÿ-™-¨¨bÓ1�ÙØð $Ø&Ø&Ÿ]™]¨7°GÓ<Ø#,§=¡=°ÀÓ#CØ"+§-¡-°¸hÓ"GØ#,§=¡=°¸2Ó#>Ø!*§¡¨v°rÓ!:ñ�	ð1@à)*¯©¨Ð4mÐnuÐmvÐ&w�OØ(.¯
©
°?È¨
Ó(N×"N�KØ"×.Ñ.°#Ò5Ø!,×!1Ñ!1Ó!3×!7Ñ!7¸ÀÓ!D˜Ø%Ÿz™z¨&°"Ó5˜ÙØ:>˜IÐ&6Ñ7Ø>EÀgÀYÐ<O˜IÐ&8Ñ9ð !#�IÚà,-¯J©J¨<Ð7pÐqxÐpyð  zEð  *F˜Ø*0¯*©*°^È$¨*Ó*O×$O˜	Ø$×0Ñ0°CÒ7Ø)2¯©Ó)9×)=Ñ)=¸fÀbÓ)I×)MÑ)MÈiÐY[Ó)\˜JØ-7ò * 	Ø(1¯©°g¸rÓ(B Ø/4¯y©y¸¸rÓ/B Ø,1¯I©I°jÀ"Ó,E 	Ø#/Ð3DÓ#DÙ'0Ø4=¨	Ù$)ð*ñ  )©TØ,-¯J©J¨<Ð7pÐquÐpvð  wLð  *M˜JØ,2¯J©J°zÈ¨JÓ,M×&M˜GØ&×2Ñ2°cÒ9Ø+2¯<©<«>×+=Ñ+=¸fÀbÓ+I×+MÑ+MÈiÐY[Ó+\ Ø-5ò !. EØ27·)±)¸GÀRÓ2H KØ'2§¡°vÓ'>ÐBSÓ'SÐXc×XgÑXgÐhrÕXsØ4?·O±OÀDÈ"Ó4M¨	Ù(-ñ	!.ð !'§¡°°	Ð9OÐPW×PcÑPcÐOdÐ.eÔ fá Ø;D˜	Ð"7Ñ8Ø(Ÿ}™}Ð-?Ô@Ø>EÀgÀYÐN^Ð<_˜IÐ&8Ò9Ù#¬3Ó.LÀVÔ.LÔ+LØŸ™¨¨	Ð1PÐ&QÔRð Ÿ8™8¤LÓ1×8Ñ8Ü ×(Ñ(¨GÑ3Ü ×.Ñ.°-Ñ?ó÷ ‘%“'ð ñ
 Ø$-§O¡OÓ$5ò 8™˜˜SÚÜ# H¨c°3Õ7ð8ô -2«G�HÔ)Ø˜q‘L’Gä$ñ Ø&3ðà#ðð  %Ü%*£Wó	�Að —F‘F˜1”IØ˜q‘L’GðmV!ðp �I‰IŒKä#›gˆAŒOØ"&ˆAÔØ�I‰IŒKð Ü" 7›|Ø"Ø"Ø ñ÷]t	÷ t	ò t	ùà9ùðB #Oùð %Pùð 'Núô" !ò @Ø—M‘M W I¨X´c¸!³f°XÐ">×?Ò?ûð@úðat	ø÷ t	÷ t	ñ t	ûôl ò ØÜò <Ü›'ˆŒØ%ˆÔØ
�	‰	ŒÜ¨´C¸³FÔ;Ð;ûð	<üs  ƒBYÂAW: Ã%VÃ&W: Ã)&W%ÄV!ÄDW%È'V-É V$ÉBV-ËV'ËBV-Í3V-Í:V*Í;A.V-Ï*V-Ï<BV-Ñ>A/W%Ó.BW%ÖW: ÖW#ÖW: ÖYÖW: Ö!W%Ö$V-Ö'V-Ö*V-Ö-	W Ö6W×W%×W × W%×#W: ×%W7×+W.×,W7×3W: ×6Y×7W: ×:YØ<YÙYÙY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 TBrŠ   )Ú	bytes_vals    r+   Ú_format_sizer±     s�   € Ù˜	 QšØØ�4ÒØ�˜BÐÐØ	�WÒ	Ø˜dÑ" 3Ð' sÐ+Ð+Ø	�ZÒ	Ø˜gÑ% cÐ*¨#Ð.Ð.Ø	�]Ò	"Ø˜jÑ(¨Ð-¨SÐ1Ð1à˜mÑ+¨CÐ0°Ð4Ð4ó    Úreturnc                 ó�   — ddl m} | j                   |d«      «      j                  «       }|D �ci c]  }|d   |d   “Œ c}S c c}w )zSRetorna {connection_id: total_size_bytes} sumando size_bytes de todos los archivos.r   )Útexta?  
        SELECT s.connection_id, COALESCE(SUM(afi.size_bytes), 0)
        FROM alfresco_sites s
        JOIN alfresco_folders af ON af.site_id = s.id AND af.deleted = false
        JOIN alfresco_files afi ON afi.folder_id = af.id AND afi.deleted = false AND afi.name != 'index.xml'
        GROUP BY s.connection_id
    r�   )Ú
sqlalchemyrµ   ÚexecuteÚfetchall)r   rµ   ÚrowsÚrs       r+   r$   r$   "  sM   € åØ�:‰:‘dð ó 	ó 
÷ ‰(‹*ð 	ð !%Ö%˜1ˆAˆa‰D�!�A‘$‰JÒ%Ð%ùÒ%s   °Ar*   Ú	repo_sizec                 óŒ  — i d| j                   “d| j                  “d| j                  “d| j                  “d| j                  “dt        | j                  «      “d| j                  “dt        | j                  «      “d	| j                  “d
t        | j                  «      “d| j                  “d| j                  “dt        | j                  «      “d| j                  “d| j                   “d| j"                  rt%        | j"                  «      nd“d|“t'        |«      t        | j(                  «      t        | j*                  «      dœ¥S )Nr'   r    r9   r:   r>   Úhas_passwordr@   Úhas_api_passwordrB   Úhas_client_secretrD   r   rj   rk   rE   Úsites_countr   r»   )Úrepo_size_humanÚ
created_atÚ
updated_at)r'   r    r9   r:   r>   Úboolr?   r@   rA   rB   rC   rD   r   r   rj   rk   rE   Úsitesr—   r±   rÂ   rÃ   )r*   r»   s     r+   r%   r%   /  sa  € ðØˆa�d‰dðà�—‘ðð 	�A—J‘Jðð 	�Q—[‘[ð	ð
 	�A—J‘Jðð 	œ˜QŸ_™_Ó-ðð 	˜Ÿ™ðð 	œD ×!4Ñ!4Ó5ðð 	�Q—[‘[ðð 	œT !×"6Ñ"6Ó7ðð 	�Q—[‘[ðð 	�!—(‘(ðð 	œ˜QŸ_™_Ó-ðð 	˜Q×0Ñ0ðð 	�—‘ðð  	 q§w¢w”s˜1Ÿ7™7”|°Að!ð" 	�Yð#ô$ (¨	Ó2Ü˜!Ÿ,™,Ó'Ü˜!Ÿ,™,Ó'ò)ð r²   )r   ).ÚsysÚpathÚinsertÚfastapir   r   r   r   r   Úsqlalchemy.ormr   Úapp.schemasr	   r
   Úapp.models.databaser   Úapp.models.alfresco_connectionr   Úapp.models.alfresco_siter   Úapp.services.auth_servicer   r   Úapp.services.timezoner   ri   r   Úrouterr&   rÄ   rm   r,   Úintr5   ÚpostrP   ÚputrV   rY   rZ   rt   r®   r±   Údictr$   r%   rŠ   r²   r+   ú<module>rÖ      s  ðÛ 
Ø ‡�‡��Ð1Ô 2ç BÕ BÝ "ç Hå &Ý =Ý 1ß LÝ .Ý %á	Ð/°}°oÔ	F€ð ‡�ˆBÐ+ð  :a€ó  bá˜eÐ1RÔSÙ˜Ð*JÔKÙ˜&“/ñIØðIàðIð 	òIó bðIð ‡�ÐÐ(;ð  JM€ó  NÙ.2°3ÐDaÔ.bÑryð  {Aó  sBñ 2¨ð 2Ðhoò 2ó Nð2ð ‡�ˆR˜SÐ*;ð  Jq€ó  rÙIPÐQWËñ Ð"9ð ¸wò ó rðð4 ‡�ÐÐ(>ð  Mm€ó  nÙ15°cÐGdÔ1eð  HLñ  \cð  djó  \kñ ¨3ð ð  nEð ð  RYò ó nðð. ‡�Ð!Ð+?ð  N\€ó  ]Ù15°cÐGfÔ1gÑw~ð  @Fó  xGñ ¨3ð Ðmtò ó ]ðð ‡�Ð$Ð.@ð  OR€ó  SÙ/3°CÐEbÔ/cÑszð  |Bó  tCñ .¨ð .Ðipò .ó Sð.ð2 ‡�Ð+Ð5Vð  e`€ó  aÙ9=¸cÐOlÔ9mñ  ~Eð  FLó  ~Mñ L<°3ð L<Ðszò L<ó aðL<ò^5ð
&˜4ó 
&ñÐ$ð °ð ¸Tô r²   