Fellow Zopers.
I have made a slight modification to my intid util by inheriting from IntId and overriding _generateId(). I do this to be sure that all new created objects will have an incrementing number where the first object created gets id 1, the next gets id 2 and so on.  This way I get for "free" sorting by

class MyIntIds(IntId):
     # We need a non-volatile nextid
     nextid = None

     def _generateId(self):
         # In the unlikely event that the nextid already
         # exists, we run this in a while loop to fix it.
         while True:
             if len(self) == 0:
                 self.nextid = 1
             elif self.nextid is None:
                 self.nextid = self.refs.maxKey() + 1
             uid = self.nextid
             self.nextid += 1
             if uid not in self.refs:
                 return uid
             # Normally we would never get here..
             self.nextid = None

What do you think about this? Is it "safe" to do this, or have i forgotten any unforseen oddities
that might occur in the future :O

Zope3-users mailing list

Reply via email to