[Zope] Get a reference to the latest transaction

Peter Bengtsson peter at fry-it.com
Wed Dec 13 09:59:04 EST 2006



Jonathan wrote:
> 
>> that doesn't get a particular transaction, it gets all the latest
>> ones. If I use that approach, how do I know that I get my particular
>> transaction and not some other concurrent one?
>>
> 
> If you want a specific user to be able to undo a specific transaction, 
> then you may be able do this by getting a transaction id (does 
> transaction_commit return a transaction id?) and then stuffing the 
> transaction id into a SESSION variable.
> 
Here's what I did:

import transaction
def changeSomething(self):
     self.foo = 1
     random_str = getRandomString()
     transaction.get().note(random_str)
     RESPONSE.redirect(self.absolute_url()+'?undonote=%s' %random_str)

Later it wasn't difficult to write a custom undo function that searches 
all undoable transactions' description for this random string and use 
manage_undo_transactions() with that knowledge.

Works really well now but need to test it on a larger scale.


> Jonathan
> 
> 
>> On 12/12/06, Jonathan <dev101 at magma.ca> wrote:
>>>
>>> ----- Original Message -----
>>> From: "Peter Bengtsson" <peter at fry-it.com>
>>> To: "Zope Generic List" <zope at zope.org>
>>> Sent: Tuesday, December 12, 2006 9:51 AM
>>> Subject: [Zope] Get a reference to the latest transaction
>>>
>>>
>>> > Is it possible? If so, how do I get a reference to the last/current
>>> > transaction that just happened within a method?
>>> > Pseudo code:
>>> >
>>> > class MyFolder(Folder):
>>> >    def manage_afterAdd(self):
>>> >           self.image_count = 0
>>> >    def addImage(self, imgdata, REQUEST):
>>> >           self.manage_addImage('someid', file=imgdata)
>>> >           self.image_count = self.image_count + 1
>>> >           url = self.absolute_url() + '?transactionid=%s' %
>>> > get_transaction().getId()
>>> >           REQUEST.RESPONSE.redirect(url)
>>> >
>>> > If I had that, I could then do the following in my template:
>>> >
>>> > <div tal:condition="request/transactionid|nothing">
>>> > Image uploaded.
>>> > <a tal:attributes="href
>>> > string:undoTransaction?transactionid=${request/transactionid}"
>>> > >Undo</a>
>>> > </div>
>>> >
>>> > Is it possible?
>>>
>>> You could have a look at manage_UndoForm and see how it gets the 
>>> transaction
>>> information.
>>>
>>>
>>> Jonathan
>>>
>>> _______________________________________________
>>> Zope maillist  -  Zope at zope.org
>>> http://mail.zope.org/mailman/listinfo/zope
>>> **   No cross posts or HTML encoding!  **
>>> (Related lists -
>>>  http://mail.zope.org/mailman/listinfo/zope-announce
>>>  http://mail.zope.org/mailman/listinfo/zope-dev )
>>>
>>
>>
>> -- 
>> Peter Bengtsson,
>> work www.fry-it.com
>> home www.peterbe.com
>> hobby www.issuetrackerproduct.com
>>
> 
> 

-- 
Peter Bengtsson,
work www.fry-it.com
home www.peterbe.com
hobby www.issuetrackerproduct.com


More information about the Zope mailing list