[Erp5-report] r24282 - in /erp5/trunk/products: ERP5/Tool/IdTool.py ERP5Catalog/CatalogTool.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Wed Oct 22 11:08:24 CEST 2008
Author: vincent
Date: Wed Oct 22 11:08:21 2008
New Revision: 24282
URL: http://svn.erp5.org?rev=24282&view=rev
Log:
Add a method on IdTool to dump all ids from table and store them in ZODB (persistent mapping on portal_ids).
Call that method before clearing catalog.
Modified:
erp5/trunk/products/ERP5/Tool/IdTool.py
erp5/trunk/products/ERP5Catalog/CatalogTool.py
Modified: erp5/trunk/products/ERP5/Tool/IdTool.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Tool/IdTool.py?rev=24282&r1=24281&r2=24282&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Tool/IdTool.py (original)
+++ erp5/trunk/products/ERP5/Tool/IdTool.py Wed Oct 22 11:08:21 2008
@@ -147,6 +147,32 @@
if getattr(self, 'dict_length_ids', None) is None:
self.dict_length_ids = PersistentMapping()
return self.dict_length_ids.items()
+
+ security.declarePrivate('dumpDictLengthIdsItems')
+ def dumpDictLengthIdsItems(self):
+ """
+ Store persistently data from SQL table portal_ids.
+ """
+ portal_catalog = getToolByName(self, 'portal_catalog').getSQLCatalog()
+ query = getattr(portal_catalog, 'z_portal_ids_dump')
+ dict_length_ids = getattr(self, 'dict_length_ids', None)
+ if dict_length_ids is None:
+ dict_length_ids = self.dict_length_ids = PersistentMapping()
+ for line in query().dictionaries():
+ id_group = line['id_group']
+ last_id = line['last_id']
+ stored_last_id = self.dict_length_ids.get(id_group)
+ if stored_last_id is None:
+ self.dict_length_ids[id_group] = Length(last_id)
+ else:
+ stored_last_id_value = stored_last_id()
+ if stored_last_id_value < last_id:
+ stored_last_id.set(last_id)
+ else:
+ if stored_last_id_value > last_id:
+ LOG('IdTool', WARNING, 'ZODB value (%r) for group %r is higher ' \
+ 'than SQL value (%r). Keeping ZODB value untouched.' % \
+ (stored_last_id, id_group, last_id))
security.declareProtected(Permissions.AccessContentsInformation,
'getLastLengthGeneratedId')
Modified: erp5/trunk/products/ERP5Catalog/CatalogTool.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Catalog/CatalogTool.py?rev=24282&r1=24281&r2=24282&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Catalog/CatalogTool.py (original)
+++ erp5/trunk/products/ERP5Catalog/CatalogTool.py Wed Oct 22 11:08:21 2008
@@ -632,10 +632,7 @@
"""
id_tool = self.getPortalObject().portal_ids
try:
- # Call generate new id in order to store the last id into
- # the zodb
- id_tool.generateNewLengthId(id_group='portal_activity')
- id_tool.generateNewLengthId(id_group='portal_activity_queue')
+ id_tool.dumpDictLengthIdsItems()
except ConflictError:
raise
except:
More information about the Erp5-report
mailing list