Ë
    Žesj¡  ã                   óî  — 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 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j1                  ddd¬«       edd¬«       edd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j9                  d$d%d&¬«       ee«      fde
fd'„«       Zy)(é    Nz/var/www/html/metafoliadorv2)Ú	APIRouterÚDependsÚHTTPExceptionÚQueryÚPath)ÚSession)Údesc)Úget_db)ÚSyncProgress)ÚAlfrescoSite)ÚAlfrescoFolder)Úisoz/api/v1/jobsÚjobs)ÚprefixÚtagsÚ zListar trabajos en colauX   Lista los trabajos de sincronizaciÃ³n registrados en SyncProgress. Filtrable por estado.)ÚsummaryÚdescriptionzAFiltrar por estado: pending, running, completed, error, cancelled)r   é2   u   MÃ¡ximo de trabajos a retornaré   éÈ   )r   ÚgeÚleÚstatusÚlimitÚdbc              ƒ   ó  K  — |j                  t        «      j                  t        j                  dkD  «      }| r"|j                  t        j                  | k(  «      }|j                  t        t        j                  «      «      j                  |«      j                  «       }g }|D �]^  }d}d}|j                  r[|j                  t        «      j                  t        j                  |j                  k(  «      j                  «       }	|	r|	j                  }|j                  r[|j                  t        «      j                  t        j                  |j                  k(  «      j                  «       }
|
r|
j                  }|j!                  |j                  |j                  ||j                  ||j"                  |j                  |j$                  |j&                  t)        |j                  «      t)        |j*                  «      dœ«       �Œa |S ­w)Nr   r   )ÚidÚsite_idÚ	site_nameÚ	folder_idÚfolder_nameÚtask_idr   ÚprogressÚmessageÚ
created_atÚ
updated_at)Úqueryr   Úfilterr   r   Úorder_byr	   r&   r   Úallr   r   ÚfirstÚnamer!   r   Úappendr#   r$   r%   r   r'   )r   r   r   Úqr   ÚresultÚjr    r"   ÚsiteÚfolders              ú3/var/www/html/metafoliadorv2/app/api/routes/jobs.pyÚ	list_jobsr5      s~  è ø€ à
�‰”Ó×%Ñ%¤l×&:Ñ&:¸QÑ&>Ó?€AÙØ�H‰H”\×(Ñ(¨FÑ2Ó3ˆØ�:‰:”dœ<×2Ñ2Ó3Ó4×:Ñ:¸5ÓA×EÑEÓG€Dà€FØó ˆØˆ	ØˆØ�9Š9Ø—8‘8œLÓ)×0Ñ0´·±ÀAÇIÁIÑ1MÓN×TÑTÓVˆDÙØ ŸI™I�	Ø�;Š;Ø—X‘XœnÓ-×4Ñ4´^×5FÑ5FÈ!Ï+É+Ñ5UÓV×\Ñ\Ó^ˆFÙØ$Ÿk™k�à�‰Ø—$‘$Ø—y‘yØ"ØŸ™Ø&Ø—y‘yØ—h‘hØŸ
™
Ø—y‘yÜ˜aŸl™lÓ+Ü˜aŸl™lÓ+ñ
ö 	ðð2 €Mùs   ‚HH	z/{job_id}/cancelzCancelar trabajouL   Revoca una tarea Celery pendiente o en ejecuciÃ³n y la marca como cancelada..zID del trabajo a cancelarÚjob_idc              ƒ   ó¢  K  — |j                  t        «      j                  t        j                  | k(  «      j	                  «       }|st        dd¬«      ‚|j                  dvrt        dd¬«      ‚ddlm} dd	l	m
} |j                  r$ ||j                  |¬
«      j                  d¬«       d|_        d|_        |j                  «        dddœS ­w)Ni”  zTrabajo no encontrado)Ústatus_codeÚdetail)ÚpendingÚrunningi�  z:Solo se pueden cancelar trabajos pendientes o en ejecucionr   )ÚAsyncResult©Ú
celery_app)ÚappT)Ú	terminateÚ	cancelledzCancelado por el usuariozTrabajo cancelado©Úokr%   )r(   r   r)   r   r,   r   r   Úcelery.resultr<   Ú
app.workerr>   r#   Úrevoker%   Úcommit)r6   r   Újobr<   r>   s        r4   Ú
cancel_jobrI   5   s©   è ø€ à
�(‰(”<Ó
 ×
'Ñ
'¬¯©¸6Ñ(AÓ
B×
HÑ
HÓ
J€CÙÜ¨Ð4KÔLÐLØ
‡z�zÐ/Ñ/Ü¨Ð4pÔqÐqå)Ý%Ø
‡{‚{Ù�C—K‘K ZÔ0×7Ñ7À$Ð7ÔGà€C„JØ,€C„KØ‡I�I„KàÐ#6Ñ7Ð7ùs   ‚CCz/purgezLimpiar colaua   Purga la cola de Celery y elimina todos los registros de SyncProgress pendientes o en ejecuciÃ³n.c              ƒ   ó&  K  — ddl m} 	 |j                  j                  «        | j	                  t
        «      j                  t
        j                  j                  ddg«      «      j                  «        | j                  «        dddœS #  Y ŒjxY w­w)Nr   r=   r:   r;   TzCola limpiarB   )rE   r>   ÚcontrolÚpurger(   r   r)   r   Úin_ÚdeleterG   )r   r>   s     r4   Ú
purge_jobsrO   I   sv   è ø€ å%ðØ×Ñ× Ñ Ô"ð
 ‡H�HŒ\Ó×!Ñ!Ü×Ñ×Ñ ¨IÐ 6Ó7óç�f„hØ‡I�I„Kà =Ñ1Ð1øðÙüs   ‚BŠB
 ¤A&BÂ
BÂB)ÚsysÚpathÚinsertÚfastapir   r   r   r   r   Úsqlalchemy.ormr   Ú
sqlalchemyr	   Úapp.models.databaser
   Úapp.models.sync_progressr   Úapp.models.alfresco_siter   Úapp.models.alfresco_folderr   Úapp.services.timezoner   ÚrouterÚgetÚstrÚintr5   ÚpostrI   rO   © ó    r4   ú<module>rb      se  ðÛ 
Ø ‡�‡��Ð1Ô 2ç BÕ BÝ "Ý å &Ý 1Ý 1Ý 5Ý %á	˜.°¨xÔ	8€ð ‡�ˆBÐ1ð  @Z€ó  [Ù"'¨Ð:}Ô"~ñ  NSð  TVð  dDð  IJð  ORô  NSñ  cjð  kqó  crñ  ˜Cð  ð  HKð  ð  Y`ò  ó [ð ðF ‡�ÐÐ);ð  JX€ó  YÙ#'¨Ð9TÔ#UÑelÐmsÓetñ 8˜Sð 8Ð[bò 8ó Yð8ð& ‡�ˆX˜~ð  <_€ó  `Ù#*¨6£?ñ 2˜ò 2ó `ñ2ra   