mirror of
https://github.com/inventree/InvenTree.git
synced 2025-04-29 12:06:44 +00:00
Catch errors when rendering custom plugin panels
This commit is contained in:
parent
bb83c0d53e
commit
6147afe35f
@ -1,5 +1,10 @@
|
|||||||
|
import sys
|
||||||
|
import traceback
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
from django.views.debug import ExceptionReporter
|
||||||
|
|
||||||
|
from error_report.models import Error
|
||||||
|
|
||||||
from plugin.registry import registry
|
from plugin.registry import registry
|
||||||
|
|
||||||
@ -21,7 +26,21 @@ class InvenTreePluginViewMixin:
|
|||||||
panels = []
|
panels = []
|
||||||
|
|
||||||
for plug in registry.with_mixin('panel'):
|
for plug in registry.with_mixin('panel'):
|
||||||
panels += plug.render_panels(self, self.request, ctx)
|
|
||||||
|
try:
|
||||||
|
panels += plug.render_panels(self, self.request, ctx)
|
||||||
|
except Exception as exc:
|
||||||
|
# Prevent any plugin error from crashing the page render
|
||||||
|
kind, info, data = sys.exc_info()
|
||||||
|
|
||||||
|
# Log the error to the database
|
||||||
|
Error.objects.create(
|
||||||
|
kind=kind.__name__,
|
||||||
|
info=info,
|
||||||
|
data='\n'.join(traceback.format_exception(kind, info, data)),
|
||||||
|
path=self.request.path,
|
||||||
|
html=ExceptionReporter(self.request, kind, info, data).get_traceback_html(),
|
||||||
|
)
|
||||||
|
|
||||||
return panels
|
return panels
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user