class Node(object): """ A base class representing a navigation or page node and providing some dictionary-like behavior for navigating the tree. """ def __init__(self): super(Node, self).__init__() self.children = SortedDict() def __getitem__(self, key): return self.children.__getitem__(key) def __iter__(self): return self.children.__iter__() def __setitem__(self, key, value): return self.children.__setitem__(key, value) def __unicode__(self): return self.title def keys(self): return self.children.keys() def values(self): return self.children.values() @property def is_leaf(self): return not bool(self.children)