[Zope3-Users] Modified IntId utility
Frank Burkhardt
fbo2 at gmx.net
Tue Sep 25 03:27:49 EDT 2007
Hi,
On Mon, Sep 24, 2007 at 06:53:58PM +0200, Maken Seteva wrote:
> 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
> oldest/newest.
>
>
> 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
I'm using a modified IntId utility which starts IDs at 1 and counts upwards, too.
I needed some permanent link for each object which was easy to implement via IntId.
The modification was made to safe keystrokes when typing the permalink. Typing
http://server/~251 is a lot easier than http://server/~344357462 :-) .
However, I don't use those IDs for anything else - like sorting.
Regards,
Frank
More information about the Zope3-users
mailing list