From 5cf7e8be34f716cdb529057c5d3ae1b057344600 Mon Sep 17 00:00:00 2001 From: qasimgulzar Date: Mon, 12 Feb 2024 19:30:32 +0500 Subject: [PATCH 1/2] feature: set trigger to send signal on aggregator update. --- completion_aggregator/models.py | 2 ++ completion_aggregator/signals.py | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/completion_aggregator/models.py b/completion_aggregator/models.py index c1fde462..ca509f60 100644 --- a/completion_aggregator/models.py +++ b/completion_aggregator/models.py @@ -18,6 +18,7 @@ from model_utils.models import TimeStampedModel from .utils import get_percent, make_datetime_timezone_unaware +from .signals import AggregatorUpdate User = get_user_model() @@ -194,6 +195,7 @@ def bulk_create_or_update(self, updated_aggregators): else: aggregation_data = [obj.get_values() for obj in updated_aggregators] cur.executemany(INSERT_OR_UPDATE_AGGREGATOR_QUERY, aggregation_data) + AggregatorUpdate.send(sender=self.__class__, aggregation_data=aggregation_data) class Aggregator(TimeStampedModel): diff --git a/completion_aggregator/signals.py b/completion_aggregator/signals.py index 2edce223..ed509f90 100644 --- a/completion_aggregator/signals.py +++ b/completion_aggregator/signals.py @@ -9,13 +9,14 @@ from django.conf import settings from django.db.models.signals import post_save +from django.dispatch import Signal from . import batch, compat, models from .tasks import handler_tasks log = logging.getLogger(__name__) - +AggregatorUpdate = Signal(providing_args=['aggregation_data']) def register(): """ Register signal handlers. From 9a1d8892e8dece1a4ce8721dd1514edde2fdce7a Mon Sep 17 00:00:00 2001 From: "qasim.gulzar" Date: Tue, 13 Feb 2024 14:54:57 +0500 Subject: [PATCH 2/2] :sparkles: aggregator update signal --- completion_aggregator/dispatch.py | 3 +++ completion_aggregator/models.py | 3 +-- completion_aggregator/signals.py | 2 -- 3 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 completion_aggregator/dispatch.py diff --git a/completion_aggregator/dispatch.py b/completion_aggregator/dispatch.py new file mode 100644 index 00000000..a442a05b --- /dev/null +++ b/completion_aggregator/dispatch.py @@ -0,0 +1,3 @@ +from django.dispatch import Signal + +AggregatorUpdate = Signal(providing_args=['aggregation_data']) diff --git a/completion_aggregator/models.py b/completion_aggregator/models.py index ca509f60..b8447411 100644 --- a/completion_aggregator/models.py +++ b/completion_aggregator/models.py @@ -18,8 +18,7 @@ from model_utils.models import TimeStampedModel from .utils import get_percent, make_datetime_timezone_unaware -from .signals import AggregatorUpdate - +from .dispatch import AggregatorUpdate User = get_user_model() INSERT_OR_UPDATE_AGGREGATOR_QUERY = """ diff --git a/completion_aggregator/signals.py b/completion_aggregator/signals.py index ed509f90..664c586a 100644 --- a/completion_aggregator/signals.py +++ b/completion_aggregator/signals.py @@ -9,14 +9,12 @@ from django.conf import settings from django.db.models.signals import post_save -from django.dispatch import Signal from . import batch, compat, models from .tasks import handler_tasks log = logging.getLogger(__name__) -AggregatorUpdate = Signal(providing_args=['aggregation_data']) def register(): """ Register signal handlers.