1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00
Files
netbox-community-netbox/netbox/extras/context_managers.py
2023-11-30 16:36:33 -05:00

26 lines
638 B
Python

from contextlib import contextmanager
from netbox.context import current_request, events_queue
from .events import flush_events
@contextmanager
def event_tracking(request):
"""
Queue interesting events in memory while processing a request, then flush that queue for processing by the
events pipline before returning the response.
:param request: WSGIRequest object with a unique `id` set
"""
current_request.set(request)
events_queue.set([])
yield
# Flush queued webhooks to RQ
flush_events(events_queue.get())
# Clear context vars
current_request.set(None)
events_queue.set([])