Ë
    ƒÁÛjbD  ã                   ój  — U d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlm	Z	 d dl
mZ  ej                  e«      Zi Zeeeeef   f   ed<   dZddd	œZd
ededefd„Zdedefd„Z	 	 	 d dee   d
ededee   dz  dedz  dee   dz  defd„Zdedefd„Zdededefd„Zd„ Z d„ Z!d„ Z"dededefd„Z#d„ Z$y)!é    N)Únow)Úetree)ÚsettingsÚ_type_exists_cacheé,  ÚCierreExpedienteÚReaperturaExpediente)ÚcloseÚreopenÚfolder_nameÚfolder_pathÚreturnc                 óV  — |s| xs dS |j                  d«      j                  d«      D �cg c]  }|sŒ|‘Œ	 }}t        |«      D ]  }t        j                  d|«      sŒ|c S  t        |«      D ]  }t        j                  d|«      sŒ|c S  t        |«      dk\  r|d   S | xs dS c c}w )aw  Extrae la tipologia documental del nombre de la Serie, Subserie o Expediente segun ruta.
    Busca el elemento con formato numerado que contenga punto (X-XXXX-XX.X o X-XXXX-XX-XX.X).
    La estructura siempre es [numeracion con punto] [espacio] [nombre].
    Si no la hay, usa el elemento con formato numerado sin punto.
    Si no, usa el nombre del elemento padre inmediato.Ú ú/z^[\d]+(?:-[\d]+)*\.[\d]+\sz^\d+-\d+é   éÿÿÿÿ)ÚstripÚsplitÚreversedÚreÚmatchÚlen)r   r   ÚpÚpartsÚparts        ú</var/www/html/metafoliadorv2/app/services/index_generator.pyÚextract_tipologiar      s¶   € ñ ØÒ ˜bÐ à#×)Ñ)¨#Ó.×4Ñ4°SÓ9Ö?�1ºQŠQÐ?€EÐ?ô ˜“ò ˆÜ�8‰8Ð1°4Õ8ØŠKðô
 ˜“ò ˆÜ�8‰8�K Õ&ØŠKðô
 ˆ5ƒz�Q‚Ø�R‰yÐàÒ˜"Ðùò# @s
   «B&³B&Úxml_strc                 óR   — | syt        j                  dd| «      j                  «       S )zcElimina Fecha_actualizacion_indice para comparar contenido real sin falsos positivos por timestamp.r   z<<Fecha_actualizacion_indice>.*?</Fecha_actualizacion_indice>)r   Úsubr   )r   s    r   Ú_normalize_xml_for_comparisonr"   4   s'   € áØÜ�6‰6ÐQÐSUÐW^Ó_×eÑeÓgÐgó    ÚfilesÚtipologia_keysÚexpediente_infoÚ	historialc                 ó¶  — t        j                  d«      }|j                  dd«       |�rt        j                  |d«      }t	        |j                  d«      xs d«      t        j                  |d«      _        t	        |j                  d«      xs d«      t        j                  |d	«      _        t	        |j                  d
«      xs d«      t        j                  |d«      _        t	        |j                  d«      xs d«      t        j                  |d«      _        |j                  d«      }t        j                  |d«      }	|rt	        |«      |	_        |j                  d«      }
t        j                  |d«      }|
rt	        |
«      |_        t	        |j                  d«      xs d«      t        j                  |d«      _        t	        |j                  d«      xs d«      t        j                  |d«      _        t	        |j                  d«      xs d«      t        j                  |d«      _        |�rt        j                  |d«      }|D ]ñ  }t	        |j                  d«      xs d«      }t        j                  |d«      }t        j                  ||«      }t	        |j                  d«      xs d«      t        j                  |d«      _        t	        |j                  d«      xs d«      t        j                  |d «      _        t	        |j                  d!«      xs d«      t        j                  |d"«      _        Œó d#}t        | d#«      D �]ç  \  }}t        j                  |d$«      }d}|r<|j                  d%i «      xs i }|D ]!  }||v sŒ||   }|€Œ|dk7  sŒt	        |«      } n |j                  d'd«      t        j                  |d(«      _        |j                  d)d«      t        j                  |d*«      _        |t        j                  |d+«      _        |j                  d,d«      xs d}|r|d&d- }|t        j                  |d.«      _        t        «       j                  d/«      t        j                  |d0«      _        |j                  d1d«      xs dt        j                  |d2«      _        |j                  d3d«      xs dt        j                  |d4«      _        |j                  d5d«      t        j                  |d6«      _        d7t        j                  |d8«      _        t	        |«      t        j                  |d9«      _        |j                  d:d#«      xs d#}t	        |«      t        j                  |d;«      _        t	        ||z   d#z
  «      t        j                  |d<«      _        ||z  }|j                  d=d«      t        j                  |d>«      _        |j                  d?d@«      xs d@}|dAkD  r
