[Erp5-report] r8081 - /erp5/trunk/products/ERP5/ERP5Site.py

nobody at svn.erp5.org nobody at svn.erp5.org
Tue Jun 20 11:37:45 CEST 2006


Author: kevin
Date: Tue Jun 20 11:37:42 2006
New Revision: 8081

URL: http://svn.erp5.org?rev=8081&view=rev
Log:
Add ZMySQLDA deferred connection.
Force installation of activities.
Setup last tool at the very end of the setup process.
Code clean-up.

Modified:
    erp5/trunk/products/ERP5/ERP5Site.py

Modified: erp5/trunk/products/ERP5/ERP5Site.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/ERP5Site.py?rev=8081&r1=8080&r2=8081&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/ERP5Site.py (original)
+++ erp5/trunk/products/ERP5/ERP5Site.py Tue Jun 20 11:37:42 2006
@@ -36,7 +36,8 @@
 from string import join
 
 import os
-MARKER=[]
+MARKER = []
+
 
 
 # Site Creation DTML
@@ -44,52 +45,71 @@
 manage_addERP5SiteForm.__name__ = 'addERP5Site'
 
 # ERP5Site Constructor
-def manage_addERP5Site(self, id, title='ERP5', description='',
-                         create_userfolder=1,
-                         create_activities=1,
-                         email_from_address='postmaster at localhost',
-                         email_from_name='Portal Administrator',
-                         validate_email=0,
-                         erp5_sql_connection_type='Z MySQL Database Connection',
-                         erp5_sql_connection_string='test test',
-                         cmf_activity_sql_connection_type='Z MySQL Database Connection',
-                         cmf_activity_sql_connection_string='test test',
-                         light_install=0,reindex=1,
-                         RESPONSE=None):
+def manage_addERP5Site( self
+                      , id
+                      , title                               = 'ERP5'
+                      , description                         = ''
+                      , create_userfolder                   = 1
+                      , create_activities                   = 1
+                      , email_from_address                  = 'postmaster at localhost'
+                      , email_from_name                     = 'Portal Administrator'
+                      , validate_email                      = 0
+                      , erp5_sql_connection_type            = 'Z MySQL Database Connection'
+                      , erp5_sql_connection_string          = 'test test'
+                      , erp5_sql_deferred_connection_type   = 'Z MySQL Deferred Database Connection'
+                      , erp5_sql_deferred_connection_string = 'test test'
+                      , cmf_activity_sql_connection_type    = 'Z MySQL Database Connection'
+                      , cmf_activity_sql_connection_string  = 'test test'
+                      , reindex                             = 1
+                      , RESPONSE                            = None
+                      ):
   """
     Adds a portal instance.
   """
-  #LOG('manage_addERP5Site, create_activities',0,create_activities)
-  #LOG('manage_addERP5Site, create_activities==1',0,create_activities==1)
   gen = ERP5Generator()
-  from string import strip
-  id = strip(id)
-  p = gen.create(self, id, create_userfolder,
-                  erp5_sql_connection_type,erp5_sql_connection_string,
-                  cmf_activity_sql_connection_type,cmf_activity_sql_connection_string,
-                  create_activities=create_activities,light_install=light_install,
-                  reindex=reindex)
-  gen.setupDefaultProperties(p, title, description,
-                              email_from_address, email_from_name,
-                              validate_email)
+  id = str(id).strip()
+  p = gen.create( self
+                , id
+                , create_userfolder
+                , erp5_sql_connection_type
+                , erp5_sql_connection_string
+                , erp5_sql_deferred_connection_type
+                , erp5_sql_deferred_connection_string
+                , cmf_activity_sql_connection_type
+                , cmf_activity_sql_connection_string
+                , create_activities
+                , reindex
+                )
+  gen.setupDefaultProperties( p
+                            , title
+                            , description
+                            , email_from_address
+                            , email_from_name
+                            , validate_email
+                            )
   if RESPONSE is not None:
-      RESPONSE.redirect(p.absolute_url())
-
-class ERP5Site ( FolderMixIn, CMFSite ):
+    RESPONSE.redirect(p.absolute_url())
+
+
+
+class ERP5Site(FolderMixIn, CMFSite):
   """
     The *only* function this class should have is to help in the setup
-    of a new ERP5.  It should not assist in the functionality at all.
+    of a new ERP5. It should not assist in the functionality at all.
   """
-  meta_type = 'ERP5 Site'
+  meta_type    = 'ERP5 Site'
   constructors = (manage_addERP5SiteForm, manage_addERP5Site, )
-  uid = 0
-  last_id = 0
-  icon = 'portal.gif'
-
-  _properties = (
-      {'id':'title', 'type':'string'},
-      {'id':'description', 'type':'text'},
-      )
+  uid          = 0
+  last_id      = 0
+  icon         = 'portal.gif'
+
+  _properties = ( { 'id'  : 'title'
+                  , 'type': 'string'
+                  }
+                , { 'id'  : 'description'
+                  , 'type': 'text'
+                  }
+                )
   title = ''
   description = ''
 
@@ -97,29 +117,35 @@
   security = ClassSecurityInfo()
   security.declareObjectProtected(Permissions.AccessContentsInformation)
 
+
   security.declareProtected(Permissions.View, 'view')
   def view(self):
-      """
-        Returns the default view.
-        Implemented for consistency
-      """
-      return self.index_html()
+    """
+      Returns the default view.
+      Implemented for consistency
+    """
+    return self.index_html()
+
 
   def hasObject(self, id):
-    """Check if the portal has an id.
+    """
+      Check if the portal has an id.
     """
     return id in self.objectIds()
+
 
   security.declareProtected(Permissions.AccessContentsInformation, 'getPortalObject')
   def getPortalObject(self):
     return self
 
+
   security.declareProtected(Permissions.AccessContentsInformation, 'getTitle')
   def getTitle(self):
     """
       Return the title.
     """
     return self.title
+
 
   security.declareProtected(Permissions.AccessContentsInformation, 'getUid')
   def getUid(self):
@@ -130,9 +156,8 @@
 
       WARNING : must be updates for circular references issues
     """
