bitbake: 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.

(Bitbake rev: 566b4fbe9cfe4c6c0605c4f6444083ee4cf8b958)

Signed-off-by: Michael Wood <michael.g.wood@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Michael Wood 2016-05-26 16:12:26 +01:00 committed by Richard Purdie
parent 82722cb564
commit 89433a35e6
1 changed files with 16 additions and 4 deletions

View File

@ -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