import threading

_local = threading.local()

def set_current_request(request):
    _local.request = request

def get_current_request():
    return getattr(_local, "request", None)

def get_actor():
    req = get_current_request()
    if req and hasattr(req, "user") and req.user.is_authenticated:
        return req.user
    return None

def get_client_meta():
    req = get_current_request()
    if not req:
        return {"ip": None, "ua": None}
    ip = req.META.get("HTTP_X_FORWARDED_FOR", "").split(",")[0].strip() or req.META.get("REMOTE_ADDR")
    ua = req.META.get("HTTP_USER_AGENT")
    return {"ip": ip, "ua": ua}
