
    Si;                    h    d Z ddlmZ ddlmZ ddlmZmZ ddlmZ ddl	m
Z
 ddZddd	Zd
dddZy)uL   period_year en users_rols: año efectivo y filtros SQLAlchemy reutilizables.    )annotations)datetime)AnyOptional)or_)UsersRolModelc                2   | t        j                         j                  S 	 t        |       j	                         }|rt        |      S t        j                         j                  S # t        t        f$ r! t        j                         j                  cY S w xY w)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     K/var/www/pie360backend.cl/public_html/app/backend/utils/users_rol_period.pyeffective_period_year_intr      su    ||~"""#""$s1v3 3 33z" #||~"""#s   %A& A& &-BBNc                >    |}|| t        | dd      }t        |      S )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                   t        |       }|r:t        t        j                  |k(  t        j                  j                  |            S t        j                  |k(  S )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+      s-    R "     /#) [_ 	+r   