選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

receivers.py 882B

1234567891011121314151617181920212223242526
  1. from django.dispatch import receiver
  2. from django.db.models.signals import post_save
  3. from oscar.core.loading import get_classes
  4. StockRecord, StockAlert = get_classes('partner.models', ('StockRecord', 'StockAlert'))
  5. @receiver(post_save, sender=StockRecord)
  6. def update_stock_alerts(sender, instance, created, **kwargs):
  7. """
  8. Update low-stock alerts
  9. """
  10. if created:
  11. return
  12. stockrecord = instance
  13. try:
  14. alert = StockAlert.objects.get(stockrecord=stockrecord,
  15. status=StockAlert.OPEN)
  16. except StockAlert.DoesNotExist:
  17. alert = None
  18. if stockrecord.is_below_threshold and not alert:
  19. StockAlert.objects.create(stockrecord=stockrecord,
  20. threshold=stockrecord.low_stock_threshold)
  21. elif not stockrecord.is_below_threshold and alert:
  22. alert.close()