[Erp5-report] r23471 - in /erp5/trunk/products: CMFActivity/ ERP5/ ERP5Type/

nobody at svn.erp5.org nobody at svn.erp5.org
Mon Sep 8 07:07:23 CEST 2008


Author: vincent
Date: Mon Sep  8 07:07:23 2008
New Revision: 23471

URL: http://svn.erp5.org?rev=23471&view=rev
Log:
Add support for placeless default activate/reindex parameters.

 * Add site-level accessors
 * Modify existing getters to use placeless parameters as default values, context-sensitive parameters being given higher priority.

Modified:
    erp5/trunk/products/CMFActivity/ActiveObject.py
    erp5/trunk/products/ERP5/ERP5Site.py
    erp5/trunk/products/ERP5Type/Base.py

Modified: erp5/trunk/products/CMFActivity/ActiveObject.py
URL: http://svn.erp5.org/erp5/trunk/products/CMFActivity/ActiveObject.py?rev=23471&r1=23470&r2=23471&view=diff
==============================================================================
--- erp5/trunk/products/CMFActivity/ActiveObject.py (original)
+++ erp5/trunk/products/CMFActivity/ActiveObject.py Mon Sep  8 07:07:23 2008
@@ -195,12 +195,28 @@
     tv[key] = kw
 
   security.declareProtected( permissions.View, 'getDefaultActivateParameterDict' )
-  def getDefaultActivateParameterDict(self):
+  def getDefaultActivateParameterDict(self, inherit_placess=True):
     # This method returns default activate parameters to self.
     # The result can be either a dict object or None.
     tv = getTransactionalVariable(self)
-    key = ('default_activate_parameter', id(aq_base(self)))
-    return tv.get(key)
+    if inherit_placess:
+      placeless = tv.get(('default_activate_parameter', ))
+      if placeless is not None:
+        placeless = placeless.copy()
+    else:
+      placeless = None
+    local = tv.get(('default_activate_parameter', id(aq_base(self))))
+    if local is None:
+      result = placeless
+    else:
+      if placeless is None:
+        result = local.copy()
+      else:
+        # local defaults takes precedence over placeless defaults.
+        result = {}
+        result.update(placeless)
+        result.update(local)
+    return result
 
   def getActivityRuntimeEnvironment(self):
     return getActivityRuntimeEnvironment()

Modified: erp5/trunk/products/ERP5/ERP5Site.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/ERP5Site.py?rev=23471&r1=23470&r2=23471&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/ERP5Site.py (original)
+++ erp5/trunk/products/ERP5/ERP5Site.py Mon Sep  8 07:07:23 2008
@@ -33,6 +33,7 @@
 from Products.ERP5Type.Log import log as unrestrictedLog
 from Products.CMFActivity.Errors import ActivityPendingError
 import ERP5Defaults
+from Products.ERP5Type.TransactionalVariable import getTransactionalVariable
 
 from zLOG import LOG, INFO
 from string import join
@@ -1093,6 +1094,40 @@
                   "Please use Products.ERP5Type.Log.log instead.",
                   DeprecationWarning)
     unrestrictedLog(description, content = content, level = level)
+
+  security.declarePublic('setPlacelessDefaultReindexParameters')
+  def setPlacelessDefaultReindexParameters(self, **kw):
+    # This method sets the default keyword parameters to reindex. This is useful
+    # when you need to specify special parameters implicitly (e.g. to reindexObject).
+    # Those parameters will affect all reindex calls, not just ones on self.
+    tv = getTransactionalVariable(self)
+    key = ('default_reindex_parameter', )
+    tv[key] = kw
+
+  security.declarePublic('setPlacelessDefaultActivateParameters')
+  def setPlacelessDefaultActivateParameters(self, **kw):
+    # This method sets the default keyword parameters to activate. This is useful
+    # when you need to specify special parameters implicitly (e.g. to reindexObject).
+    # Those parameters will affect all activate calls, not just ones on self.
+    tv = getTransactionalVariable(self)
+    key = ('default_activate_parameter', )
+    tv[key] = kw
+
+  security.declarePublic('getPlacelessDefaultReindexParameters')
+  def getPlacelessDefaultReindexParameters(self):
+    # This method returns default reindex parameters to self.
+    # The result can be either a dict object or None.
+    tv = getTransactionalVariable(self)
+    key = ('default_reindex_parameter', )
+    return tv.get(key)
+
+  security.declarePublic('getPlacelessDefaultActivateParameters')
+  def getPlacelessDefaultActivateParameters(self):
+    # This method returns default activate parameters to self.
+    # The result can be either a dict object or None.
+    tv = getTransactionalVariable(self)
+    key = ('default_activate_parameter', )
+    return tv.get(key)
 
 Globals.InitializeClass(ERP5Site)
 

Modified: erp5/trunk/products/ERP5Type/Base.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Base.py?rev=23471&r1=23470&r2=23471&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Base.py (original)
+++ erp5/trunk/products/ERP5Type/Base.py Mon Sep  8 07:07:23 2008
@@ -3577,12 +3577,28 @@
     tv[key] = kw
 
   security.declareProtected(Permissions.View, 'getDefaultReindexParameterDict' )
-  def getDefaultReindexParameterDict(self):
+  def getDefaultReindexParameterDict(self, inherit_placess=True):
     # This method returns default reindex parameters to self.
     # The result can be either a dict object or None.
     tv = getTransactionalVariable(self)
-    key = ('default_reindex_parameter', id(aq_base(self)))
-    return tv.get(key)
+    if inherit_placess:
+      placeless = tv.get(('default_reindex_parameter', ))
+      if placeless is not None:
+        placeless = placeless.copy()
+    else:
+      placeless = None
+    local = tv.get(('default_reindex_parameter', id(aq_base(self))))
+    if local is None:
+      result = placeless
+    else:
+      if placeless is None:
+        result = local.copy()
+      else:
+        # local defaults takes precedence over placeless defaults.
+        result = {}
+        result.update(placeless)
+        result.update(local)
+    return result
 
   security.declareProtected(Permissions.View, 'isItem' )
   def isItem(self):




More information about the Erp5-report mailing list