[Erp5-report] r43009 arnaud.fontaine - in /erp5/trunk/products/ERP5Type: ./ dynamic/

nobody at svn.erp5.org nobody at svn.erp5.org
Fri Feb 4 08:53:06 CET 2011


Author: arnaud.fontaine
Date: Fri Feb  4 08:53:06 2011
New Revision: 43009

URL: http://svn.erp5.org?rev=43009&view=rev
Log:
_aq_reset calls resetRegisteredWorkflowMethod without actually triggering 
accessors regeneration, thus replace it by a resetDynamicDocuments().
resetDynamicDocumentsOnceAtTransactionBoundary should be called
instead when possible to avoid excessive re-generation of accessors.


Modified:
    erp5/trunk/products/ERP5Type/Base.py
    erp5/trunk/products/ERP5Type/dynamic/portal_type_class.py

Modified: erp5/trunk/products/ERP5Type/Base.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Base.py?rev=43009&r1=43008&r2=43009&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Base.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/Base.py [utf8] Fri Feb  4 08:53:06 2011
@@ -290,22 +290,15 @@ class WorkflowMethod(Method):
       self._invoke_always = {}
 
 def _aq_reset():
-  # using clear to prevent changing the reference
-  Base.aq_method_generated.clear()
-  Base.aq_portal_type.clear()
-  Base.aq_related_generated = 0
-  try:
-    from Products.ERP5Form.PreferenceTool import PreferenceTool
-    PreferenceTool.aq_preference_generated = False
-  except ImportError:
-    LOG('ERP5Type', LOG, "ERP5Form.PreferenceTool not found")
-
-  # Some method generations are based on portal methods, and portal methods cache results.
-  # So it is safer to invalidate the cache.
-  clearCache()
-
-  # Reset workflow methods so that they no longer invoke workflows
-  resetRegisteredWorkflowMethod()
+  warnings.warn("_aq_reset is deprecated in favor of "\
+                "portal_types.resetDynamicDocumentsOnceAtTransactionBoundary, "\
+                "calling this method affects greatly performances",
+                DeprecationWarning, stacklevel=2)
+
+  # Callers expect to re-generates accessors right now, so call
+  # resetDynamicDocuments to maintain backward-compatibility
+  from Products.ERP5.ERP5Site import getSite
+  getSite().portal_types.resetDynamicDocuments()
 
 global method_registration_cache
 method_registration_cache = {}

Modified: erp5/trunk/products/ERP5Type/dynamic/portal_type_class.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/dynamic/portal_type_class.py?rev=43009&r1=43008&r2=43009&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/dynamic/portal_type_class.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/dynamic/portal_type_class.py [utf8] Fri Feb  4 08:53:06 2011
@@ -480,7 +480,6 @@ def synchronizeDynamicModules(context, f
         LOG('ERP5Site', INFO, 'Transition successful, please update your'
             ' business templates')
 
-
     LOG("ERP5Type.dynamic", 0, "Resetting dynamic classes")
     for class_name, klass in inspect.getmembers(erp5.portal_type,
                                                 inspect.isclass):
@@ -493,6 +492,8 @@ def synchronizeDynamicModules(context, f
   finally:
     Base.aq_method_lock.release()
 
-  # Necessary because accessors are wrapped in WorkflowMethod by
-  # _aq_dynamic (performed in createAccessorHolder)
-  _aq_reset()
+  # Some method generations are based on portal methods, and portal
+  # methods cache results. So it is safer to invalidate the cache.
+  cache_tool = getattr(context, 'portal_caches', None)
+  if cache_tool is not None:
+    cache_tool.clearCache()



More information about the Erp5-report mailing list