-    #if not hasattr(self, 'uid'):
-    #  self.reindexObject()
     return getattr(self, 'uid', 0)
+
 
   security.declareProtected(Permissions.AccessContentsInformation, 'getParentUid')
   def getParentUid(self):
@@ -140,23 +165,27 @@
       A portal has no parent
     """
     return self.getUid()
+
 
   # Required to allow content creation outside folders
   security.declareProtected(Permissions.View, 'getIdGroup')
   def getIdGroup(self):
     return None
 
+
   # Required to allow content creation outside folders
   security.declareProtected(Permissions.ModifyPortalContent, 'setLastId')
   def setLastId(self, id):
     self.last_id = id
 
+
   security.declareProtected(Permissions.AccessContentsInformation, 'getPath')
   def getPath(self, REQUEST=None):
     """
       Returns the absolute path of an object
     """
     return join(self.getPhysicalPath(),'/')
+
 
   security.declareProtected(Permissions.AccessContentsInformation, 'searchFolder')
   def searchFolder(self, **kw):
@@ -167,16 +196,15 @@
     if not kw.has_key('parent_uid'):
       kw['parent_uid'] = self.uid
     kw2 = {}
-    # Remove useless matter before calling the
-    # catalog. In particular, consider empty
-    # strings as None values
+    # Remove useless matter before calling the catalog. In particular, consider empty
+    #   strings as None values.
     for cname in kw.keys():
-      if kw[cname] != '' and kw[cname]!=None:
+      if kw[cname] not in ('', None):
         kw2[cname] = kw[cname]
-    # The method to call to search the folder
-    # content has to be called z_search_folder
+    # The method to call to search the folder content has to be called z_search_folder.
     method = self.portal_catalog.searchResults
     return method(**kw2)
+
 
   security.declareProtected(Permissions.AccessContentsInformation, 'countFolder')
   def countFolder(self, **kw):
@@ -187,33 +215,27 @@
     if not kw.has_key('parent_uid'):
       kw['parent_uid'] = self.uid
     kw2 = {}
-    # Remove useless matter before calling the
-    # catalog. In particular, consider empty
-    # strings as None values
+    # Remove useless matter before calling the catalog. In particular, consider empty
+    #   strings as None values
     for cname in kw.keys():
-      if kw[cname] != '' and kw[cname]!=None:
+      if kw[cname] not in ('', None):
         kw2[cname] = kw[cname]
-    # The method to call to search the folder
-    # content has to be called z_search_folder
+    # The method to call to search the folder content has to be called z_search_folder.
     method = self.portal_catalog.countResults
     return method(**kw2)
+
 
   # Proxy methods for security reasons
   def getOwnerInfo(self):
     return self.owner_info()
 
-  # Make sure fixConsistency is recursive - ERROR - this creates recursion errors
-  # checkConsistency = Folder.checkConsistency
-  # fixConsistency = Folder.fixConsistency
 
   security.declarePublic('getOrderedGlobalActionList')
   def getOrderedGlobalActionList(self, action_list):
     """
-    Returns a dictionnary of actions, sorted by type of object
-
-    This should absolutely be rewritten by using clean concepts to separate worklists XXX
-    """
-    #LOG("getOrderedGlobalActionList", 0, str(action_list))
+      Returns a dictionnary of actions, sorted by type of object.
+      TODO: This should absolutely be rewritten by using clean concepts to separate worklists.
+    """
     sorted_workflow_actions = {}
     sorted_global_actions = []
     other_global_actions = []
@@ -234,17 +256,19 @@
     sorted_global_actions.extend(other_global_actions)
     return sorted_global_actions
 
+
   def setupDefaultProperties(self, p, title, description,
                               email_from_address, email_from_name,
                               validate_email
                               ):
-      CMFSite.setupDefaultProperties(self, p, title, description,
-                              email_from_address, email_from_name,
-                              validate_email)
+    CMFSite.setupDefaultProperties(self, p, title, description,
+                            email_from_address, email_from_name,
+                            validate_email)
+
 
   # Portal methods are based on the concept of having portal-specific parameters
-  # for customization. In the past, we used global parameters, but it was not very good
-  # because it was very difficult to customize the settings for each portal site.
+  #   for customization. In the past, we used global parameters, but it was not very good
+  #   because it was very difficult to customize the settings for each portal site.
   def _getPortalConfiguration(self, id):
     """
       Get a portal-specific configuration.
@@ -261,8 +285,10 @@
     # Fall back to the default.
     return getattr(ERP5Defaults, id, None)
 
+
   def _getPortalGroupedTypeList(self, group):
-    """Return a list of portal types classified to a specific group.
+    """
+      Return a list of portal types classified to a specific group.
     """
     def getTypeList(group):
       type_list = []
@@ -271,12 +297,16 @@
           type_list.append(pt.getId())
       return tuple(type_list)
 
-    getTypeList = CachingMethod(getTypeList,
-        id=('_getPortalGroupedTypeList', group), cache_duration=3600)
+    getTypeList = CachingMethod( getTypeList
+                               , id             = ('_getPortalGroupedTypeList', group)
+                               , cache_duration = 3600
+                               )
     return getTypeList(group)
 
+
   def _getPortalGroupedCategoryList(self, group):
