
    &6j;                    r    S r SSKJr  SSKJr  SSKJrJr  SSKJr  SSK	J
r
  SS jrSSS	 jjrS
S.SS jjrg)uL   period_year en users_rols: año efectivo y filtros SQLAlchemy reutilizables.    )annotations)datetime)AnyOptional)or_)UsersRolModelc                F   U c  [         R                  " 5       R                  $  [        U 5      R	                  5       nU(       a  [        U5      $ [         R                  " 5       R                  $ ! [        [        4 a"    [         R                  " 5       R                  s $ f = f)uV   Si no viene año, usa el año calendario actual (comportamiento esperado en listados).)r   nowyearstrstripint	TypeError
ValueError)period_yearss     TC:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\utils\users_rol_period.pyeffective_period_year_intr      su    ||~"""#""$s1v3 3 33z" #||~"""#s   *A. A. ./B B Nc                B    UnUc  U b  [        U SS5      n[        U5      $ )uZ   Prioriza periodo explícito (body/query); si no, el del token/sesión; si no, año actual.Nr   )getattrr   )session_userexplicit_period_yearpys      r   resolve_period_year_for_sessionr      s*    	B	zl.\=$7$R((    )   )bypass_global_rol_idsc                   [        U 5      nU(       a:  [        [        R                  U:H  [        R                  R                  U5      5      $ [        R                  U:H  $ )u   
Relación users_rols del período indicado.
``bypass_global_rol_ids``: filas con esos rol_id no se filtran por año (ej. superadmin 1).
Usar ``bypass_global_rol_ids=()`` en listados que ya excluyen esos roles.
)r   r   r   r   rol_idin_)r   r   r   s      r   users_rol_period_clauser!      sL     
#;	/B=,,2M4H4H4L4LMb4cdd$$**r   )r   Optional[Any]returnr   )N)r   r"   r#   r   )r   r"   r   tuple)__doc__
__future__r   r   typingr   r   
sqlalchemyr   app.backend.db.modelsr   r   r   r!    r   r   <module>r+      s2    R "     /#) [_ 	+ 	+r   