|dAz  dB›dC�}n|dDkD  r
|dDz  dB›dE�}n|› dF�}|t        j                  |dG«      _        �Œê dH}|t        j                  |dIdJ¬K«      z   }|S )Lu�  Genera el contenido del index.xml en formato colombiano (TipoDocumentoFoliado).
    Si se pasan tipologia_keys, busca en las propiedades de cada archivo la primera
    key que coincida y usa su valor como Tipologia_Documental. Si no, queda vacÃ­o.
    Si se pasa historial (no vacÃ­o), se agrega el item historial_expediente dentro de
    ExpedienteIndizado con el historial de cierres/reaperturas del expediente.ÚTipoDocumentoFoliadoz9{http://www.w3.org/2001/XMLSchema-instance}schemaLocationz)http://www.w3.org/2001/XMLSchema-instanceÚExpedienteIndizadoÚidentificadorr   ÚIdentificadorÚfecha_creacion_indiceÚFecha_creacion_indiceÚfecha_actualizacion_indiceÚFecha_actualizacion_indiceÚnombre_de_expedienteÚNombre_de_expedienteÚserie_del_expedienteÚSerie_del_expedienteÚsubserie_del_expedienteÚSubserie_del_expedienteÚestado_expedienteÚAbiertoÚEstado_expedienteÚcontrol_de_accesoÚPublicoÚControl_de_accesoÚnombre_entidad_contactoÚNombreEntidadContactoÚHistorialExpedienteÚtyper   ÚdateÚFechaÚuserÚUsuarioÚcommentÚ
Comentarior   ÚDocumentoIndizadoÚ
propertiesNÚidÚIdÚnameÚNombre_DocumentoÚTipologia_DocumentalÚalfresco_created_até
   ÚFecha_Creacion_Documentoz%Y-%m-%dÚFecha_Incorporacion_ExpedienteÚcreated_by_userÚAutorÚversionÚVersionÚhash_sha256ÚValor_HuellaÚSHA256ÚFuncion_ResumenÚOrden_Documento_ExpedienteÚfoliosÚPagina_InicioÚ
Pagina_FinÚmimetypeÚFormatoÚ
size_bytesr   i   z.1fz MBi   z KBz bytesÚTamanoz8<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
ÚunicodeT)ÚencodingÚpretty_print)r   ÚElementÚsetÚ
SubElementÚstrÚgetÚtextÚ_HISTORIAL_TIPO_ESÚ	enumerateÚtznowÚstrftimeÚtostring)r$   r   r   r%   r&   r'   ÚrootÚexpÚserieÚ	sub_serieÚsubserieÚsub_subserieÚ	hist_rootÚhÚtipoÚtagÚregÚcumulative_pageÚidxÚfÚdocÚfile_tipologiaÚpropsÚkeyÚvalÚcreatedr[   ÚsizeÚsize_strÚdeclarationr   s                                  r   Úbuild_index_xml_contentr‡   ;   s›  € ô �=‰=Ð/Ó0€DØ‡H�HØCØ3ôò
 Ü×Ñ˜tÐ%9Ó:ˆÜ69¸/×:MÑ:MÈoÓ:^Ò:dÐbdÓ6eŒ×Ñ˜˜oÓ.Ô3Ü>AÀ/×BUÑBUÐVmÓBnÒBtÐrtÓ>uŒ×Ñ˜Ð5Ó6Ô;ÜCFÀ×GZÑGZÐ[wÓGxÒG~Ð|~ÓCŒ×Ñ˜Ð:Ó;Ô@Ü=@À×ATÑATÐUkÓAlÒArÐprÓ=sŒ×Ñ˜Ð4Ó5Ô:à×#Ñ#Ð$:Ó;ˆÜ×$Ñ$ SÐ*@ÓAˆ	ÙÜ  ›ZˆIŒNà"×&Ñ&Ð'@ÓAˆÜ×'Ñ'¨Ð-FÓGˆÙÜ # H£ˆLÔä:=¸o×>QÑ>QÐReÓ>fÒ>sÐjsÓ:tŒ×Ñ˜Ð1Ó2Ô7Ü:=¸o×>QÑ>QÐReÓ>fÒ>sÐjsÓ:tŒ×Ñ˜Ð1Ó2Ô7Ü>AÀ/×BUÑBUÐVoÓBpÒBvÐtvÓ>wŒ×Ñ˜Ð5Ó6Ô;âÜ×(Ñ(¨Ð.CÓDˆIØò W�Ü˜1Ÿ5™5 ›=Ò.¨BÓ/�Ü(×,Ñ,¨TÐ3EÓF�Ü×&Ñ& y°#Ó6�Ü69¸!¿%¹%À»-Ò:MÈ2Ó6N”× Ñ   gÓ.Ô3Ü8;¸A¿E¹EÀ&»MÒ<OÈRÓ8P”× Ñ   iÓ0Ô5Ü;>¸q¿u¹uÀYÓ?OÒ?UÐSUÓ;V”× Ñ   lÓ3Õ8ðWð €OÜ˜E 1Ó%ó -8‰ˆˆQÜ×Ñ˜tÐ%8Ó9ˆàˆÙØ—E‘E˜,¨Ó+Ò1¨rˆEØ%ò �Ø˜%’<Ø ™*�CØ‘¨3°"«9Ü),¨S«˜Ùðð ,-¯5©5°°r«?Œ×Ñ˜˜dÓ#Ô(Ø9:¿¹¸vÀrÓ9JŒ×Ñ˜Ð0Ó1Ô6Ø=KŒ×Ñ˜Ð4Ó5Ô:à—%‘%Ð-¨rÓ2Ò8°bˆÙØ˜c˜r�lˆGØAHŒ×Ñ˜Ð8Ó9Ô>ÜGLÃw×GWÑGWÐXbÓGcŒ×Ñ˜Ð>Ó?ÔDà./¯e©eÐ4EÀrÓ.JÒ.PÈbŒ×Ñ˜˜gÓ&Ô+Ø01·±°iÀÓ0DÒ0JÈŒ×Ñ˜˜iÓ(Ô-à56·U±U¸=È"Ó5MŒ×Ñ˜˜nÓ-Ô2Ø8@Œ×Ñ˜Ð/Ó0Ô5äCFÀsÃ8Œ×Ñ˜Ð:Ó;Ô@à—‘�x Ó#Ò( qˆÜ69¸/Ó6JŒ×Ñ˜˜oÓ.Ô3Ü36°ÈÑ7OÐRSÑ7SÓ3TŒ×Ñ˜˜lÓ+Ô0Ø˜6Ñ!ˆà01·±°jÀ"Ó0EŒ×Ñ˜˜iÓ(Ô-à�u‰u�\ 1Ó%Ò*¨ˆØ�'Š>Ø ™.¨Ð-¨SÐ1‰HØ�DŠ[Ø ™+ cÐ*¨#Ð.‰Hà˜˜v�ˆHØ/7Œ×Ñ˜˜hÓ'Ö,ð[-8ð^ N€KØœEŸN™N¨4¸)ÐRVÔWÑW€GØ€Nr#   Úcontentc                 óH   — t        j                  | «      j                  «       S )z)Calcula SHA256 del contenido del archivo.)ÚhashlibÚsha256Ú	hexdigest)rˆ   s    r   Úcompute_sha256_from_contentr�   £   s   € ä�>‰>˜'Ó"×,Ñ,Ó.Ð.r#   r^   c                 óf  — 	 |syd|j                  «       vry	 ddlm} ddlm}  | || «      «      }t        |j                  «      }t        |d«      S # t        $ r"}t        j                  d|› �«       Y d}~yd}~ww xY w# t        $ r%}t        j                  d|› d	|› �«       Y d}~yd}~ww xY w)
uG   Cuenta el nÃºmero de pÃ¡ginas solo para PDFs. Todo lo demÃ¡s retorna 1.r   Úpdfr   )Ú	PdfReader)ÚBytesIOzCount pages PDF: Nz Count pages: error con mimetype=ú: )ÚlowerÚPyPDF2r�   Úior‘   r   ÚpagesÚmaxÚ	ExceptionÚloggerÚwarning)rˆ   r^   r�   r‘   Úreaderr–   Úes          r   Úcount_pagesr�   ¨   s¨   € ðÙØØ˜Ÿ™Ó(Ñ(Øð	Ý(Ý"Ù™w wÓ/Ó0ˆFÜ˜Ÿ™Ó%ˆEÜ�u˜a“=Ð øÜò 	Ü�N‰NÐ.¨q¨cÐ2Ô3Üûð	ûô ò Ü�‰Ð9¸(¸À2ÀaÀSÐIÔJÜûðús?   ‚B …B ™:A Á	A?ÁA:Á5B Á:A?Á?B Â	B0ÂB+Â+B0c                 óÆ  — ddl m} 	 |› d|› d�}t        j                  ||dd¬«      }|j                  dk(  rS|j
                  }t        |«      }	t        ||j                  xs d	«      }
