summaryrefslogtreecommitdiff
path: root/patchwork/signals.py
diff options
context:
space:
mode:
authorStephen Finucane <stephen@that.guru>2018-01-09 21:47:28 +0000
committerStephen Finucane <stephen@that.guru>2018-01-09 23:59:51 +0000
commit139068e58670da8d7c48fb6efe07132227a6bc35 (patch)
tree25e709079bc8ed79c0c904fa5e3fa71168ee6f91 /patchwork/signals.py
parent087929d3dc20c6c57cf14bf4ac5c2a4ca1328c54 (diff)
downloadpatchwork-139068e58670da8d7c48fb6efe07132227a6bc35.tar
patchwork-139068e58670da8d7c48fb6efe07132227a6bc35.tar.gz
signals: Don't call event creation code for fixtures
If loading fixtures via the 'loaddata' management command, then it is unlikely that the signal handling code should execute. Disable it. Signed-off-by: Stephen Finucane <stephen@that.guru>
Diffstat (limited to 'patchwork/signals.py')
-rw-r--r--patchwork/signals.py46
1 files changed, 26 insertions, 20 deletions
diff --git a/patchwork/signals.py b/patchwork/signals.py
index 208685c..e31ac2f 100644
--- a/patchwork/signals.py
+++ b/patchwork/signals.py
@@ -33,9 +33,9 @@ from patchwork.models import SeriesPatch
@receiver(pre_save, sender=Patch)
-def patch_change_callback(sender, instance, **kwargs):
+def patch_change_callback(sender, instance, raw, **kwargs):
# we only want notification of modified patches
- if instance.pk is None:
+ if raw or instance.pk is None:
return
if instance.project is None or not instance.project.send_notifications:
@@ -70,7 +70,7 @@ def patch_change_callback(sender, instance, **kwargs):
@receiver(post_save, sender=CoverLetter)
-def create_cover_created_event(sender, instance, created, **kwargs):
+def create_cover_created_event(sender, instance, created, raw, **kwargs):
def create_event(cover):
return Event.objects.create(
@@ -78,14 +78,15 @@ def create_cover_created_event(sender, instance, created, **kwargs):
cover=cover,
category=Event.CATEGORY_COVER_CREATED)
- if not created:
+ # don't trigger for items loaded from fixtures or new items
+ if raw or not created:
return
create_event(instance)
@receiver(post_save, sender=Patch)
-def create_patch_created_event(sender, instance, created, **kwargs):
+def create_patch_created_event(sender, instance, created, raw, **kwargs):
def create_event(patch):
return Event.objects.create(
@@ -93,14 +94,15 @@ def create_patch_created_event(sender, instance, created, **kwargs):
patch=patch,
category=Event.CATEGORY_PATCH_CREATED)
- if not created:
+ # don't trigger for items loaded from fixtures or new items
+ if raw or not created:
return
create_event(instance)
@receiver(pre_save, sender=Patch)
-def create_patch_state_changed_event(sender, instance, **kwargs):
+def create_patch_state_changed_event(sender, instance, raw, **kwargs):
def create_event(patch, before, after):
return Event.objects.create(
@@ -110,8 +112,8 @@ def create_patch_state_changed_event(sender, instance, **kwargs):
previous_state=before,
current_state=after)
- # only trigger on updated items
- if not instance.pk:
+ # don't trigger for items loaded from fixtures or new items
+ if raw or not instance.pk:
return
orig_patch = Patch.objects.get(pk=instance.pk)
@@ -123,7 +125,7 @@ def create_patch_state_changed_event(sender, instance, **kwargs):
@receiver(pre_save, sender=Patch)
-def create_patch_delegated_event(sender, instance, **kwargs):
+def create_patch_delegated_event(sender, instance, raw, **kwargs):
def create_event(patch, before, after):
return Event.objects.create(
@@ -133,8 +135,8 @@ def create_patch_delegated_event(sender, instance, **kwargs):
previous_delegate=before,
current_delegate=after)
- # only trigger on updated items
- if not instance.pk:
+ # don't trigger for items loaded from fixtures or new items
+ if raw or not instance.pk:
return
orig_patch = Patch.objects.get(pk=instance.pk)
@@ -146,7 +148,7 @@ def create_patch_delegated_event(sender, instance, **kwargs):
@receiver(post_save, sender=SeriesPatch)
-def create_patch_completed_event(sender, instance, created, **kwargs):
+def create_patch_completed_event(sender, instance, created, raw, **kwargs):
"""Create patch completed event for patches with series."""
def create_event(patch, series):
@@ -156,7 +158,8 @@ def create_patch_completed_event(sender, instance, created, **kwargs):
series=series,
category=Event.CATEGORY_PATCH_COMPLETED)
- if not created:
+ # don't trigger for items loaded from fixtures or existing items
+ if raw or not created:
return
# if dependencies not met, don't raise event. There's also no point raising
@@ -181,7 +184,7 @@ def create_patch_completed_event(sender, instance, created, **kwargs):
@receiver(post_save, sender=Check)
-def create_check_created_event(sender, instance, created, **kwargs):
+def create_check_created_event(sender, instance, created, raw, **kwargs):
def create_event(check):
# TODO(stephenfin): It might make sense to add a 'project' field to
@@ -192,14 +195,15 @@ def create_check_created_event(sender, instance, created, **kwargs):
created_check=check,
category=Event.CATEGORY_CHECK_CREATED)
- if not created:
+ # don't trigger for items loaded from fixtures or existing items
+ if raw or not created:
return
create_event(instance)
@receiver(post_save, sender=Series)
-def create_series_created_event(sender, instance, created, **kwargs):
+def create_series_created_event(sender, instance, created, raw, **kwargs):
def create_event(series):
return Event.objects.create(
@@ -207,14 +211,15 @@ def create_series_created_event(sender, instance, created, **kwargs):
series=series,
category=Event.CATEGORY_SERIES_CREATED)
- if not created:
+ # don't trigger for items loaded from fixtures or existing items
+ if raw or not created:
return
create_event(instance)
@receiver(post_save, sender=SeriesPatch)
-def create_series_completed_event(sender, instance, created, **kwargs):
+def create_series_completed_event(sender, instance, created, raw, **kwargs):
# NOTE(stephenfin): We subscribe to the SeriesPatch.post_save signal
# instead of Series.m2m_changed to minimize the amount of times this is
@@ -234,7 +239,8 @@ def create_series_completed_event(sender, instance, created, **kwargs):
series=series,
category=Event.CATEGORY_SERIES_COMPLETED)
- if not created:
+ # don't trigger for items loaded from fixtures or existing items
+ if raw or not created:
return
if instance.series.received_all: