[Erp5-report] r24502 - /erp5/trunk/products/ERP5Wizard/Tool/WizardTool.py

nobody at svn.erp5.org nobody at svn.erp5.org
Wed Nov 5 17:27:36 CET 2008


Author: ivan
Date: Wed Nov  5 17:27:28 2008
New Revision: 24502

URL: http://svn.erp5.org?rev=24502&view=rev
Log:
Allow (by default) caching for callRemoteProxyMethod.
Refactory selection of configuration language in a separate function.

Modified:
    erp5/trunk/products/ERP5Wizard/Tool/WizardTool.py

Modified: erp5/trunk/products/ERP5Wizard/Tool/WizardTool.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Wizard/Tool/WizardTool.py?rev=24502&r1=24501&r2=24502&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Wizard/Tool/WizardTool.py [utf8] (original)
+++ erp5/trunk/products/ERP5Wizard/Tool/WizardTool.py [utf8] Wed Nov  5 17:27:28 2008
@@ -383,13 +383,21 @@
     witch_tool = server.portal_witch
     return witch_tool
 
-  def callRemoteProxyMethod(self, distant_method, server_url=None):
+  def callRemoteProxyMethod(self, distant_method, server_url=None, use_cache=1):
     """ Call proxy method on server. """
     # set real method_id
     form = self.REQUEST.form
-    form['method_id'] = distant_method
-    rc = self._callRemoteMethod('proxyMethodHandler')
-    return rc['data']    
+    configurator_user_preferred_language = self.getConfiguratorUserPreferredLanguage()
+    def wrapper(distant_method):
+      form['method_id'] = distant_method
+      return self._callRemoteMethod('proxyMethodHandler')['data']
+    if use_cache:
+      wrapper = CachingMethod(wrapper,
+                              id = 'callRemoteProxyMethod_%s_%s' 
+                                     %(distant_method, configurator_user_preferred_language),
+                              cache_factory = 'erp5_ui_medium')
+    rc = wrapper(distant_method)
+    return rc
 
   def _callRemoteMethod(self, distant_method, server_url=None, wrap_result=1):
     """ Call remote method on server and get result. """
@@ -445,6 +453,23 @@
         self.setExpressConfigurationPreference(_server_to_preference_ids_map[item],
                                                value)
 
+  def getConfiguratorUserPreferredLanguage(self):
+    """ Get configuration language as selected by user """
+    REQUEST = getattr(self, 'REQUEST', None)
+    configurator_user_preferred_language = None
+    if REQUEST is not None:
+      # language value will be in cookie or REQUEST itself.
+      configurator_user_preferred_language = REQUEST.get(LANGUAGE_COOKIE_NAME, None)
+      if configurator_user_preferred_language is None:
+        # Find a preferred language from HTTP_ACCEPT_LANGUAGE
+        available_language_list = [i[1] for i in self.WizardTool_getConfigurationLanguageList()]
+        configurator_user_preferred_language = getAvailableLanguageFromHttpAcceptLanguage(
+          REQUEST.get('HTTP_ACCEPT_LANGUAGE', 'en'),
+          available_language_list)
+    if configurator_user_preferred_language is None:
+      configurator_user_preferred_language = 'en'
+    return configurator_user_preferred_language
+
   def _updateParameterDictWithServerInfo(self, parameter_dict):
     """Updates parameter_dict to include local saved server info settings. """
     global _server_to_preference_ids_map
@@ -453,24 +478,7 @@
     ## add local ERP5 instance url
     parameter_dict['erp5_url'] = self.getPortalObject().absolute_url()
     # add user preffered language
-    REQUEST = getattr(self, 'REQUEST', None)
-
-    configurator_user_preferred_language = None
-    if REQUEST is not None:
-      # language value will be in cookie or REQUEST itself.
-      configurator_user_preferred_language = REQUEST.get(LANGUAGE_COOKIE_NAME, None)
-
-      if configurator_user_preferred_language is None:
-        # Find a preferred language from HTTP_ACCEPT_LANGUAGE
-        available_language_list = [i[1] for i in self.WizardTool_getConfigurationLanguageList()]
-        configurator_user_preferred_language = getAvailableLanguageFromHttpAcceptLanguage(
-          REQUEST.get('HTTP_ACCEPT_LANGUAGE', 'en'),
-          available_language_list)
-
-    if configurator_user_preferred_language is None:
-      configurator_user_preferred_language = 'en'
-
-    parameter_dict['user_preferred_language'] = configurator_user_preferred_language
+    parameter_dict['user_preferred_language'] = self.getConfiguratorUserPreferredLanguage()
 
   def _updateParameterDictWithFileUpload(self, parameter_dict):
     """Updates parameter_dict to replace file upload with their file content,




More information about the Erp5-report mailing list