|r|	|_	        |
|_
        | j                  «        |	S t        j                  d
|j                  › d|› �«       	 y	# t        $ r%}t        j                  d|› d|› �«       Y d}~y	d}~ww xY w)zYDescarga el contenido del archivo desde Alfresco, calcula SHA256 y paginas, actualiza DB.r   )ÚAlfrescoFileú9/alfresco/api/-default-/public/alfresco/versions/1/nodes/ú/contentéx   F©ÚauthÚtimeoutÚverifyéÈ   r   zHash: HTTP z al descargar contenido de zHash: error al descargar r’   N)Úapp.models.alfresco_filerŸ   Úhttpxri   Ústatus_coderˆ   r�   r�   r^   rV   r[   Úcommitr™   rš   r˜   Úerror)ÚdbÚfile_recordÚconn_base_urlr¤   Úfile_node_idrŸ   ÚurlÚresprˆ   Ú	file_hashr–   rœ   s               r   Úcompute_and_update_hashr´   ½   së   € å5ðFØ�ÐXÐYeÐXfÐfnÐoˆÜ�y‰y˜ 4°¸UÔCˆØ×Ñ˜sÒ"Ø—l‘lˆGÜ3°GÓ<ˆIÜ ¨×)=Ñ)=Ò)CÀÓDˆEÙØ*3�Ô'Ø%*�Ô"Ø—	‘	”ØÐä�N‰N˜[¨×)9Ñ)9Ð(:Ð:UÐVbÐUcÐdÕeð øô ò FÜ�‰Ð0°°¸bÀÀÐD×EÐEØûðFús   ˆBB2 Â%B2 Â2	C Â;CÃC c                 óˆ  — 	 | › d|› �}t        j                  ||dd¬«      }|j                  dk(  ra|j                  «       j                  di «      }|j                  dg «      }d|vr*| › d|› �}d|dgz   i}t        j                  |||dd¬	«       yyy# t
        $ r%}	t        j                  d
