summaryrefslogtreecommitdiffstats
path: root/lib/toaster/toastergui/widgets.py
diff options
context:
space:
mode:
authorMichael Wood <michael.g.wood@intel.com>2016-05-26 16:12:26 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-06-13 22:04:30 +0100
commit566b4fbe9cfe4c6c0605c4f6444083ee4cf8b958 (patch)
tree5385efb6fbcaed385d9648de1ec7ea4207051c79 /lib/toaster/toastergui/widgets.py
parent7cf23671659666b27b5629fecd5f947f9bdb94e0 (diff)
downloadbitbake-contrib-566b4fbe9cfe4c6c0605c4f6444083ee4cf8b958.tar.gz
toaster: widgets ToasterTable Catch template rendering exceptions
If a cell template rendering causes an exception catch it and carry on, this at least allows the table to show the rest of the data if nothing else. Also improve the error logging so that it's possible what the offending template snippet was. Signed-off-by: Michael Wood <michael.g.wood@intel.com>
Diffstat (limited to 'lib/toaster/toastergui/widgets.py')
-rw-r--r--lib/toaster/toastergui/widgets.py20
1 files changed, 16 insertions, 4 deletions
diff --git a/lib/toaster/toastergui/widgets.py b/lib/toaster/toastergui/widgets.py
index 584bde7db..4276c2aab 100644
--- a/lib/toaster/toastergui/widgets.py
+++ b/lib/toaster/toastergui/widgets.py
@@ -29,6 +29,8 @@ from django.core.paginator import Paginator, EmptyPage
from django.db.models import Q
from orm.models import Project, ProjectLayer, Layer_Version
from django.template import Context, Template
+from django.template import VariableDoesNotExist
+from django.template import TemplateSyntaxError
from django.core.serializers.json import DjangoJSONEncoder
from django.core.exceptions import FieldError
from django.conf.urls import url, patterns
@@ -349,10 +351,20 @@ class ToasterTable(TemplateView):
# so that this can be used as the html class name
col['field_name'] = col['static_data_name']
- # Render the template given
- required_data[col['static_data_name']] = \
- self.render_static_data(
- col['static_data_template'], model_obj)
+ try:
+ # Render the template given
+ required_data[col['static_data_name']] = \
+ self.render_static_data(
+ col['static_data_template'], model_obj)
+ except (TemplateSyntaxError,
+ VariableDoesNotExist) as e:
+ logger.error("could not render template code"
+ "%s %s %s",
+ col['static_data_template'],
+ e, self.__class__.__name__)
+ required_data[col['static_data_name']] =\
+ '<!--error-->'
+
else:
# Traverse to any foriegn key in the field
# e.g. recipe__layer_version__name