-    """Return a list of base categories classified to a specific group.
+    """
+      Return a list of base categories classified to a specific group.
     """
     def getCategoryList(group):
       category_list = []
@@ -285,12 +315,16 @@
           category_list.append(bc.getId())
       return tuple(category_list)
 
-    getCategoryList = CachingMethod(getCategoryList,
-          id=('_getPortalGroupedCategoryList', group), cache_duration=3600)
+    getCategoryList = CachingMethod( getCategoryList
+                                   , id             = ('_getPortalGroupedCategoryList', group)
+                                   , cache_duration = 3600
+                                   )
     return getCategoryList(group)
 
+
   def _getPortalGroupedStateList(self, group):
-    """Return a list of workflow states classified to a specific group.
+    """
+      Return a list of workflow states classified to a specific group.
     """
     def getStateList(group):
       state_dict = {}
@@ -301,12 +335,15 @@
               state_dict[state.getId()] = None
       return tuple(state_dict.keys())
 
-    getStateList = CachingMethod(getStateList,
-        id=('_getPortalGroupedStateList', group), cache_duration=3600)
+    getStateList = CachingMethod( getStateList
+                                , id             = ('_getPortalGroupedStateList', group)
+                                , cache_duration = 3600
+                                )
     return getStateList(group)
 
-  security.declareProtected(Permissions.AccessContentsInformation,
-                            'getPortalDefaultSectionCategory')
+
+  security.declareProtected( Permissions.AccessContentsInformation
+                           , 'getPortalDefaultSectionCategory')
   def getPortalDefaultSectionCategory(self):
     """
       Return a default section category. This method is deprecated.
@@ -314,13 +351,12 @@
     LOG('ERP5Site', 0, 'getPortalDefaultSectionCategory is deprecated;'+
         ' use portal_preferences.getPreferredSectionCategory instead.')
     section_category = self.portal_preferences.getPreferredSectionCategory()
-
     # XXX This is only for backward-compatibility.
     if not section_category:
       section_category = self._getPortalConfiguration(
                                 'portal_default_section_category')
-
     return section_category
+
 
   security.declareProtected(Permissions.AccessContentsInformation,
                             'getPortalResourceTypeList')
@@ -328,8 +364,9 @@
     """
       Return resource types.
     """
-    return self._getPortalGroupedTypeList('resource') or\
-            self._getPortalConfiguration('portal_resource_type_list')
+    return self._getPortalGroupedTypeList('resource') or \
+           self._getPortalConfiguration('portal_resource_type_list')
+
 
   security.declareProtected(Permissions.AccessContentsInformation,
                             'getPortalSubVariationTypeList')
@@ -339,6 +376,7 @@
     """
     return self._getPortalGroupedTypeList('sub_variation')
 
+
   security.declareProtected(Permissions.AccessContentsInformation,
                             'getPortalSubVariationBaseCategoryList')
   def getPortalSubVariationBaseCategoryList(self):