|› d|	› �«       Y d}	~	yd}	~	ww xY w)zXAsegura que el nodo tenga el aspect cm:versionable para mantener historial de versiones.r    é   Fr£   r§   ÚentryÚaspectNamesúcm:versionable)r¤   Újsonr¥   r¦   zEnsure versionable: error en r’   N)r©   ri   rª   rº   Úputr˜   r™   rš   )
r¯   r¤   Únode_idÚaspects_urlr²   r·   Úaspect_namesÚaspect_add_urlÚaspect_datarœ   s
             r   Ú_ensure_versionablerÁ   Ô   sá   € ðGØ&˜Ð'`ÐahÐ`iÐjˆÜ�y‰y˜¨4¸ÀEÔJˆØ×Ñ˜sÒ"Ø—I‘I“K—O‘O G¨RÓ0ˆEØ Ÿ9™9 ]°BÓ7ˆLØ |Ñ3Ø$1 ?Ð2kÐlsÐktÐ!u�Ø,¨lÐ>NÐ=OÑ.OÐP�Ü—	‘	˜.¨t¸+ÈrÐZ_Ö`ð 4ð #øô ò GÜ�‰Ð6°w°i¸rÀ!ÀÐE×FÑFûðGús   ‚BB Â	CÂB<Â<Cc                 ó  — | › d|› d�}	 t        j                  ||dd¬«      }|j                  dk(  rX|j                  «       j                  di «      }|j                  d«      r'|j                  d	«      d
