Files

34 lines
634 B
Python

from contextlib import contextmanager
from threading import local
_state = local()
def get_current_actor():
return getattr(_state, "actor", None)
def audit_is_suppressed():
return getattr(_state, "suppressed", False)
@contextmanager
def audit_actor(actor):
previous = get_current_actor()
_state.actor = actor if getattr(actor, "is_authenticated", True) else None
try:
yield
finally:
_state.actor = previous
@contextmanager
def suppress_audit():
previous = audit_is_suppressed()
_state.suppressed = True
try:
yield
finally:
_state.suppressed = previous