Created
April 14, 2017 21:55
-
-
Save JohnTheodore/ee53d48fa9a72dbcc27344d3a8a1568f to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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