k(  r|j                  d«      dfS | › d|› d�}d}	 |› d|› �}	t        j                  |	|dd¬«      }|j                  dk(  rdd|› d�fS |j                  dv rdd|› d|j                  › d�fS |j                  dk7  rdd|› d|j                  › �fS |j                  «       j                  di «      }
|
j                  dg «      }t        |«      }|
j                  di «      }|j                  dd«      }|D ]O  }|j                  di «      }|j                  d	«      d
k(  sŒ*|j                  d«      sŒ<|j                  d«      dfc S  |s|dk  ry ||z  }�ŒA# t        $ r&}t
        j                  d|› d|› �«       Y d}~�Œvd}~ww xY w)!zÓBusca el node id del index.xml existente en la carpeta.
    Primero resuelve por relativePath (algunas instalaciones de Alfresco omiten
    index.xml del listado de hijos) y luego pagina los hijos como fallback.r    z?relativePath=index.xmlé   Fr£   r§   r·   ÚisFilerK   ú	index.xmlrI   Nz-Error buscando index.xml por relativePath en r’   ú	/childrenr   z?maxItems=500&skipCount=i”  zfolder z not found in Alfresco (404))i‘  i“  zAuth error listing folder z (HTTP ú)zList folder z failed HTTP ÚlistÚentriesÚ
paginationÚhasMoreItemsiô  )NN)r©   ri   rª   rº   r˜   r™   rš   r   )r¯   r¤   Ú	folder_idÚnode_urlr²   r·   rœ   Úbase_urlÚ
skip_countÚlist_urlÚdatarÉ   ÚcountrÊ   Úhas_mores                  r   Ú_find_index_xml_noderÔ   ä   s;  € ð  �Ð YÐZcÐYdÐd{Ð|€HðYÜ�y‰y˜¨°bÀÔGˆØ×Ñ˜sÒ"Ø—I‘I“K—O‘O G¨RÓ0ˆEØ�y‰y˜Ô" u§y¡y°Ó'8¸KÒ'GØ—y‘y “¨Ð,Ð,ð  �Ð YÐZcÐYdÐdmÐn€HØ€JØ
Ø�ZÐ7¸
°|ÐDˆÜ�y‰y˜¨°bÀÔGˆØ×Ñ˜sÒ"Ø˜7 9 +Ð-IÐJÐJÐJØ×Ñ˜zÑ)ØÐ5°i°[ÀÈ×HXÑHXÐGYÐYZÐ[Ð[Ð[Ø×Ñ˜sÒ"Ø˜<¨	 {°-À×@PÑ@PÐ?QÐRÐRÐRØ�y‰y‹{�‰˜v rÓ*ˆØ—(‘(˜9 bÓ)ˆÜ�G“ˆØ—X‘X˜l¨BÓ/ˆ
Ø—>‘> .°%Ó8ˆØò 	-ˆAØ—E‘E˜' 2Ó&ˆEØ�y‰y˜Ó  KÓ/°E·I±I¸hÕ4GØ—y‘y “¨Ð,Ò,ð	-ñ ˜E CšKØØ�eÑˆ
ñ) øô ò YÜ�‰ÐFÀyÀkÐQSÐTUÐSVÐW×XÒXûðYús   ŠA?G Ç	HÇH È Hr¯   Ú	type_namec                 óÆ  — | j                  d«      }t        j                  |«      }|r&t        j                  «       |d   z
  t        k  r|d   S d}	 |j                  dd«      }| › d|› �}t        j                  ||dd¬	«      }|j                  d
k(  rm	 |j                  «       }	t        |	t        «      rt        |	«      dkD  }n=t        |	t        «      r-t        |	j                  d«      xs |	j                  d«      «      }t        j                  «       |ft        |<   |S # t        $ r d}	Y Œˆw xY w# t        $ r'}
t        j!                  d|› d|
› �«       d}Y d}
~
Œ[d}
~
ww xY w)uÖ   Verifica en el diccionario de Alfresco si existe el tipo/modelo `type_name`.
    Si el modelo no existe (o el endpoint no estÃ¡ disponible) retorna False para
    omitir la verificaciÃ³n y usar el tipo por defecto.r   r   r   Fú:Ú_z/alfresco/service/api/classes/r¶   r£   r§   NrK   Ú	classNamezVerificar tipo z!: error consultando diccionario: )Úrstripr   ri   ÚtimeÚ_TYPE_EXISTS_TTL_SECONDSÚreplacer©   rª   rº   r˜   Ú