@@ -347,14 +385,16 @@
     """
     return self._getPortalGroupedCategoryList('sub_variation')
 
+
   security.declareProtected(Permissions.AccessContentsInformation,
                             'getPortalVariationTypeList')
   def getPortalVariationTypeList(self):
     """
       Return variation types.
     """
-    return self._getPortalGroupedTypeList('variation') or\
-            self._getPortalConfiguration('portal_variation_type_list')
+    return self._getPortalGroupedTypeList('variation') or \
+           self._getPortalConfiguration('portal_variation_type_list')
+
 
   security.declareProtected(Permissions.AccessContentsInformation,
                             'getPortalNodeTypeList')
@@ -362,8 +402,9 @@
     """
       Return node types.
     """
-    return self._getPortalGroupedTypeList('node') or\
-            self._getPortalConfiguration('portal_node_type_list')
+    return self._getPortalGroupedTypeList('node') or \
+           self._getPortalConfiguration('portal_node_type_list')
+
 
   security.declareProtected(Permissions.AccessContentsInformation,
                             'getPortalPaymentNodeTypeList')
@@ -371,8 +412,9 @@
     """
       Return payment node types.
     """
-    return self._getPortalGroupedTypeList('payment_node') or\
-            self._getPortalConfiguration('portal_payment_node_type_list')
+    return self._getPortalGroupedTypeList('payment_node') or \
+           self._getPortalConfiguration('portal_payment_node_type_list')
+
 
   security.declareProtected(Permissions.AccessContentsInformation,
                             'getPortalInvoiceTypeList')
@@ -380,8 +422,9 @@
     """
       Return invoice types.
     """
-    return self._getPortalGroupedTypeList('invoice') or\
-            self._getPortalConfiguration('portal_invoice_type_list')
+    return self._getPortalGroupedTypeList('invoice') or \
+           self._getPortalConfiguration('portal_invoice_type_list')
+
 
   security.declareProtected(Permissions.AccessContentsInformation,
                             'getPortalOrderTypeList')
@@ -389,8 +432,9 @@
     """
       Return order types.
     """
-    return self._getPortalGroupedTypeList('order') or\
-            self._getPortalConfiguration('portal_order_type_list')
+    return self._getPortalGroupedTypeList('order') or \
+           self._getPortalConfiguration('portal_order_type_list')
+
 
   security.declareProtected(Permissions.AccessContentsInformation,
                             'getPortalDeliveryTypeList')
@@ -398,8 +442,9 @@
     """
       Return delivery types.
     """
-    return self._getPortalGroupedTypeList('delivery') or\
-            self._getPortalConfiguration('portal_delivery_type_list')
+    return self._getPortalGroupedTypeList('delivery') or \
+           self._getPortalConfiguration('portal_delivery_type_list')
+
 
   security.declareProtected(Permissions.AccessContentsInformation,
                             'getPortalTransformationTypeList')
@@ -407,8 +452,9 @@
     """
       Return transformation types.
     """
-    return self._getPortalGroupedTypeList('transformation') or\
-            self._getPortalConfiguration('portal_transformation_type_list')
+    return self._getPortalGroupedTypeList('transformation') or \
+           self._getPortalConfiguration('portal_transformation_type_list')
+
 
   security.declareProtected(Permissions.AccessContentsInformation,
                             'getPortalVariationBaseCategoryList')
@@ -416,8 +462,9 @@
     """
       Return variation base categories.
     """
-    return self._getPortalGroupedCategoryList('variation') or\
-            self._getPortalConfiguration('portal_variation_base_category_list')
+    return self._getPortalGroupedCategoryList('variation') or \
+           self._getPortalConfiguration('portal_variation_base_category_list')
+
 
   security.declareProtected(Permissions.AccessContentsInformation,
                             'getPortalOptionBaseCategoryList')
@@ -425,8 +472,9 @@
     """
       Return option base categories.
     """
-    return self._getPortalGroupedCategoryList('option') or\
-            self._getPortalConfiguration('portal_option_base_category_list')
+    return self._getPortalGroupedCategoryList('option') or \
+           self._getPortalConfiguration('portal_option_base_category_list')
+
 
   security.declareProtected(Permissions.AccessContentsInformation,
                             'getPortalInvoiceMovementTypeList')
@@ -434,8 +482,9 @@
     """
       Return invoice movement types.
     """
-    return self._getPortalGroupedTypeList('invoice_movement') or\
-            self._getPortalConfiguration('portal_invoice_movement_type_list')
+    return self._getPortalGroupedTypeList('invoice_movement') or \
+           self._getPortalConfiguration('portal_invoice_movement_type_list')
+
 
   security.declareProtected(Permissions.AccessContentsInformation,
                             'getPortalOrderMovementTypeList')
@@ -443,8 +492,9 @@
     """
       Return order movement types.
     """
-    return self._getPortalGroupedTypeList('order_movement') or\
-            self._getPortalConfiguration('portal_order_movement_type_list')
+    return self._getPortalGroupedTypeList('order_movement') or \
+           self._getPortalConfiguration('portal_order_movement_type_list')
+
 
   security.declareProtected(Permissions.AccessContentsInformation,
                             'getPortalDeliveryMovementTypeList')
@@ -452,8 +502,9 @@
     """
       Return delivery movement types.
     """
-    return self._getPortalGroupedTypeList('delivery_movement') or\
-            self._getPortalConfiguration('portal_delivery_movement_type_list')
+    return self._getPortalGroupedTypeList('delivery_movement') or \
+           self._getPortalConfiguration('portal_delivery_movement_type_list')
+
 
   security.declareProtected(Permissions.AccessContentsInformation,
                               'getPortalSupplyTypeList')
@@ -461,8 +512,9 @@
     """
       Return supply types.
     """
-    return self._getPortalGroupedTypeList('supply') or\
-            self._getPortalConfiguration('portal_supply_type_list')
+    return self._getPortalGroupedTypeList('supply') or \
+           self._getPortalConfiguration('portal_supply_type_list')
+
 
   security.declareProtected(Permissions.AccessContentsInformation,
                               'getPortalSupplyPathTypeList')
@@ -470,8 +522,9 @@
     """
       Return supply movement types.
     """
-    return self._getPortalGroupedTypeList('supply_path') or\
-            self._getPortalConfiguration('portal_supply_path_type_list')
+    return self._getPortalGroupedTypeList('supply_path') or \
+           self._getPortalConfiguration('portal_supply_path_type_list')
+
 
   security.declareProtected(Permissions.AccessContentsInformation,
                             'getPortalAcquisitionMovementTypeList')
@@ -480,8 +533,9 @@
       Return acquisition movement types.
     """
     return tuple(list(self.getPortalOrderMovementTypeList()) +
-                  list(self.getPortalDeliveryMovementTypeList()) +
-                  list(self.getPortalInvoiceMovementTypeList()))
+                 list(self.getPortalDeliveryMovementTypeList()) +
+                 list(self.getPortalInvoiceMovementTypeList()))
+
 
   security.declareProtected(Permissions.AccessContentsInformation,
                             'getPortalMovementTypeList')
