Interception de ConnectionStateError qui peut survenir lorsque des images sont suppri...
[Portfolio.git] / manipulation.py
index 43bd086..dcba20d 100755 (executable)
@@ -18,6 +18,7 @@ from types import StringTypes
 from math import ceil
 import transaction
 from ZODB.POSException import ConflictError
 from math import ceil
 import transaction
 from ZODB.POSException import ConflictError
+from ZODB.POSException import ConnectionStateError
 from zope.site.hooks import setSite
 from cStringIO import StringIO
 
 from zope.site.hooks import setSite
 from cStringIO import StringIO
 
@@ -57,11 +58,11 @@ class ImageQueueProcessorThread(threading.Thread) :
                        self._process(app)
                
                con = app._p_jar
                        self._process(app)
                
                con = app._p_jar
-               con.close()
-               #con.close()
+               try :
+                       con.close()
+               except ConnectionStateError, e :
+                       console.warn('ConnectionStateError raised before finished.')
                console.info('process finished.')
                console.info('process finished.')
-               #print con
-               #print con.transaction_manager
                
 
        def stop(self):
                
 
        def stop(self):
@@ -125,11 +126,8 @@ class ImageQueueProcessorThread(threading.Thread) :
                                pass
                        
                        p.tiles_available = 1
                                pass
                        
                        p.tiles_available = 1
-
-                       portal = app.unrestrictedTraverse(self.portal_path)
-                       ctool = portal.portal_catalog
-                       uid = '/'.join(p.getPhysicalPath())
-                       ctool.reindexObject(p, idxs=['tiles_available'], uid=uid)
+                       assert p._getCatalogTool()
+                       p.reindexObject(idxs=['tiles_available'])
                        transaction.commit()
 
                except ConflictError :
                        transaction.commit()
 
                except ConflictError :