[Zope-dev] FW: Zope optimistic transactions.

2001-11-30 Thread Clark OBrien



  -Original Message-
 From: Clark OBrien  
 Sent: Monday, November 05, 2001 7:14 AM
 To:   '[EMAIL PROTECTED]'; '[EMAIL PROTECTED]'
 Cc:   '[EMAIL PROTECTED]'
 Subject:  Zope  optimistic transactions.
 
 
 Chris,
 I set up a test harness to exercise zopes optimistic transaction
 management.
 My test immediatly caused a ZODB exception.
 
 I am running zope 2.42. on win 2k, the scripts are attached.
 Results below:
 
 As you recall I posed the following question:
 
 What if you had a directory structure like:
 Folder1
 Folder-2
Folder-3
   ...
 ..
 Folder-n
 Each folder had an attribute foo and there were two scripts, script1 and
 script2. 
 script1 modified foo on one Folder only while script2 traversed all the
 folders modifying the attribute foo on each one of them.
 Would the script2 ever commit while the fist while script1 was
 continuously called. This is interesting because a call to  script2 would
 never finish before several calls to  script1 finished.
 
 I set up a simple test with only 10 folders. I then wrote the script below
 changeLevel2 that is my scri1 above and changeFolders that is my script2
 above.
 I ran changeLevel2 in a loop using the following code:
 script
 ---
 import urllib
 params = urllib.urlencode({'theText': 'Vitamin D'})
 while 1:
  f = urllib.urlopen(http://localhost:8080/Test/changeLevel2?%s; % params)
  print f.read()
 -script---
 -
 
 
 I then ran the script changeFolders from my browsers.
 The result was the following error message:
 
 
 ZODB.POSException.ConflictError
 
 Sorry, a site error occurred.
 
 Traceback (innermost last):
   File C:\zope\lib\python\ZPublisher\Publish.py, line 223, in
 publish_module
   File C:\zope\lib\python\ZPublisher\Publish.py, line 200, in publish
   File C:\zope\lib\python\ZPublisher\Publish.py, line 200, in publish
   File C:\zope\lib\python\ZPublisher\Publish.py, line 200, in publish
   File C:\zope\lib\python\ZPublisher\Publish.py, line 195, in publish
 --
 
 
 
  scripts.txt 


-changeFolder 
--
#changeFolder
#params list:  theFolder,theText

theFolder.manage_changeProperties({'foo':theText})

--end 
changeFolder---




---changeFolders--
#changeFolders
#Paramater list: myString
# this method changes the attribute foo on several folders.


newFolder = context.getChild(TestFolder )
newFolder.manage_changeProperties({'foo':myString})
import string 

for i in range(1,10):
 newFolder = newFolder.getChild(TestFolder )
 for i in range(1,10):
  # lets do something expansive
  #for j in range(1,100):
   #string.find(its a great day to code python,day)
  newFolder.manage_changeProperties({'foo':myString})


return all properties changed
--end 
changeFolders

-changeLevel2
#changeLevel2
#paramater list: theText
theFolder = context.getChild(TestFolder )
context.changeFolder(theFolder,theText)
return 'ok'
-end 
changeLevel2




-createFolders---
temp = context.manage_addFolder('TestFolder','TestFolder')
newFolder = context.getChild(TestFolder )
newFolder.manage_addProperty(foo,this is a test string, string)

for i in range(1,10):
 newFolder.manage_addFolder(TestFolder,TestFolder)
 newFolder = newFolder.getChild(TestFolder )
 newFolder.manage_addProperty(foo,this is a test string, string)
end createFolders 
---

-getChild---
#getChild
#param list: child


getChild: Utility function

Returns ObjectManagerItem whose ID matches child parameter.
Context must be ObjectManager.

for (oid, obj) in context.objectItems():
if oid == child:
return obj
else:
return None
end getChild 
-

makeNewFolder-
#makeNewFolder
#param list: root

root.manage_addFolder('TestFolder','TestFolder')
root.manage_addProperty('foo','The world is round only to those who know

[Zope-dev] login prompt after letting user change his password.

2001-10-25 Thread Clark OBrien


Hi all
I have written some code to alow a user to change his password (below)

The problem is that after executing this code  the login dialog pops up.

The login requires the user to enter his NEW password.


container.REQUEST.set('roles',request.AUTHENTICATED_USER.getRoles())
container.REQUEST.set('domains',request.AUTHENTICATED_USER.getDomains())
container.REQUEST.set('name',request.AUTHENTICATED_USER.getUserName())
container.REQUEST.set('password',request['new_password'])
container.REQUEST.set('confirm',request['new_password_confirm'])
context.acl_users.manage_users('Change',container.REQUEST)
context.REQUEST.RESPONSE.redirect(changepwd?status=ok)

___
Zope-Dev maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope )