refactor to use general function

This commit is contained in:
Matthias 2021-12-01 22:26:43 +01:00
parent 95b5eee59d
commit 64c01bff82
No known key found for this signature in database
GPG Key ID: F50EF5741D33E076

View File

@ -2,17 +2,13 @@
from __future__ import unicode_literals from __future__ import unicode_literals
import logging import logging
from datetime import timedelta
from django.utils.translation import ugettext_lazy as _ 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.helpers
import InvenTree.tasks import InvenTree.tasks
import common.notifications
import part.models import part.models
@ -20,43 +16,22 @@ logger = logging.getLogger("inventree")
def notify_low_stock(part: part.models.Part): def notify_low_stock(part: part.models.Part):
"""
Notify users who have starred a part when its stock quantity falls below the minimum threshold
"""
# 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,
)
# 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 = { context = {
# Pass the "Part" object through to the template context # Pass the "Part" object through to the template context
'part': part, 'part': part,
'link': InvenTree.helpers.construct_absolute_url(part.get_absolute_url()), 'link': InvenTree.helpers.construct_absolute_url(part.get_absolute_url()),
'templates':{
'html': 'email/low_stock_notification.html',
'subject': "[InvenTree] " + _("Low stock notification"),
},
} }
subject = "[InvenTree] " + _("Low stock notification") common.notifications.trigger_notifaction(
html_message = render_to_string('email/low_stock_notification.html', context) part,
recipients = emails.values_list('email', flat=True) 'part.notify_low_stock',
receiver_fnc=part.get_subscribers,
InvenTree.tasks.send_email(subject, '', recipients, html_message=html_message) notification_context=context,
)
NotificationEntry.notify('part.notify_low_stock', part.pk)
def notify_low_stock_if_required(part: part.models.Part): def notify_low_stock_if_required(part: part.models.Part):