Source code for regulations.generator.layers.utils

from datetime import datetime
import re

import six


[docs]def convert_to_python(data): """Convert raw data (e.g. from json conversion) into the appropriate Python objects""" if isinstance(data, six.string_types): # Dates if re.match(r'^\d{4}-\d{2}-\d{2}$', data): return datetime.strptime(data, '%Y-%m-%d') if isinstance(data, dict): new_data = {} for key in data: new_data[key] = convert_to_python(data[key]) return new_data if isinstance(data, tuple): return tuple(map(convert_to_python, data)) if isinstance(data, list): return list(map(convert_to_python, data)) return data
[docs]def render_template(template, context): return template.render(context).strip('\n')
[docs]def is_contained_in(child, parent): ''' Return True if child is a child node of the parent. Node labels are hierarchical paths, with segments separated by '-'. As an edge case, a node label is also a child of itself. ''' child_segments = child.split('-') parent_segments = parent.split('-') return child_segments[:len(parent_segments)] == parent_segments