Back to index

plone3  3.1.7
locking.py
Go to the documentation of this file.
00001 ##################################################################
00002 #
00003 # (C) Copyright 2006-2007 ObjectRealms, LLC
00004 # All Rights Reserved
00005 #
00006 # This file is part of iterate.
00007 #
00008 # iterate is free software; you can redistribute it and/or modify
00009 # it under the terms of the GNU General Public License as published by
00010 # the Free Software Foundation; either version 2 of the License, or
00011 # (at your option) any later version.
00012 #
00013 # iterate is distributed in the hope that it will be useful,
00014 # but WITHOUT ANY WARRANTY; without even the implied warranty of
00015 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00016 # GNU General Public License for more details.
00017 #
00018 # You should have received a copy of the GNU General Public License
00019 # along with CMFDeployment; if not, write to the Free Software
00020 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00021 ##################################################################
00022 """
00023 $Id: locking.py 1824 2007-02-08 17:59:41Z hazmat $
00024 """
00025 
00026 from plone.locking.interfaces import ILockable
00027 from plone.app.iterate import lock
00028 
00029 def handleWCDeleted( event ):
00030     # may be called multiple times, must be reentrant
00031     lock.unlockContext( event.baseline )
00032     # we reindex to force a metadata update
00033     event.baseline.reindexObject( idxs=['review_state'] )
00034     
00035 def handleCheckout( event ):
00036     lock.lockContext( event.object )
00037     event.object.reindexObject( idxs=['review_state'] )
00038     
00039 def handleCheckin( event ):
00040     lockable = ILockable( event.object )
00041     if lockable.locked():
00042         # unlock working copy if it was auto-locked, or this will fail
00043         lockable.clear_locks()
00044     
00045 def handleCancelCheckout( event ):
00046     lockable = ILockable( event.object )
00047     if lockable.locked():
00048         # unlock working copy if it was auto-locked, or this will fail
00049         lockable.clear_locks()
00050     lock.unlockContext( event.baseline )
00051     event.baseline.reindexObject( idxs=['review_state'] )    
00052         
00053