diff options
author | Michael Wood <michael.g.wood@intel.com> | 2016-05-26 16:12:26 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-06-15 08:35:04 +0100 |
commit | 89433a35e6e21a978cef3e41e24d87024ed9a6ed (patch) | |
tree | 27c3f4c3e0ef23a7c72c29f73e0ca0f7456f8e0f /bitbake | |
parent | 82722cb5645cfee8007adc0076315ea63f2bda15 (diff) | |
download | poky-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.py | 20 |
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 | |||
29 | from django.db.models import Q | 29 | from django.db.models import Q |
30 | from orm.models import Project, ProjectLayer, Layer_Version | 30 | from orm.models import Project, ProjectLayer, Layer_Version |
31 | from django.template import Context, Template | 31 | from django.template import Context, Template |
32 | from django.template import VariableDoesNotExist | ||
33 | from django.template import TemplateSyntaxError | ||
32 | from django.core.serializers.json import DjangoJSONEncoder | 34 | from django.core.serializers.json import DjangoJSONEncoder |
33 | from django.core.exceptions import FieldError | 35 | from django.core.exceptions import FieldError |
34 | from django.conf.urls import url, patterns | 36 | from 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 |