diff --git a/InvenTree/part/tasks.py b/InvenTree/part/tasks.py index a7c24b385b..acb85f148b 100644 --- a/InvenTree/part/tasks.py +++ b/InvenTree/part/tasks.py @@ -2,17 +2,13 @@ from __future__ import unicode_literals import logging -from datetime import timedelta from django.utils.translation import ugettext_lazy as _ -from django.template.loader import render_to_string -from allauth.account.models import EmailAddress - -from common.models import NotificationEntry import InvenTree.helpers import InvenTree.tasks +import common.notifications import part.models @@ -20,44 +16,23 @@ logger = logging.getLogger("inventree") def notify_low_stock(part: part.models.Part): - """ - Notify users who have starred a part when its stock quantity falls below the minimum threshold - """ + context = { + # Pass the "Part" object through to the template context + 'part': part, + 'link': InvenTree.helpers.construct_absolute_url(part.get_absolute_url()), + 'templates':{ + 'html': 'email/low_stock_notification.html', + 'subject': "[InvenTree] " + _("Low stock notification"), + }, + } - # Check if we have notified recently... - delta = timedelta(days=1) - - if NotificationEntry.check_recent('part.notify_low_stock', part.pk, delta): - logger.info(f"Low stock notification has recently been sent for '{part.full_name}' - SKIPPING") - return - - logger.info(f"Sending low stock notification email for {part.full_name}") - - # Get a list of users who are subcribed to this part - subscribers = part.get_subscribers() - - emails = EmailAddress.objects.filter( - user__in=subscribers, + common.notifications.trigger_notifaction( + part, + 'part.notify_low_stock', + receiver_fnc=part.get_subscribers, + notification_context=context, ) - # TODO: In the future, include the part image in the email template - - if len(emails) > 0: - logger.info(f"Notify users regarding low stock of {part.name}") - context = { - # Pass the "Part" object through to the template context - 'part': part, - 'link': InvenTree.helpers.construct_absolute_url(part.get_absolute_url()), - } - - subject = "[InvenTree] " + _("Low stock notification") - html_message = render_to_string('email/low_stock_notification.html', context) - recipients = emails.values_list('email', flat=True) - - InvenTree.tasks.send_email(subject, '', recipients, html_message=html_message) - - NotificationEntry.notify('part.notify_low_stock', part.pk) - def notify_low_stock_if_required(part: part.models.Part): """