isinstancerÈ   r   ÚdictÚboolr™   rš   )r¯   r¤   rÕ   r�   ÚcachedÚexistsÚ
short_namer±   r²   rÑ   rœ   s              r   Ú_alfresco_type_existsrä     sP  € ð ×
Ñ
˜sÓ
#€CÜ×#Ñ# CÓ(€FÙ”$—)‘)“+  q¡	Ñ)Ô,DÒDØ�a‰yÐà€FðØ×&Ñ& s¨CÓ0ˆ
Ø�Ð=¸j¸\ÐJˆÜ�y‰y˜ 4°¸EÔBˆØ×Ñ˜sÒ"ðØ—y‘y“{�ô ˜$¤Ô%Ü˜T› Q™‘Ü˜D¤$Ô'Ü˜dŸh™h vÓ.ÒG°$·(±(¸;Ó2GÓH�ô
  $Ÿy™y›{¨FÐ3Ô�sÑØ€Møô ò Ø’ðûô ò Ü�‰˜¨¨Ð3TÐUVÐTWÐXÔYØ�ûðús>   ÁAD0 ÂD Â$AD0 ÄD-Ä*D0 Ä,D-Ä-D0 Ä0	E Ä9EÅE c                 ód  — 	 t        | ||«      \  }}|rdd|fS |rû	 | › d|› d�}t        j                  ||dd¬«      }|j                  dk(  r;t	        |j
                  «      t	        |«      k(  rt        j                  d«       d	|dfS t        | ||«       | › d|› dt        «       j                  d«      › �}	t        j                  |	||j                  d«      ddidd¬«      }
|
j                  dv rd	|dfS d|d|
j                  › d|
j
                  dd › �fS | › d|› d�}t        j                   }t#        | |t        j$                  «      r)t        j$                  }t        j                  d|› d�«       dd|j                  d«      dfi}d|dddœ}t        j&                  ||||dd¬«      }
|
j                  dv r:|
j)                  «       j                  di «      }|j                  d d!«      }|rd	|dfS y"|
j                  d#k(  r¶t        j                  d$|› d%�«       t        | ||«      \  }}|r	ddd&|› d'�fS |rt        | ||«       | › d|› dt        «       j                  d«      › �}	t        j                  |	||j                  d«      ddidd¬«      }|j                  dv rd	|dfS d|d(|j                  › �fS y)ddd*|
j                  › d|
j
                  dd › �fS # t        $ r#}t        j                  d
