diff options
author | Stephen Finucane <stephen@that.guru> | 2018-01-09 21:47:28 +0000 |
---|---|---|
committer | Stephen Finucane <stephen@that.guru> | 2018-01-09 23:59:51 +0000 |
commit | 139068e58670da8d7c48fb6efe07132227a6bc35 (patch) | |
tree | 25e709079bc8ed79c0c904fa5e3fa71168ee6f91 /patchwork/signals.py | |
parent | 087929d3dc20c6c57cf14bf4ac5c2a4ca1328c54 (diff) | |
download | patchwork-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.py | 46 |
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: |