@@ -490,9 +544,10 @@
       Return movement types.
     """
     return tuple(list(self.getPortalOrderMovementTypeList()) +
-                  list(self.getPortalDeliveryMovementTypeList()) +
-                  list(self.getPortalInvoiceMovementTypeList()) +
+                 list(self.getPortalDeliveryMovementTypeList()) +
+                 list(self.getPortalInvoiceMovementTypeList()) +
                   ['Simulation Movement'])
+
 
   security.declareProtected(Permissions.AccessContentsInformation,
                             'getPortalSimulatedMovementTypeList')
@@ -500,8 +555,9 @@
     """
       Return simulated movement types.
     """
-    return tuple([x for x in self.getPortalMovementTypeList()\
+    return tuple([x for x in self.getPortalMovementTypeList() \
                     if x not in self.getPortalContainerTypeList()])
+
 
   security.declareProtected(Permissions.AccessContentsInformation,
                             'getPortalContainerTypeList')
@@ -509,8 +565,9 @@
     """
       Return container types.
     """
-    return self._getPortalGroupedTypeList('container') or\
-            self._getPortalConfiguration('portal_container_type_list')
+    return self._getPortalGroupedTypeList('container') or \
+           self._getPortalConfiguration('portal_container_type_list')
+
 
   security.declareProtected(Permissions.AccessContentsInformation,
                             'getPortalContainerLineTypeList')
@@ -518,8 +575,9 @@
     """
       Return container line types.
     """
-    return self._getPortalGroupedTypeList('container_line') or\
-            self._getPortalConfiguration('portal_container_line_type_list')
+    return self._getPortalGroupedTypeList('container_line') or \
+           self._getPortalConfiguration('portal_container_line_type_list')
+
 
   security.declareProtected(Permissions.AccessContentsInformation,
                             'getPortalItemTypeList')
@@ -527,8 +585,9 @@
     """
       Return item types.
     """
-    return self._getPortalGroupedTypeList('item') or\
-            self._getPortalConfiguration('portal_item_type_list')
+    return self._getPortalGroupedTypeList('item') or \
+           self._getPortalConfiguration('portal_item_type_list')
+
 
   security.declareProtected(Permissions.AccessContentsInformation,
                             'getPortalDiscountTypeList')
@@ -536,8 +595,9 @@
     """
       Return discount types.
     """
-    return self._getPortalGroupedTypeList('discount') or\
-            self._getPortalConfiguration('portal_discount_type_list')
+    return self._getPortalGroupedTypeList('discount') or \
+           self._getPortalConfiguration('portal_discount_type_list')
+
 
   security.declareProtected(Permissions.AccessContentsInformation,
                             'getPortalAlarmTypeList')
@@ -545,8 +605,9 @@
     """
       Return alarm types.
     """
-    return self._getPortalGroupedTypeList('alarm') or\
-            self._getPortalConfiguration('portal_alarm_type_list')
+    return self._getPortalGroupedTypeList('alarm') or \
+           self._getPortalConfiguration('portal_alarm_type_list')
+
 
   security.declareProtected(Permissions.AccessContentsInformation,
                             'getPortalPaymentConditionTypeList')
@@ -554,8 +615,9 @@
     """
       Return payment condition types.
     """
-    return self._getPortalGroupedTypeList('payment_condition') or\
-            self._getPortalConfiguration('portal_payment_condition_type_list')
+    return self._getPortalGroupedTypeList('payment_condition') or \
+           self._getPortalConfiguration('portal_payment_condition_type_list')
+
 
   security.declareProtected(Permissions.AccessContentsInformation,
                             'getPortalBalanceTransactionLineTypeList')
@@ -563,9 +625,9 @@
     """
       Return balance transaction line types.
     """
-    return self._getPortalGroupedTypeList('balance_transaction_line') or\
-            self._getPortalConfiguration(
-                  'portal_balance_transaction_line_type_list')
+    return self._getPortalGroupedTypeList('balance_transaction_line') or \
+           self._getPortalConfiguration('portal_balance_transaction_line_type_list')
+
 
   security.declareProtected(Permissions.AccessContentsInformation,
                             'getPortalCurrentInventoryStateList')
@@ -573,8 +635,9 @@
     """
       Return current inventory states.
     """
-    return self._getPortalGroupedStateList('current_inventory') or\
-          self._getPortalConfiguration('portal_current_inventory_state_list')
+    return self._getPortalGroupedStateList('current_inventory') or \
+           self._getPortalConfiguration('portal_current_inventory_state_list')
+
 
   security.declareProtected(Permissions.AccessContentsInformation,
                             'getPortalDraftOrderStateList')
@@ -582,8 +645,9 @@
     """
       Return draft order states.
     """
-    return self._getPortalGroupedStateList('draft_order') or\
-            self._getPortalConfiguration('portal_draft_order_state_list')
+    return self._getPortalGroupedStateList('draft_order') or \
+           self._getPortalConfiguration('portal_draft_order_state_list')
+
 
   security.declareProtected(Permissions.AccessContentsInformation,
                             'getPortalPlannedOrderStateList')
@@ -591,8 +655,9 @@
     """
       Return planned order states.
     """
-    return self._getPortalGroupedStateList('planned_order') or\
-            self._getPortalConfiguration('portal_planned_order_state_list')
+    return self._getPortalGroupedStateList('planned_order') or \
+           self._getPortalConfiguration('portal_planned_order_state_list')
+
 
   security.declareProtected(Permissions.AccessContentsInformation,
                             'getPortalReservedInventoryStateList')
@@ -600,8 +665,9 @@
     """
       Return reserved inventory states.
     """
-    return self._getPortalGroupedStateList('reserved_inventory') or\
-        self._getPortalConfiguration('portal_reserved_inventory_state_list')
+    return self._getPortalGroupedStateList('reserved_inventory') or \
+           self._getPortalConfiguration('portal_reserved_inventory_state_list')
+
 
   security.declareProtected(Permissions.AccessContentsInformation,
                             'getPortalFutureInventoryStateList')
@@ -609,8 +675,9 @@
     """
       Return future inventory states.
     """
-    return self._getPortalGroupedStateList('future_inventory') or\
-            self._getPortalConfiguration('portal_future_inventory_state_list')
+    return self._getPortalGroupedStateList('future_inventory') or \
+           self._getPortalConfiguration('portal_future_inventory_state_list')
+
 
   security.declareProtected(Permissions.AccessContentsInformation, 'getPortalUpdatableAmortisationTransactionStateList')
   def getPortalUpdatableAmortisationTransactionStateList(self):
@@ -619,14 +686,16 @@
     """
     return self._getPortalConfiguration('portal_updatable_amortisation_transaction_state_list')
 
+
   security.declareProtected(Permissions.AccessContentsInformation,
                             'getPortalColumnBaseCategoryList')
   def getPortalColumnBaseCategoryList(self):
     """
       Return column base categories.
     """
-    return self._getPortalGroupedCategoryList('column') or\
-            self._getPortalConfiguration('portal_column_base_category_list')
+    return self._getPortalGroupedCategoryList('column') or \
+           self._getPortalConfiguration('portal_column_base_category_list')
+
 
   security.declareProtected(Permissions.AccessContentsInformation,
                             'getPortalLineBaseCategoryList')
@@ -634,8 +703,9 @@
     """
       Return line base categories.
     """
-    return self._getPortalGroupedCategoryList('line') or\
-            self._getPortalConfiguration('portal_line_base_category_list')
+    return self._getPortalGroupedCategoryList('line') or \
+           self._getPortalConfiguration('portal_line_base_category_list')
+
 
   security.declareProtected(Permissions.AccessContentsInformation,
                             'getPortalTabBaseCategoryList')
@@ -643,58 +713,61 @@
     """
       Return tab base categories.
     """
