summaryrefslogtreecommitdiffstats
path: root/bitbake
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-15 08:35:04 +0100
commit89433a35e6e21a978cef3e41e24d87024ed9a6ed (patch)
tree27c3f4c3e0ef23a7c72c29f73e0ca0f7456f8e0f /bitbake
parent82722cb5645cfee8007adc0076315ea63f2bda15 (diff)
downloadpoky-89433a35e6e21a978cef3e41e24d87024ed9a6ed.tar.gz
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>
Diffstat (limited to 'bitbake')
-rw-r--r--bitbake/lib/toaster/toastergui/widgets.py20
1 files changed, 16 insertions, 4 deletions
diff --git a/bitbake/lib/toaster/toastergui/widgets.py b/bitbake/lib/toaster/toastergui/widgets.py
index 584bde7db5..4276c2aabf 100644
--- a/bitbake/lib/toaster/toastergui/widgets.py
+++ b/bitbake/lib/toaster/toastergui/widgets.py
@@ -29,6 +29,8 @@ from django.core.paginator import Paginator, EmptyPage
29from django.db.models import Q 29from django.db.models import Q
30from orm.models import Project, ProjectLayer, Layer_Version 30from orm.models import Project, ProjectLayer, Layer_Version
31from django.template import Context, Template 31from django.template import Context, Template
32from django.template import VariableDoesNotExist
33from django.template import TemplateSyntaxError
32from django.core.serializers.json import DjangoJSONEncoder 34from django.core.serializers.json import DjangoJSONEncoder
33from django.core.exceptions import FieldError 35from django.core.exceptions import FieldError
34from django.conf.urls import url, patterns 36from django.conf.urls import url, patterns
@@ -349,10 +351,20 @@ class ToasterTable(TemplateView):
349 # so that this can be used as the html class name 351 # so that this can be used as the html class name
350 col['field_name'] = col['static_data_name'] 352 col['field_name'] = col['static_data_name']
351 353
352 # Render the template given 354 try:
353 required_data[col['static_data_name']] = \ 355 # Render the template given
354 self.render_static_data( 356 required_data[col['static_data_name']] = \
355 col['static_data_template'], model_obj) 357 self.render_static_data(
358 col['static_data_template'], model_obj)
359 except (TemplateSyntaxError,
360 VariableDoesNotExist) as e:
361 logger.error("could not render template code"
362 "%s %s %s",
363 col['static_data_template'],
364 e, self.__class__.__name__)
365 required_data[col['static_data_name']] =\
366 '<!--error-->'
367
356 else: 368 else:
357 # Traverse to any foriegn key in the field 369 # Traverse to any foriegn key in the field
358 # e.g. recipe__layer_version__name 370 # e.g. recipe__layer_version__name