
    6jk                        S r SSKJr  SSKrSSKrSSKJrJr  SSKJr  SSK	J
r
  SS jrSS jrSS	 jrSS
 jrSS jrSS jrSS jrSS jrg)zNAlmacenamiento de informes del Workspace Agent: {FILES_DIR}/agents/{agent_id}/    )annotationsN)datetimetimezone)Path)settingsc                    [         R                  " SSU =(       d    SR                  5       5      nU(       d  [        S5      eU$ )Nz[^a-zA-Z0-9._-]_ u6   Identificador de agente o nombre de archivo inválido.)resubstrip
ValueError)valuecleaneds     ^C:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\services\agent_workspace_storage.py_safe_segmentr      s6    ff'u{.A.A.CDGQRRN    c                 P    [        [        R                  5      R                  5       $ )N)r   r   	files_dirresolve r   r   r   r      s    ""#++--r   c                 @    [        5       S-  n U R                  SSS9  U $ )NagentsTparentsexist_ok)r   mkdir)roots    r   agents_rootr      s#    ;!DJJtdJ+Kr   c                 0    [         R                  " SS5      $ )NWORKSPACE_AGENT_ID&agtch_6a35d3014cbc8191911eed3847b3e8fe)osgetenvr   r   r   default_agent_idr%      s    990 r   c                l    U =(       d    SR                  5       =(       d
    [        5       n[        U5      $ )Nr
   )r   r%   r   )agent_idr   s     r   resolve_agent_idr(   %   s(    ^""$:(8(:Er   c                    [        5       [        U 5      -  R                  5       n[        U5      R	                  [        [        5       5      5      (       d  [        S5      eUR                  SSS9  U$ )NzRuta de agente no permitida.Tr   )r   r(   r   str
startswithr   r   )r'   folders     r   agent_folderr-   *   sZ    m.x88AACFv;!!#km"455788
LLL-Mr   c                    [        U 5      nU[        U5      -  R                  5       n[        U5      R	                  [        U5      5      (       d  [        S5      eU$ )NzRuta de archivo no permitida.)r-   r   r   r*   r+   r   )r'   filenamer,   paths       r   target_filer1   2   sN    (#F]8,,557Dt9F,,899Kr   c           
        SUU[        U 5      [        U R                  [        5       5      5      R                  SS5      U R	                  5       R
                  [        R                  " [        R                  5      R                  5       S.$ )NT\/)okr'   r/   r0   relative_path
size_bytessaved_at)r*   relative_tor   replacestatst_sizer   nowr   utc	isoformat)r0   r'   r/   s      r   file_resultr@   :   sf    D	T--ik:;CCD#Niik))LL.88: r   )r   r*   returnr*   )rA   r   )rA   r*   )r'   z
str | NonerA   r*   )r'   r*   rA   r   )r'   r*   r/   r*   rA   r   )r0   r   r'   r*   r/   r*   rA   dict)__doc__
__future__r   r#   r   r   r   pathlibr   app.backend.core.configr   r   r   r   r%   r(   r-   r1   r@   r   r   r   <module>rG      sB    T " 	 	 '  ,. 
	r   