-    return self._getPortalGroupedCategoryList('tab') or\
-            self._getPortalConfiguration('portal_tab_base_category_list')
+    return self._getPortalGroupedCategoryList('tab') or \
+           self._getPortalConfiguration('portal_tab_base_category_list')
+
 
   def getPortalDefaultGapRoot(self):
     """
       Return the Accounting Plan to use by default (return the root node)
     """
     LOG('ERP5Site', 0, 'getPortalDefaultGapRoot is deprecated;'+
-      ' use portal_preferences.getPreferredAccountingTransactionGap instead.')
-
-    return self.portal_preferences.getPreferredAccountingTransactionGap() or\
-            self._getPortalConfiguration('portal_default_gap_root')
+        ' use portal_preferences.getPreferredAccountingTransactionGap instead.')
+    return self.portal_preferences.getPreferredAccountingTransactionGap() or \
+           self._getPortalConfiguration('portal_default_gap_root')
+
 
   def getPortalAccountingMovementTypeList(self) :
     """
       Return accounting movement type list.
     """
-    return self._getPortalGroupedTypeList('accounting_movement') or\
-        self._getPortalConfiguration('portal_accounting_movement_type_list')
+    return self._getPortalGroupedTypeList('accounting_movement') or \
+           self._getPortalConfiguration('portal_accounting_movement_type_list')
+
 
   def getPortalAccountingTransactionTypeList(self) :
     """
       Return accounting transaction movement type list.
     """
-    return self._getPortalGroupedTypeList('accounting_transaction') or\
-      self._getPortalConfiguration('portal_accounting_transaction_type_list')
+    return self._getPortalGroupedTypeList('accounting_transaction') or \
+           self._getPortalConfiguration('portal_accounting_transaction_type_list')
+
 
   def getPortalAssignmentBaseCategoryList(self):
     """
       Return List of category values to generate security groups.
     """
-    return self._getPortalGroupedCategoryList('assignment') or\
-        self._getPortalConfiguration('portal_assignment_base_category_list')
-
-  security.declareProtected(Permissions.AccessContentsInformation,
-                            'getPortalTicketTypeList')
+    return self._getPortalGroupedCategoryList('assignment') or \
+           self._getPortalConfiguration('portal_assignment_base_category_list')
+
+
+  security.declareProtected(Permissions.AccessContentsInformation, 'getPortalTicketTypeList')
   def getPortalTicketTypeList(self):
     """
     Return ticket types.
     """
     return self._getPortalGroupedTypeList('ticket')
 
-  security.declareProtected(Permissions.AccessContentsInformation,
-                            'getPortalEventTypeList')
+
+  security.declareProtected(Permissions.AccessContentsInformation, 'getPortalEventTypeList')
   def getPortalEventTypeList(self):
     """
     Return event types.
     """
     return self._getPortalGroupedTypeList('event')
 
-  security.declareProtected(Permissions.AccessContentsInformation,
-                            'getDefaultModuleId')
+
+  security.declareProtected(Permissions.AccessContentsInformation, 'getDefaultModuleId')
   def getDefaultModuleId(self, portal_type, default=MARKER):
     """
       Return default module id where a object with portal_type can
@@ -709,19 +782,18 @@
         if default is not MARKER:
           return default
         LOG('ERP5Site, getDefaultModuleId', 0,
-            'Unable to find default module for portal_type: %s' % \
-                portal_type)
-        raise ValueError, 'Unable to find module for portal_type: %s' % \
-                          portal_type
+            'Unable to find default module for portal_type: %s' % portal_type)
+        raise ValueError, 'Unable to find module for portal_type: %s' % portal_type
     return module_name
 
-  security.declareProtected(Permissions.AccessContentsInformation,
-                            'getDefaultModule')
+
+  security.declareProtected(Permissions.AccessContentsInformation, 'getDefaultModule')
   def getDefaultModule(self, portal_type):
     """
       Return default module where a object with portal_type can be created
     """
     return getattr(self, self.getDefaultModuleId(portal_type), None)
+
 
   security.declareProtected(Permissions.AddPortalContent, 'newContent')
   def newContent(self, id=None, portal_type=None, immediate_reindex=0, **kw):
@@ -732,20 +804,24 @@
       raise ValueError, 'The id should not be None'
     if portal_type is None:
       raise ValueError, 'The portal_type should not be None'
-    self.portal_types.constructContent(type_name=portal_type,
-                                        container=self,
-                                        id=id,
-                                        ) # **kw) removed due to CMF bug
+    self.portal_types.constructContent( type_name = portal_type
+                                      , container = self
+                                      , id        = id
+                                      ) # **kw) removed due to CMF bug
     new_instance = self[id]
-    if kw is not None: new_instance._edit(force_update=1, **kw)
-    if immediate_reindex: new_instance.immediateReindexObject()
+    if kw is not None:
+      new_instance._edit(force_update=1, **kw)
+    if immediate_reindex:
+      new_instance.immediateReindexObject()
     return new_instance
 
+
   def log(self,description,content):
     """
-    Put a log message
-    """
-    LOG(description,0,content)
+      Put a log message
+    """
+    LOG(description, 0, content)
+
 
 
 Globals.InitializeClass(ERP5Site)
@@ -761,26 +837,39 @@
     product_path = package_home(globals())
     return os.path.join(product_path, 'bootstrap')
 
-  def create(self, parent, id, create_userfolder,
-              erp5_sql_connection_type, erp5_sql_connection_string,
-              cmf_activity_sql_connection_type,cmf_activity_sql_connection_string,
-              reindex=1,**kw):
-    LOG('setupTools, create',0,kw)
+
+  def create( self
+            , parent
+            , id
+            , create_userfolder
+            , erp5_sql_connection_type
+            , erp5_sql_connection_string
+            , erp5_sql_deferred_connection_type
+            , erp5_sql_deferred_connection_string
+            , cmf_activity_sql_connection_type
+            , cmf_activity_sql_connection_string
+            , create_activities=1
+            , reindex=1
+            , **kw
+            ):
+    LOG('setupTools, create', 0, kw)
     id = str(id)
     portal = self.klass(id=id)
