Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save JohnTheodore/ee53d48fa9a72dbcc27344d3a8a1568f to your computer and use it in GitHub Desktop.

Select an option

Save JohnTheodore/ee53d48fa9a72dbcc27344d3a8a1568f to your computer and use it in GitHub Desktop.
In [17]: foo = """
...: {% set custodian_tables = { 'ebs': { 'headers': { 'VolumeId': '', 'CreateTime': { 'display_name': 'CreationTime' }, 'State': '', 'Tags': '' } } } %}
...: {% macro get_header_name(header, resource, custodian_tables) -%}
...: {% if 'display_name' in custodian_tables[resource]['headers'][header] %}
...: {{ custodian_tables[resource]['headers'][header]['display_name'] }}
...: {% else %}
...: {{ header }}
...: {% endif %}
...: {%- endmacro %}
...: {% macro create_table_header(table_headers, resource, custodian_tables) -%}
...: {% for table_header in table_headers %}
...: <th style="border:2px solid grey; text-align: center; padding: 5px;">{{ get_header_name(table_header, resource, custodian_tables) }}</th>
...: {% endfor %}
...: {%- endmacro %}
...: {% macro create_table_rows(resources, table_headers) -%}
...: {% for resource in resources %}
...: <tr style="border:none; border-collapse:collapse">
...: {% for columnName in table_headers %}
...: <td style="border:2px solid grey; padding:4px">{{ resource[columnName] }}</td>
...: {% endfor %}
...: </tr>
...: {% endfor %}
...: {%- endmacro %}
...: {% set table_headers = custodian_tables[policy['resource']]['headers'].keys() %}
...: {{ create_table_header(table_headers, resource, custodian_tables) }}
...: {{ create_table_rows(resources, table_headers) }}
...:
...: """
In [18]: template = jinja2.Template(foo)
In [19]: print template.render(policy=email_metadata['ebs']['policy'], resources=email_metadata['ebs']['resources'])
---------------------------------------------------------------------------
UndefinedError Traceback (most recent call last)
<ipython-input-19-bf15867b439f> in <module>()
----> 1 print template.render(policy=email_metadata['ebs']['policy'], resources=email_metadata['ebs']['resources'])
/usr/local/lib/python2.7/site-packages/jinja2/environment.pyc in render(self, *args, **kwargs)
1006 except Exception:
1007 exc_info = sys.exc_info()
-> 1008 return self.environment.handle_exception(exc_info, True)
1009
1010 def render_async(self, *args, **kwargs):
/usr/local/lib/python2.7/site-packages/jinja2/environment.pyc in handle_exception(self, exc_info, rendered, source_hint)
778 self.exception_handler(traceback)
779 exc_type, exc_value, tb = traceback.standard_exc_info
--> 780 reraise(exc_type, exc_value, tb)
781
782 def join_path(self, template, parent):
<template> in top-level template code()
/usr/local/lib/python2.7/site-packages/jinja2/runtime.pyc in _invoke(self, arguments, autoescape)
549 def _invoke(self, arguments, autoescape):
550 """This method is being swapped out by the async implementation."""
--> 551 rv = self._func(*arguments)
552 if autoescape:
553 rv = Markup(rv)
<template> in template()
/usr/local/lib/python2.7/site-packages/jinja2/runtime.pyc in _invoke(self, arguments, autoescape)
549 def _invoke(self, arguments, autoescape):
550 """This method is being swapped out by the async implementation."""
--> 551 rv = self._func(*arguments)
552 if autoescape:
553 rv = Markup(rv)
<template> in template()
/usr/local/lib/python2.7/site-packages/jinja2/environment.pyc in getitem(self, obj, argument)
409 """Get an item or attribute of an object but prefer the item."""
410 try:
--> 411 return obj[argument]
412 except (AttributeError, TypeError, LookupError):
413 if isinstance(argument, string_types):
UndefinedError: dict object has no element Undefined
In [20]:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment