diff --git a/InvenTree/InvenTree/helpers.py b/InvenTree/InvenTree/helpers.py index fd86306627..20680540e6 100644 --- a/InvenTree/InvenTree/helpers.py +++ b/InvenTree/InvenTree/helpers.py @@ -14,6 +14,7 @@ from wsgiref.util import FileWrapper from django.http import StreamingHttpResponse from django.core.exceptions import ValidationError, FieldError from django.utils.translation import ugettext_lazy as _ +from django.conf import settings from django.contrib.auth.models import Permission @@ -696,3 +697,11 @@ def clean_decimal(number): return Decimal(0) return clean_number.quantize(Decimal(1)) if clean_number == clean_number.to_integral() else clean_number.normalize() + +def log_plugin_error(error, reference: str = 'general'): + # make sure the registry is set up + if reference not in settings.INTEGRATION_ERRORS: + settings.INTEGRATION_ERRORS[reference] = [] + + # add error to stack + settings.INTEGRATION_ERRORS[reference].append(error) diff --git a/InvenTree/plugin/plugins.py b/InvenTree/plugin/plugins.py index 7271ab8752..d215faacdd 100644 --- a/InvenTree/plugin/plugins.py +++ b/InvenTree/plugin/plugins.py @@ -9,6 +9,8 @@ import logging from django.conf import settings from django.core.exceptions import AppRegistryNotReady +from InvenTree.helpers import log_plugin_error + # Action plugins import plugin.builtin.action as action from plugin.action import ActionPlugin @@ -43,14 +45,10 @@ def get_modules(pkg, recursive: bool = False): pass except Exception as error: # this 'protects' against malformed plugin modules by more or less silently failing - # TODO log + # TODO log to logging - # make sure the registry is set up - if 'discovery' not in settings.INTEGRATION_ERRORS: - settings.INTEGRATION_ERRORS['discovery'] = [] - - # add error to stack - settings.INTEGRATION_ERRORS['discovery'].append({name: str(error)}) + # log to stack + log_plugin_error({name: str(error)}, 'discovery') return [v for k, v in context.items()]