I'm writing a simple ZClass (and a second ZClass which contains the first) and I would like the constructor for this class to be able to auto-generate unique IDs for the instances rather than making the owner choose one. What I've tried isn't working, but I don't really know what I'm doing here...I figure this must be a fairly common problem, so what is the best way to handle it? The ID needs only be unique within its container object (i.e., doesn't have to be globally unique). I have full control over the container class, so solutions involving setting properties on that class are OK. TIA, -- Tim Moore
Using time is very common eg _.str(_.int(ZopeTime)), or I did a HowTo on using FSCounter to do this: http://www.zope.org/Members/andym/FSCounter/unique_ids -- Andy McKay. ----- Original Message ----- From: "Tim Moore" <tmoore@tembel.org> To: <zope@zope.org> Sent: Thursday, January 25, 2001 2:55 PM Subject: [Zope] Unique ID generation
I'm writing a simple ZClass (and a second ZClass which contains the first) and I would like the constructor for this class to be able to auto-generate unique IDs for the instances rather than making the owner choose one. What I've tried isn't working, but I don't really know what I'm doing here...I figure this must be a fairly common problem, so what is the best way to handle it? The ID needs only be unique within its container object (i.e., doesn't have to be globally unique). I have full control over the container class, so solutions involving setting properties on that class are OK.
TIA, -- Tim Moore
_______________________________________________ Zope maillist - Zope@zope.org http://lists.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope-dev )
On 25 Jan 2001, Tim Moore wrote:
I'm writing a simple ZClass (and a second ZClass which contains the first) and I would like the constructor for this class to be able to auto-generate unique IDs for the instances rather than making the owner choose one.
Some people call me "Tim" too. :-) Try adding the following to your ZClass add method: <dtml-call "REQUEST.set('ts', ZopeTime())"> <dtml-call "REQUEST.set('id', _.str(_.int(ts)))"> This will use the ZopeTime() as the id of your instance. I doubt you can add them faster enough to get the same one twice. :-) -Tim -- Tim Wilson | Visit Sibley online: | Check out: Henry Sibley HS | http://www.isd197.k12.mn.us/ | http://www.zope.org/ W. St. Paul, MN | | http://slashdot.org/ wilson@visi.com | <dtml-var pithy_quote> | http://linux.com/
On Thu, 25 Jan 2001, Timothy Wilson wrote:
Try adding the following to your ZClass add method:
<dtml-call "REQUEST.set('ts', ZopeTime())"> <dtml-call "REQUEST.set('id', _.str(_.int(ts)))">
This will use the ZopeTime() as the id of your instance. I doubt you can add them faster enough to get the same one twice. :-)
When you add instances programatically, than you can add 2 in 1 second without doubt. I use this python code: def genId(client, namespace, prefix=''): no=int(client.ZopeTime()) while namespace.hasattr(client, prefix+str(no)): no=no+1 return prefix+str(no) ololo@zeus.polsl.gliwice.pl, oleks@helper.pl /--------------------------------------\ | `long long long' is too long for GCC | \--------------------------------------/
participants (4)
-
Aleksander Salwa -
Andy McKay -
Tim Moore -
Timothy Wilson