
"mptt.utils"
************

Utilities for working with lists of model instances which represent
trees.

mptt.utils.previous_current_next(items)

   From http://www.wordaligned.org/articles/zippy-triples-served-with-
   python

   Creates an iterator which returns (previous, current, next)
   triples, with "None" filling in when there is no previous or next
   available.

mptt.utils.tree_item_iterator(items, ancestors=False)

   Given a list of tree items, iterates over the list, generating two-
   tuples of the current tree item and a "dict" containing information
   about the tree structure around the item, with the following keys:

      "'new_level'"
         "True" if the current item is the start of a new level in the
         tree, "False" otherwise.

      "'closed_levels'"
         A list of levels which end after the current item. This will
         be an empty list if the next item is at the same level as the
         current item.

   If "ancestors" is "True", the following key will also be available:

      "'ancestors'"
         A list of unicode representations of the ancestors of the
         current node, in descending order (root node first, immediate
         parent last).

         For example: given the sample tree below, the contents of the
         list which would be available under the "'ancestors'" key are
         given on the right:

            Books                    ->  []
               Sci-fi                ->  [u'Books']
                  Dystopian Futures  ->  [u'Books', u'Sci-fi']

mptt.utils.drilldown_tree_for_node(node, rel_cls=None, rel_field=None, count_attr=None, cumulative=False)

   Creates a drilldown tree for the given node. A drilldown tree
   consists of a node's ancestors, itself and its immediate children,
   all in tree order.

   Optional arguments may be given to specify a "Model" class which is
   related to the node's class, for the purpose of adding related item
   counts to the node's children:

   "rel_cls"
      A "Model" class which has a relation to the node's class.

   "rel_field"
      The name of the field in "rel_cls" which holds the relation to
      the node's class.

   "count_attr"
      The name of an attribute which should be added to each child in
      the drilldown tree, containing a count of how many instances of
      "rel_cls" are related through "rel_field".

   "cumulative"
      If "True", the count will be for each child and all of its
      descendants, otherwise it will be for each child itself.
