From 0b51fc0f220410912e80e72dfd2a9b1065e02366 Mon Sep 17 00:00:00 2001 From: Anton M Date: Mon, 9 Sep 2024 22:23:28 +0200 Subject: [PATCH] fix report webhook --- validity/scripts/runtests/combine.py | 15 +++++++-------- validity/utils/misc.py | 3 +++ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/validity/scripts/runtests/combine.py b/validity/scripts/runtests/combine.py index e137ceb..60f617e 100644 --- a/validity/scripts/runtests/combine.py +++ b/validity/scripts/runtests/combine.py @@ -9,14 +9,13 @@ from core.models import Job from dimi import Singleton from django.db.models import QuerySet -from django.http import HttpRequest from django.urls import reverse -from netbox.context import events_queue +from extras.events import flush_events from validity import di from validity.models import ComplianceReport from validity.netbox_changes import QUEUE_CREATE_ACTION, enqueue_event -from ..data_models import FullRunTestsParams, Message, TestResultRatio +from ..data_models import FullRunTestsParams, Message, RequestInfo, TestResultRatio from ..exceptions import AbortScript from ..launch import Launcher from ..logger import Logger @@ -24,10 +23,10 @@ from .base import TerminateMixin -def enqueue(report, request): - queue = events_queue.get() +def enqueue(report: ComplianceReport, request: RequestInfo): + queue = {} enqueue_event(queue, report, request.get_user(), request.id, QUEUE_CREATE_ACTION) - events_queue.set(queue) + flush_events(queue.values()) @di.dependency(scope=Singleton) @@ -35,12 +34,12 @@ def enqueue(report, request): class CombineWorker(TerminateMixin): log_factory: Callable[[], Logger] = Logger job_extractor_factory: Callable[[], JobExtractor] = JobExtractor - enqueue_func: Callable[[ComplianceReport, HttpRequest], None] = enqueue + enqueue_func: Callable[[ComplianceReport, RequestInfo], None] = enqueue report_queryset: QuerySet[ComplianceReport] = field( default_factory=ComplianceReport.objects.annotate_result_stats().count_devices_and_tests ) - def fire_report_webhook(self, report_id: int, request: HttpRequest) -> None: + def fire_report_webhook(self, report_id: int, request: RequestInfo) -> None: report = self.report_queryset.get(pk=report_id) self.enqueue_func(report, request) diff --git a/validity/utils/misc.py b/validity/utils/misc.py index 68b34f6..58e1848 100644 --- a/validity/utils/misc.py +++ b/validity/utils/misc.py @@ -15,6 +15,9 @@ @contextmanager def null_request(): + """ + Prevents EventRule instances from triggering by setting current request to None + """ ctx = current_request.get() current_request.set(None) try: