
    i*js                        S r SSKJr  SSKrSSKJr  SSKJr  SSKJ	r	  \" SS9 " S	 S
5      5       r
SS jrSS jrSS jrg)z*Carga de relojes Anviz desde relojes.json.    )annotationsN)	dataclass)Path)settingsT)frozenc                  d    \ rS rSr% S\S'   S\S'   S\S'   S\S'   S\S'   S	rS
\S'   SrS\S'   Srg	)RelojConfig   stridnamehostintport	device_idNz
str | Nonecomm_passwordTboolenabled )__name__
__module____qualname____firstlineno____annotations__r   r   __static_attributes__r       &/var/www/reloj-farallon/app/devices.pyr	   r	      s/    G
I
I
IN $M:$GTr   r	   c                 4    [        [        R                  5      $ )N)r   r   RELOJES_CONFIGr   r   r   _config_pathr       s    ''((r   c                 @   [        5       n U R                  5       (       d  [        SU  S35      e[        R                  " U R                  SS95      n[        U[        5      (       a  [        U5      S:X  a  [        S5      e/ n[        5       nU GH
  n[        US   5      R                  5       nXS;   a  [        SU 35      eUR                  U5        UR                  S	[        R                   5      nUb"  [        U5      R                  5       =(       d    S nUR#                  [%        U[        UR                  S
U5      5      [        US   5      ['        UR                  SS5      5      ['        US   5      U[)        UR                  SS5      5      S95        GM     U$ )Nz
No existe zF. Copie relojes.json.example a relojes.json y configure los 3 relojes.zutf-8)encodingr   z5relojes.json debe ser una lista con al menos un relojr   zID de reloj duplicado: r   r   r   r   i  r   r   T)r   r   r   r   r   r   r   )r    existsFileNotFoundErrorjsonloads	read_text
isinstancelistlen
ValueErrorsetr   stripaddgetr   ANVIZ_COMM_PASSWORDappendr	   r   r   )pathrawrelojesseenitemridcomm_pws          r   load_relojesr9      sa   >D;;==de
 	
 **T^^W^5
6Cc4  CHMPQQ!#GUD$t*o##%;6se<==((?H,H,HI'l((*2dG&#./f&&$/0d;/0%TXXi67
	
 ( Nr   c                h    [        5        H  nUR                  U :X  d  M  Us  $    [        SU  35      e)NzReloj no configurado: )r9   r   KeyError)reloj_idrs     r   	get_relojr>   >   s4    ^448H  +H:6
77r   )returnr   )r?   zlist[RelojConfig])r<   r   r?   r	   )__doc__
__future__r   r%   dataclassesr   pathlibr   
app.configr   r	   r    r9   r>   r   r   r   <module>rE      sE    0 "  !   $  ) F8r   