|› �«       Y d}~�Œyd}~ww xY w# t        $ r}ddd+t+        |«      dd, › �fcY d}~S d}~ww xY w)-zqSube o actualiza el index.xml en la Serie, Subserie o Expediente de Alfresco, manteniendo historial de versiones.FNr    r¡   rÃ   )r¤   r¦   r¥   r§   zKEl contenido de index.xml es identico al existente, se omite actualizacion.Tz&Error comparando index.xml existente: zK/content?majorVersion=false&comment=Actualizacion+automatica+Metafoliador+vz%Y%m%d%H%M%Szutf-8zContent-Typezapplication/xml)r¤   rˆ   Úheadersr¥   r¦   )r§   éÉ   éÊ   éÌ   zUpdate failed HTTP r’   rÆ   zUsando modelo de datos z para index.xmlÚfiledatarÅ   ztext/xmlr¹   Úfalse)rK   ÚnodeTyper¸   Ú
autoRename)r¤   r$   rÑ   r¥   r¦   )r§   rç   r·   rI   r   )FNzNo node id in create responsei™  z#index.xml already exists in folder z, trying to find and update...z,index.xml already exists, unable to update (rÇ   z"Update after conflict failed HTTP )FNz*index.xml already exists, unable to updatezCreate node failed HTTP zException: r   )rÔ   r©   ri   rª   r"   rj   r™   Úinfor˜   rš   rÁ   rm   rn   r»   Úencoder   Úindex_xml_node_typerä   Úindex_expedient_typeÚpostrº   rh   )r¯   r¤   rÌ   Úxml_contentÚexisting_idÚerrÚcontent_urlÚcontent_resprœ   Ú
update_urlr²   Ú
create_urlÚ	node_typer$   Ú	form_dataÚnew_nodeÚnew_idÚresp3s                     r   Úupload_index_xml_to_alfrescorÿ   *  s*  € ðI9Ü/°¸tÀYÓOÑˆ�SÙØ˜$ Ð#Ð#ÙðMØ!. Ð/hÐitÐhuÐu}Ð~�Ü$Ÿy™y¨¸4ÈÐWYÔZ�Ø×+Ñ+¨sÒ2Ü4°\×5FÑ5FÓGÔKhÐitÓKuÒuÜŸ™Ð$qÔrØ# [°$Ð6Ð6ô   ¨t°[ÔAØ)˜?Ð*cÐdoÐcpð  q|ô  }Bó  }D÷  }Mñ  }Mð  N\ó  }]ð  |^ð  _ˆJÜ—9‘9ØØØ#×*Ñ*¨7Ó3Ø'Ð):Ð;ØØôˆDð ×ÑÐ#7Ñ7Ø˜[¨$Ð.Ð.Ø˜+Ð)<¸T×=MÑ=MÐ<NÈbÐQU×QZÑQZÐ[_Ð\_ÐQ`ÐPaÐ'bÐbÐbà)˜?Ð*cÐdmÐcnÐnwÐxˆJÜ ×4Ñ4ˆIÜ$ ]°D¼(×:WÑ:WÔXÜ$×9Ñ9�	Ü—‘Ð5°i°[ÀÐPÔQà˜[¨+×*<Ñ*<¸WÓ*EÀzÐRðˆEð $Ø%Ø/Ø%ñ	ˆIô —:‘:ØØØØØØôˆDð ×Ñ :Ñ-ØŸ9™9›;Ÿ?™?¨7°BÓ7�Ø!Ÿ™ d¨BÓ/�ÙØ ¨Ð-Ð-ØCØ×Ñ 3Ò&Ü—‘Ð!DÀYÀKÐOmÐnÔoÜ#7¸ÀtÈYÓ#WÑ �˜SÙØ  $Ð*VÐWZÐV[Ð[\Ð(]Ð]Ð]ÙÜ'¨°t¸[ÔIØ$1 ?Ð2kÐlwÐkxð  yDô  EJó  EL÷  EUñ  EUð  Vdó  Eeð  Dfð  "g�JÜ!ŸI™I j°tÀ[×EWÑEWÐX_ÓE`Ðkyð  |Mð  kNð  XZð  chô  i�EØ×(Ñ(Ð,@Ñ@Ø# [°$Ð6Ð6Ø  +Ð1SÐTY×TeÑTeÐSfÐ/gÐgÐgØPØ˜$Ð":¸4×;KÑ;KÐ:LÈBÈtÏyÉyÐY]ÐZ]ÈÐN_Ð `Ð`Ð`øôu ò MÜ—‘Ð!GÈÀsÐK×LÒLûðMûôv ò 9Ø�d˜k¬#¨a«&°°#¨,¨Ð8Ð8Õ8ûð9úst   ‚L ™L œA*K ÂA,L Ã4!L ÄCL Ç2AL È5A.L Ê$L Ê7!L Ë	LË"L Ë:L Ì LÌL Ì	L/ÌL*Ì$L/Ì*L/)NNN)%r   rÛ   rŠ   Úloggingr©   Úapp.services.timezoner   rm   Úlxmlr   Ú
app.configr   Ú	getLoggerÚ__name__r™   r   rß   rh   ÚtupleÚfloatrà   Ú__annotations__rÜ   rk   r   r"   rÈ   r‡   Úbytesr�   Úintr�   r´   rÁ   rÔ   rä   rÿ   © r#   r   ú<module>r     sf  ðÜ 	Û Û Û Û Ý .Ý å à	ˆ×	Ñ	˜8Ó	$€ð
 57Ð �D˜˜e E¨4 KÑ0Ð0Ñ1Ó 6ØÐ ð  2Ð=SÑTÐ ð 3ð °Sð ¸Só ð:h¨3ð h°3ó hð (,Ø#'Ø#'ñeØ�‰:ðeàðeð ðeð ˜‘I Ñ$ð	eð
 ˜D‘[ðeð �D‰z˜DÑ ðeð 	óeðP/¨ð /°3ó /ð
˜ð ¨#ð °#ó ò*ò.Gò $ðN¨ð ¸sð Àtó ó>K9r#   