From 04a1e6a3b9903bb7544f0874ff50ca06d704b458 Mon Sep 17 00:00:00 2001
From: Arnaud Fontaine <arnaud.fontaine@nexedi.com>
Date: Thu, 4 Nov 2010 06:19:28 +0000
Subject: [PATCH] When importing all the Property Sheets to ZODB, delete
 existing ones and perform a commit after each import, then redirect to
 portal_property_sheets.

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@39875 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ERP5Type/Tool/PropertySheetTool.py | 26 ++++++++++++++--------
 1 file changed, 17 insertions(+), 9 deletions(-)

diff --git a/product/ERP5Type/Tool/PropertySheetTool.py b/product/ERP5Type/Tool/PropertySheetTool.py
index e6644f5f0c..609ce663ef 100644
--- a/product/ERP5Type/Tool/PropertySheetTool.py
+++ b/product/ERP5Type/Tool/PropertySheetTool.py
@@ -27,6 +27,8 @@
 #
 ##############################################################################
 
+import transaction
+
 from AccessControl import ClassSecurityInfo
 from Products.ERP5Type.Tool.BaseTool import BaseTool
 from Products.ERP5Type import Permissions
@@ -36,7 +38,7 @@ from Products.CMFCore.Expression import Expression
 from Products.ERP5Type.Base import Base, PropertyHolder
 from Products.ERP5Type.Utils import setDefaultClassProperties, setDefaultProperties
 
-from zLOG import LOG, ERROR, BLATHER
+from zLOG import LOG, ERROR, INFO
 
 class PropertySheetTool(BaseTool):
   """
@@ -109,7 +111,7 @@ class PropertySheetTool(BaseTool):
 
   security.declareProtected(Permissions.ManagePortal,
                             'createAllPropertySheetsFromFilesystem')
-  def createAllPropertySheetsFromFilesystem(self):
+  def createAllPropertySheetsFromFilesystem(self, REQUEST=None):
     """
     Create Property Sheets in portal_property_sheets from _all_
     filesystem Property Sheets
@@ -123,15 +125,21 @@ class PropertySheetTool(BaseTool):
       if name[0] == '_':
         continue
 
-      if name not in self.portal_property_sheets:
-        LOG("Tool.PropertySheetTool", BLATHER,
-            "Creating %s in portal_property_sheets" % repr(name))
+      if name in self.portal_property_sheets:
+        self.portal_property_sheets.deleteContent(name)
+        transaction.commit()
 
-        self.createPropertySheetFromFilesystemClass(klass)
+      LOG("Tool.PropertySheetTool", INFO,
+          "Creating %s in portal_property_sheets" % repr(name))
 
-      else:
-        LOG("Tool.PropertySheetTool", BLATHER,
-            "%s already exists in portal_property_sheets" % repr(name))
+      self.createPropertySheetFromFilesystemClass(klass)
+      transaction.commit()
+
+    if REQUEST is not None:
+      return self.REQUEST.RESPONSE.redirect(
+        '%s/view?portal_status_message=' \
+        'Property Sheets successfully imported from filesystem to ZODB.' % \
+        self.absolute_url())
 
   security.declareProtected(Permissions.AccessContentsInformation,
                             'exportPropertySheetToFilesystemDefinitionTuple')
-- 
2.30.9