ola, the below will should work fine, although the _string.atoi is unesc since you can just use 0, or 1 by itself inside "" and have it treated as an int and its a bit inefficient to use objectValues over objectIds (list of objects vs. list of strings) although it saves you from having to do a dtml-let doc_id=sequence-item to evaluate in pythonish "" dtml although the code below makes it obvious it should also be stated that ids are strings. one caveat, i wouldn't count on the id naming sequence to nesc reflect the order of the items, as an item maybe deleted etc and have new ones created which replace them. if you've not going to be deleting items, another possibility is <dtml-call "REQUEST.set(id, _.str(_.len(objectIds(['DTML Document'])+1))"> another caveat, in a heavily hit site you're going to be generating id errors(both methods) because one thread will commit a new doc while the other tries a moment later to commit with the same id. hence the reason why i would just use a random int like <dtml-call "REQUEST.set(id, _.str(_.whrandom.randint(0,1000000))"> kapil jensebaer wrote:
Hi,
it is not tested but may it works
<dtml-call "REQUEST.set('newid', _.string.atoi('0'))" <dtml-in "objectValues('DTML Document')"> <dtml-if "_.int(id) >= newid"> <dtml-call "REQUEST.set('newid', _.int(id) + _.string.atoi('1'))"> </dtml-if> </dtml-in>
Your new id is: <dtml-var newid>
may you have to use _.string.atoi(id) instead _.int(id)
Viel Glück
Jens
----- Original Message ----- From: "Patrick Koetter" <p@state-of-mind.de> To: <zope@zope.org> Sent: Monday, October 16, 2000 2:59 AM Subject: [Zope] NEWBIE: assign next free ID automatically
Hi,
I've been through the Guides, How-Tos and also some of the list-archives. Though I am not a programmer I finally decided to ask that question to all of you...
I want to give Users the possibility to add documents in a folder <things_to_do> ;-). so far so good ... Then I want to control the IDs simply by assigning an ID to their Form. I found a few articles generating either randomIDs or calculating IDs from ZopeTime().
What is it that I want to do? I want to evaluate the highest ID (all are 'int') within the folder and assign the next highest. I'm sure this is easy to you...
If there's a RTFM-document I'd be glad to read that.
thanks,
p@rick
_______________________________________________ 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 )
_______________________________________________ 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 )