mirror of
				https://github.com/inventree/InvenTree.git
				synced 2025-10-31 13:15:43 +00:00 
			
		
		
		
	refactor to use general function
This commit is contained in:
		| @@ -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): | ||||
|     """ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user