"""
Filtros de visibilidad de la auditoria.

Vive aparte de las vistas porque lo comparten dos endpoints (`/messages/<uuid>`
y `/mail/<uuid>`) y porque es la clase de regla que no conviene reescribir en
cada sitio: basta con olvidarla una vez para reabrir el agujero.
"""

from __future__ import annotations


def mensajes_visibles_para(queryset, api_key):
    """
    Restringe `queryset` a los envios de la cuenta de `api_key`.

    El filtro es por **cuenta**, no por clave: rotar una credencial no debe
    hacer desaparecer el historial que se envio con la anterior.

    Sin credencial identificada no se ve nada. Devolver el queryset completo
    en ese caso seria el fallo abierto de siempre; aqui falla cerrado aunque
    alguien monte la vista sin autenticacion por descuido.
    """
    if api_key is None:
        return queryset.none()
    return queryset.filter(api_key__account_id=api_key.account_id)
