2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-07-01 19:20:55 +00:00

Simplify event triggering

- add generic receivers for database actions
- exclude django_q tables, otherwise we get an infinite loop!

Ref: https://stackoverflow.com/questions/17507784/consolidating-multiple-post-save-signals-with-one-receiver/32230933#32230933
This commit is contained in:
Oliver
2022-01-10 17:24:53 +11:00
parent 4ddd6bc351
commit 886b1f1d72
6 changed files with 54 additions and 85 deletions

View File

@ -135,20 +135,6 @@ def before_delete_stock_location(sender, instance, using, **kwargs):
child.parent = instance.parent
child.save()
trigger_event('location.deleted')
@receiver(post_save, sender=StockLocation, dispatch_uid='stock_location_post_save_log')
def after_save_stock_location(sender, instance: StockLocation, created, **kwargs):
"""
Hook function to be executed after StockLocation object is saved/updated
"""
if created:
trigger_event('stocklocation.created', location_id=instance.pk)
else:
trigger_event('stocklocation.saved', location_id=instance.pk)
class StockItemManager(TreeManager):
"""
@ -1801,8 +1787,6 @@ def before_delete_stock_item(sender, instance, using, **kwargs):
child.parent = instance.parent
child.save()
trigger_event('stockitem.deleted')
@receiver(post_delete, sender=StockItem, dispatch_uid='stock_item_post_delete_log')
def after_delete_stock_item(sender, instance: StockItem, **kwargs):
@ -1820,11 +1804,6 @@ def after_save_stock_item(sender, instance: StockItem, created, **kwargs):
Hook function to be executed after StockItem object is saved/updated
"""
if created:
trigger_event('stockitem.created', item_id=instance.pk)
else:
trigger_event('stockitem.saved', item_id=instance.pk)
# Run this check in the background
InvenTree.tasks.offload_task('part.tasks.notify_low_stock_if_required', instance.part)
@ -2018,12 +1997,3 @@ class StockItemTestResult(models.Model):
auto_now_add=True,
editable=False
)
@receiver(post_save, sender=StockItemTestResult, dispatch_uid='stock_item_test_result_post_save_log')
def after_save_test_result(sender, instance: StockItemTestResult, created: bool, **kwargs):
if created:
trigger_event('stockitemtestresult.created', test_id=instance.pk)
else:
trigger_event('stockitemtestresult.saved', test_id=instance.pk)