
    lci                     X    d 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 d Z	d Z
d	 ZdS )
u&  
Gestión del repositorio local y actualización de HTML del portal.

- buscar_archivo_a_reemplazar: decide si hay que actualizar según versiones.
- modificar_htmls: actualiza href y textos de versión en los HTML.
- _gestionar_archivo_antiguo: elimina el instalador anterior tras actualizar.
    N)BeautifulSoup   )config)utilsc           	         	 t           j                            t          j                  sdS |                                }t          j        |           d}t          j        t          j                  D ]}|                                	                    |dz             rt          j
        ||                                          }|r|                    d          }t          j        | d| d|            | r|rt          j        | |          dk    r!t          j        | d| d	|  d
           |c S t          j        | |          dk     rt          j        | d|  d| d
           nt          j        | d| d
            dS dS # t$          $ r"}t          j        d|            Y d}~dS d}~ww xY w)u  
    Comprueba si en el repositorio ya existe una versión de la aplicación y si
    la nueva versión es mayor.

    Formato esperado de archivos: nombre_version.extension (ej. digikam_8.5.0.exe).

    Returns:
        Nombre del archivo antiguo a borrar si hay actualización;
        'primera descarga' si no hay archivo previo;
        None si ya tenemos la versión más reciente o superior.
    primera descargaz_(\d[\d.]*\d|\d+)_r   z: Archivo existente u    -> versión r   u   : Nueva versión disponible ( -> )z: upstream (z) < local (u(   : Ya tenemos la versión más reciente (Nz&Error en buscar_archivo_a_reemplazar: )ospathexistsr   REPO_DIRlowerreescapelistdir
startswithsearchgrouploggingdebugr   comparar_versionesinfowarning	Exceptionregistrar_error)version_descargadanombrenombre_lowerpattern_archivofilenamematchversion_existentees           9/srv/repositorios/osluz/webnueva/scripts/descarga/repo.pybuscar_archivo_a_reemplazarr'      s   "w~~fo.. 	&%%||~~ i55HHH
6?33 	$ 	$H~~**<#+=>> $	/8>>3C3CDD $(-A%MV"k"k"k"kXi"k"klll) $.? $ 34FHYZZ]^^^#L#) t tHY t t_q t t t   $,OOO 34FHYZZ]^^^#O#) j j7I j jVg j j j    $LF)p)p\m)p)p)pqqq#tt!! " " "JqJJKKK!!!!!!"s*   )F DF ;AF F 
F?F::F?c           	         g d}t          |           D ];\  }}|dk    rt          j        |z   nt          j        |z   }t          j                            |          st          j        d|            a|D ]}	 t          |d|          5 }	|	
                                }
ddd           n# 1 swxY w Y   t          |
d          }|                                }|                    d|	          }|rd
| |d<   |                    d| d	          }|rG|                    d          }|r0|                    d          }|r|                    d|            |                    d| d	          }|r||_        |s#|                    d| d	          }|r||_        t          |dd          5 }	|	                    t%          |                     ddd           n# 1 swxY w Y    nX# t&          $ r t          j        d| d|            Y t(          $ r%}t+          j        d| d|            Y d}~d}~ww xY w=dS )u   
    Actualiza los archivos HTML del portal: href del enlace de descarga y
    textos de versión (span o li con id "{app}_version").
    )UTF-8ziso-8859-15latin1zwindows-1252r   z'Archivo HTML no encontrado, omitiendo: r)encodingNzhtml.parsera)idz2https://softlibre.unizar.es/estandares/aplicacion/hrefli_versionstrongT)string span_version_btnwr)   zNo se pudo abrir u    con codificación zError modificando HTML z: )	enumerater   WEB_DIR_SINGLEWEB_DIR_MULTIr   r   r   r   r   openreadr   r   findfind_next_siblingreplace_withr3   writestrUnicodeDecodeErrorr   r   r   )
html_filesenlaceversion
aplicacioncodificacionesindex	html_filerutacodificacionfhtml_contentsoupapp_idlinkr0   
strong_tagtexto_despuesspan_btnr5   r%   s                       r&   modificar_htmlsrT   >   sf   
 HGGN%j11 (M (My zz !I--%	1 	
 w~~d## 	OLdLLMMM* 	M 	MLM$l;;; ,q#$6688L, , , , , , , , , , , , , , ,$\=AA#))++yyy00 a#`X^#`#`DLYYt6(;(;(;Y<< F!#!2!2J! F(2(D(DD(D(Q(Q( F)66}7}}EEE99V60G0G0G9HH .&-HO .99V60C0C0C9DDD .&-$g666 '!GGCII&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' '% ] ] ] [D [ [\ [ [\\\\\ M M M%&K&K&K&K&KLLLLLLLLMO(M (Msg   ;G7B."G7.B22G75B26DG7;#G*G7*G..G71G.2G77$I	I'IIc                 j   | dk    rt           j         |  }t          j                            |          rd	 t          j        |           t          j        | d|  d|            dS # t          $ r$}t          j
        | d|            Y d}~dS d}~ww xY wdS t          j        | d           dS )uK   Elimina el archivo de la versión anterior tras una actualización exitosa.r   z: Archivo reemplazado: r
   z%: No se pudo borrar archivo antiguo: Nz: Primera descarga completada)r   r   r   r   r   remover   r   OSErrorr   r   )archivo_a_reemplazarnombre_completor   archivo_antiguor%   s        r&   gestionar_archivo_antiguor[   o   s    111#_D.BDD7>>/** 	[[	/***jj?SjjYhjjkkkkk [ [ [%&Y&YVW&Y&YZZZZZZZZZ[		[ 	[ 	===>>>>>s   0A) )
B3BB)__doc__r   r   r   bs4r    r   r   r'   rT   r[        r&   <module>ra      s      				 				                  '" '" '"T.M .M .Mb? ? ? ? ?r`   