[gnome-continuous-yocto/gnomeostree-3.28-rocko: 893/8267] bitbake: toaster: widgets ToasterTable Catch template rendering exceptions
- From: Emmanuele Bassi <ebassi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-continuous-yocto/gnomeostree-3.28-rocko: 893/8267] bitbake: toaster: widgets ToasterTable Catch template rendering exceptions
- Date: Sat, 16 Dec 2017 21:03:52 +0000 (UTC)
commit 89433a35e6e21a978cef3e41e24d87024ed9a6ed
Author: Michael Wood <michael g wood intel com>
Date: Thu May 26 16:12:26 2016 +0100
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>
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 584bde7..4276c2a 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
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
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]