From 8af6f8600cbb5d6f1aff5265b15add4a1023f694 Mon Sep 17 00:00:00 2001
From: Rafael Monnerat <rafael@nexedi.com>
Date: Thu, 11 Oct 2012 17:33:06 -0300
Subject: [PATCH] Simplify and clean up buildConfiguration

  - Simplify the code and Minor Optimization for sort
---
 .../Document/BusinessConfiguration.py         | 47 +++++--------------
 1 file changed, 12 insertions(+), 35 deletions(-)

diff --git a/product/ERP5Configurator/Document/BusinessConfiguration.py b/product/ERP5Configurator/Document/BusinessConfiguration.py
index 4022181555..f9028cb885 100644
--- a/product/ERP5Configurator/Document/BusinessConfiguration.py
+++ b/product/ERP5Configurator/Document/BusinessConfiguration.py
@@ -27,13 +27,10 @@
 #
 ##############################################################################
 
-import time
 from AccessControl import ClassSecurityInfo
 from Globals import PersistentMapping
 from Acquisition import aq_base
 from Products.ERP5Type import Permissions, PropertySheet
-from zLOG import LOG, INFO
-from cStringIO import StringIO
 
 from Products.ERP5Configurator.Tool.ConfiguratorTool import _validateFormToRequest
 from Products.ERP5.Document.Item import Item
@@ -262,19 +259,6 @@ class BusinessConfiguration(Item):
     form = getattr(self, self.getNextTransition().getTransitionFormId())
     return _validateFormToRequest(form, REQUEST, **kw)
 
-  #############
-  ## misc    ##
-  #############
-  security.declarePrivate('_getConfigurationStack')
-  def _getConfigurationStack(self):
-    """ Return list of created by client configuration save objects 
-        sort on id which is an integer. """
-    result = self.objectValues('ERP5 Configuration Save')
-    result = map(None, result)
-    result.sort(lambda x, y: cmp(x.getIntIndex(x.getIntId()),
-                                 y.getIntIndex(y.getIntId())))
-    return result
-
   security.declarePrivate('_getConfSaveForStateFromWorkflowHistory')
   def _getConfSaveForStateFromWorkflowHistory(self):
     """ Get from workflow history configuration save for this state """
@@ -282,8 +266,7 @@ class BusinessConfiguration(Item):
     current_state = self.getCurrentStateValue()
     transition = self.getNextTransition()
     next_state = self.unrestrictedTraverse(transition.getDestination())
-    workflow_history = current_state.getWorkflowHistory(self)
-    for wh in workflow_history:
+    for wh in current_state.getWorkflowHistory(self):
       if next_state == self.unrestrictedTraverse(wh['current_state']):
         configuration_save = self.unrestrictedTraverse(wh['configuration_save_url'])
     return configuration_save
@@ -339,12 +322,11 @@ class BusinessConfiguration(Item):
   security.declareProtected(Permissions.View, 'getGlobalConfigurationAttr')
   def getGlobalConfigurationAttr(self, key, default=None):
     """ Get global business configuration attribute. """
-    global_configuration_attributes = getattr(self, '_global_configuration_attributes', {})
-    return global_configuration_attributes.get(key, default)
+    return getattr(self, '_global_configuration_attributes', {}).get(key, default)
 
   ############# Instance and Business Configuration ########################
   security.declareProtected(Permissions.ModifyPortalContent, 'buildConfiguration')
-  def buildConfiguration(self, execute_after_setup_script=1):
+  def buildConfiguration(self):
     """ 
       Build list of business templates according to already saved 
       Configuration Saves (i.e. user input).
@@ -355,13 +337,13 @@ class BusinessConfiguration(Item):
               after_method_id=["updateBusinessTemplateFromUrl",
                                "recursiveImmediateReindexObject",
                                "immediateReindexObject"])
-    start = time.time()
-    LOG("CONFIGURATOR", INFO, 
-        'Build process started for %s' % self.getRelativeUrl())
     # build
-    for configuration_save in self._getConfigurationStack():
+    configuration_save_list = self.contentValues(portal_type='Configuration Save')
+    configuration_save_list.sort(lambda x, y: cmp(x.getIntIndex(x.getIntId()),
+                                                  y.getIntIndex(y.getIntId())))
+    for configuration_save in configuration_save_list:
       # XXX: check which items are configure-able
-      configuration_item_list = [x for x in configuration_save.contentValues()]
+      configuration_item_list = configuration_save.contentValues()
       configuration_item_list.sort(lambda x, y: cmp(x.getIntId(), y.getIntId()))
       for configurator_item in configuration_item_list:
         configurator_item.activate(**kw).build(self.getRelativeUrl())
@@ -369,16 +351,11 @@ class BusinessConfiguration(Item):
         kw["tag"] = "configurator_item_%s_%s" % (configurator_item.getId(),
                                                  configurator_item.getUid())
 
-    LOG('CONFIGURATOR', INFO, 
-        'Build process started for %s ended after %.02fs' % (self.getRelativeUrl(),
-                                                             time.time() - start))
-
-    if execute_after_setup_script:
-      kw["tag"] = "final_configuration_step_%s" % self.getId()
-      kw["after_method_id"] = ["build", 'immediateReindexObject', \
-                               "recursiveImmediateReindexObject"]
+    kw["tag"] = "final_configuration_step_%s" % self.getId()
+    kw["after_method_id"] = ["build", 'immediateReindexObject', \
+                             "recursiveImmediateReindexObject"]
 
-      self.activate(**kw).ERP5Site_afterConfigurationSetup()
+    self.activate(**kw).ERP5Site_afterConfigurationSetup()
 
     if self.portal_workflow.isTransitionPossible(self, 'install'):
       self.activate(after_tag=kw["tag"]).install()
-- 
2.30.9