[Zope] Updating auto incrementing counter in a propertysheet

Max Møller Rasmussen maxm@normik.dk
Tue, 24 Oct 2000 09:39:48 +0200


From: Bill Anderson [mailto:bill.anderson@libc.org]

>Is it more important that they be in an order, or that they be in a
>specific sequential list?

Actually what is important is that they are integers and in a specific
order. So the datestamp method isn't that feasible for me.

(I'm trying to make a "fake tree" for a diskussion product.)

It is really easy to implement and doesn't use recursion, so traversing the
tree is done with a simple for loop.

It uses a dictionary with tupples as keys to emulate the recursive
structure. Simple example here if anybody cares.


-------------------------

class fakeTree:
    def __init__(self):
        #create tree and insert root element
        self.treeKeys = {}
        self.treeKeys[0] = (0,)
        self.tree = {}
        self.tree[(0,)] = ''
        
    def insert(self, id, parent, value):
        # create new key
        keyList = list(self.treeKeys[parent])
        newKeyList = keyList.append(id)
        newKeyTuple = tuple(newKeyList)
        self.treeKeys[id] = newKeyTuple
        # insert in tree with new tuple key
        self.tree[newKeyTuple] = value

    def print(self):
        sortedKeys = treeKeys.keys()
        sortedKeys.sort()
        spacesInIndent = 3
        for key in sortedKeys:
            print key
            print spacesInIndent * len(key) * ' ' + treeKeys[key]

tree = fakeTree()
tree.insert(1, 0, 'max m')
tree.insert(2, 0, 'gitte')
tree.insert(3, 1, 'magnus')
tree.print()