-    # Make sure reindex will not be called until business templates
-    # will be installed
-    setattr(portal,'isIndexable',0)
+    # Make sure reindex will not be called until business templates will be installed
+    setattr(portal, 'isIndexable', 0)
     parent._setObject(id, portal)
     # Return the fully wrapped object.
     p = parent.this()._getOb(id)
     p._setProperty('erp5_sql_connection_type', erp5_sql_connection_type, 'string')
     p._setProperty('erp5_sql_connection_string', erp5_sql_connection_string, 'string')
+    p._setProperty('erp5_sql_deferred_connection_type', erp5_sql_deferred_connection_type, 'string')
+    p._setProperty('erp5_sql_deferred_connection_string', erp5_sql_deferred_connection_string, 'string')
     p._setProperty('cmf_activity_sql_connection_type', cmf_activity_sql_connection_type, 'string')
     p._setProperty('cmf_activity_sql_connection_string', cmf_activity_sql_connection_string, 'string')
-    p._setProperty('management_page_charset', 'UTF-8', 'string') # XXX hardcoded charset
-    self.setup(p, create_userfolder,**kw)
+    p._setProperty('management_page_charset', 'UTF-8', 'string')
+    self.setup(p, create_userfolder, **kw)
     return p
+
 
   def setupLastTools(self, p, **kw):
     """
@@ -789,19 +878,18 @@
       make sure that we do not put un the queue the full reindexation
     """
     # Add Activity Tool
-    #LOG('setupTools, kw',0,kw)
-    if kw.has_key('create_activities') and int(kw['create_activities'])==1:
-      if not p.hasObject('portal_activities'):
-        addTool = p.manage_addProduct['CMFActivity'].manage_addTool
-        addTool('CMF Activity Tool', None) # Allow user to select active/passive
-      # Initialize Activities
-      portal_activities = getToolByName(p, 'portal_activities', None)
-      if portal_activities is not None:
-        if kw.get('update', 0):
-          keep = 1
-        else:
-          keep = 0
-        portal_activities.manageClearActivities(keep=keep)
+    if not p.hasObject('portal_activities'):
+      addTool = p.manage_addProduct['CMFActivity'].manage_addTool
+      addTool('CMF Activity Tool', None) # Allow user to select active/passive
+    # Initialize Activities
+    portal_activities = getToolByName(p, 'portal_activities', None)
+    if portal_activities is not None:
+      if kw.get('update', 0):
+        keep = 1
+      else:
+        keep = 0
+      portal_activities.manageClearActivities(keep=keep)
+
 
   def setupTemplateTool(self, p, **kw):
     """
@@ -814,11 +902,11 @@
     for permission in permission_list:
       context.manage_permission(permission, ['Manager'], 0)
 
+
   def setupTools(self, p,**kw):
     """
       Set up initial tools
     """
-
     if not 'portal_actions' in p.objectIds():
       PortalGenerator.setupTools(self, p)
 
@@ -877,6 +965,7 @@
     addTool = p.manage_addProduct['ERP5Catalog'].manage_addTool
     if not p.hasObject('portal_catalog'):
       addTool('ERP5 Catalog', None)
+
     # Add Default SQL connection
     if p.erp5_sql_connection_type == 'Z MySQL Database Connection':
       if not p.hasObject('erp5_sql_connection'):
@@ -884,6 +973,16 @@
         addSQLConnection('erp5_sql_connection', 'ERP5 SQL Server Connection', p.erp5_sql_connection_string)
     elif p.erp5_sql_connection_type == 'Z Gadfly':
       pass
+
+    # Add Deferred SQL Connections
+    if p.erp5_sql_deferred_connection_type == 'Z MySQL Deferred Database Connection':
+      if not p.hasObject('erp5_sql_deferred_connection'):
+        addSQLConnection = p.manage_addProduct['ZSQLMethods'].manage_addZMySQLDeferredConnection
+        addSQLConnection('erp5_sql_deferred_connection', 'ERP5 SQL Server Deferred Connection', p.erp5_sql_deferred_connection_string)
+    elif p.erp5_sql_deferred_connection_type == 'Z Gadfly':
+      pass
+
+    # Add Activity SQL Connections
     if p.cmf_activity_sql_connection_type == 'Z MySQL Database Connection':
       if not p.hasObject('cmf_activity_sql_connection'):
         addSQLConnection = p.manage_addProduct['ZSQLMethods'].manage_addZMySQLConnection
@@ -893,13 +992,14 @@
 
     portal_catalog = getToolByName(p, 'portal_catalog')
     if not portal_catalog.getSQLCatalog('erp5_mysql') and not update:
-      # Add a default SQL Catalog
-      #addSQLCatalog = portal_catalog.manage_addProduct['ZSQLCatalog']\
-      #                                .manage_addSQLCatalog
-      #addSQLCatalog('erp5_mysql', '')
-      #portal_catalog.default_sql_catalog_id = 'erp5_mysql'
       portal_catalog.addDefaultSQLMethods()
       portal_catalog.manage_catalogClear()
+      # TODO: Replace previous lines with the commented below (not working actually).
+      #       The goal is to delete addDefaultSQLMethods() method and duplicated zsql
+      #         method from /ERP5Catalog/sql/mysql_erp5.
+      # addSQLCatalog = portal_catalog.manage_addProduct['ZSQLCatalog'].manage_addSQLCatalog
+      # addSQLCatalog('erp5_mysql', '')
+      # portal_catalog.default_sql_catalog_id = 'erp5_mysql'
 
     # Add ERP5Form Tools
     addTool = p.manage_addProduct['ERP5Form'].manage_addTool
@@ -918,14 +1018,13 @@
       addLocalizer = p.manage_addProduct['Localizer'].manage_addLocalizer
       addLocalizer('', ('en',))
     localizer = getToolByName(p, 'Localizer')
-    addMessageCatalog = localizer.manage_addProduct['Localizer']\
-                                      .manage_addMessageCatalog
+    addMessageCatalog = localizer.manage_addProduct['Localizer'].manage_addMessageCatalog
     if 'erp5_ui' not in localizer.objectIds():
       if 'default' in localizer.objectIds():
         localizer.manage_delObjects('default')
-      addMessageCatalog('default', 'ERP5 Localized Messages', ('en',))
-      addMessageCatalog('erp5_ui', 'ERP5 Localized Interface', ('en',))
-      addMessageCatalog('erp5_content', 'ERP5 Localized Content', ('en',))
+      addMessageCatalog('default'     , 'ERP5 Localized Messages' , ('en',))
+      addMessageCatalog('erp5_ui'     , 'ERP5 Localized Interface', ('en',))
+      addMessageCatalog('erp5_content', 'ERP5 Localized Content'  , ('en',))
 
 
   def setupMembersFolder(self, p):
@@ -933,21 +1032,19 @@
       ERP5 is not a CMS
     """
     pass
