26 lines
615 B
Python
26 lines
615 B
Python
from werkzeug.local import LocalProxy, LocalStack
|
|
|
|
_business_event_stack = LocalStack()
|
|
|
|
|
|
def _get_current_event():
|
|
top = _business_event_stack.top
|
|
if top is None:
|
|
raise RuntimeError("No business event context found. Are you sure you're in a business event?")
|
|
return top
|
|
|
|
|
|
current_event = LocalProxy(_get_current_event)
|
|
|
|
|
|
class BusinessEventContext:
|
|
def __init__(self, event):
|
|
self.event = event
|
|
|
|
def __enter__(self):
|
|
_business_event_stack.push(self.event)
|
|
return self.event
|
|
|
|
def __exit__(self, exc_type, exc_val, exc_tb):
|
|
_business_event_stack.pop()
|