from __future__ import annotations

from django.db.models import QuerySet

from .models import VerificationClaim


def has_full_verification_access(user) -> bool:
    return getattr(user, "is_authenticated", False)


def accessible_claim_queryset(*, user, queryset: QuerySet | None = None) -> QuerySet:
    base_queryset = queryset if queryset is not None else VerificationClaim.objects.all()

    if not getattr(user, "is_authenticated", False):
        return base_queryset.none()

    return base_queryset


def can_access_claim(*, user, claim: VerificationClaim) -> bool:
    return accessible_claim_queryset(user=user, queryset=VerificationClaim.objects.filter(pk=claim.pk)).exists()