+
 
   def setupDefaultSkins(self, p):
     from Products.CMFCore.DirectoryView import addDirectoryViews
     from Products.CMFDefault import cmfdefault_globals
     from Products.CMFActivity import cmfactivity_globals
     ps = getToolByName(p, 'portal_skins')
-    # Do not use filesystem skins for ERP5 any longer.
-    # addDirectoryViews(ps, 'skins', globals())
-    # addDirectoryViews(ps, path.join('skins','pro'), globals())
     addDirectoryViews(ps, 'skins', cmfdefault_globals)
     addDirectoryViews(ps, 'skins', cmfactivity_globals)
     ps.manage_addProduct['OFSP'].manage_addFolder(id='external_method')
     ps.manage_addProduct['OFSP'].manage_addFolder(id='custom')
-    # set the 'custom' layer a high priority, so it remains the first
-    # layer when installing new business templates
+    # Set the 'custom' layer a high priority, so it remains the first
+    #   layer when installing new business templates
     ps['custom'].manage_addProperty(
         "business_template_skin_layer_priority", 100.0, "float")
     ps.addSkinSelection('View', 'custom, external_method, activity, '
@@ -963,6 +1060,7 @@
                               + 'zpt_control, content, generic, control, Images',
                         make_default=0)
     p.setupCurrentSkin()
+
 
   def setupWorkflow(self, p):
     """
@@ -986,6 +1084,7 @@
                                     'business_template_installation_workflow' ) )
     pass
 
+
   def setupIndex(self, p, **kw):
     # Make sure all tools and folders have been indexed
     if kw.has_key('reindex') and kw['reindex']==0:
@@ -993,10 +1092,11 @@
     skins_tool = getToolByName(p, 'portal_skins', None)
     if skins_tool is None:
       return
-    setattr(p,'isIndexable',1)
+    setattr(p, 'isIndexable', 1)
     portal_catalog = p.portal_catalog
     portal_catalog.manage_catalogClear()
     skins_tool["erp5_core"].ERP5Site_reindexAll()
+
 
   def setupUserFolder(self, p):
     # We use if possible ERP5Security, then NuxUserGroups
@@ -1018,7 +1118,7 @@
       p.acl_users.manage_addProduct['PluggableAuthService'].addZODBGroupManager('zodb_groups')
       p.acl_users.manage_addProduct['PluggableAuthService'].addZODBRoleManager('zodb_roles')
       # Add CMF Portal Roles
-      #XXX Maybe it will no longer be required once PAS is the standard
+      #XXX Maybe it will be no longer required once PAS is the standard
       p.acl_users.zodb_roles.addRole('Member')
       p.acl_users.zodb_roles.addRole('Reviewer')
       # Register ZODB Interface
@@ -1043,6 +1143,7 @@
     else:
       # Standard user folder
       PortalGenerator.setupUserFolder(self, p)
+
 
   def setupPermissions(self, p):
     permission_dict = {
@@ -1075,6 +1176,7 @@
       role_list = permission_dict.get(name, ('Manager',))
       p.manage_permission(name, roles=role_list, acquire=0)
 
+
   def setup(self, p, create_userfolder, **kw):
     update = kw.get('update', 0)
 
@@ -1095,8 +1197,6 @@
     if not update:
       self.setupPermissions(p)
       self.setupDefaultSkins(p)
-
-    self.setupLastTools(p, **kw)
 
     # Finish setup
     if not p.hasObject('Members'):
@@ -1114,10 +1214,13 @@
     if not update:
       self.setupERP5Core(p,**kw)
 
+    self.setupLastTools(p, **kw)
+
     # Make sure tools are cleanly indexed with a uid before creating children
     # XXX for some strange reason, member was indexed 5 times
     if not update:
       self.setupIndex(p, **kw)
+
 
   def setupBusinessTemplate(self,p):
     """
@@ -1131,7 +1234,8 @@
       ti = apply(ERP5TypeInformation, (), t)
       tool._setObject(t['id'], ti)
 
-  def setupERP5Core(self,p,**kw):
+
+  def setupERP5Core(self, p, **kw):
     """
       Install the core part of ERP5
     """
@@ -1140,7 +1244,7 @@
       return
     if template_tool.getInstalledBusinessTemplate('erp5_core') is None:
       bootstrap_dir = self.getBootstrapDirectory()
-      for bt in ('erp5_core','erp5_html_style'):
+      for bt in ('erp5_core', 'erp5_html_style'):
         template = os.path.join(bootstrap_dir, bt)
         if not os.path.exists(template):
           template = os.path.join(bootstrap_dir, '%s.bt5' % bt)




More information about the Erp5-report mailing list