[Erp5-report] r21956 - /erp5/trunk/products/ERP5Form/ProxyField.py

nobody at svn.erp5.org nobody at svn.erp5.org
Thu Jun 26 13:58:39 CEST 2008


Author: vincent
Date: Thu Jun 26 13:58:38 2008
New Revision: 21956

URL: http://svn.erp5.org?rev=21956&view=rev
Log:
Make proxyfield's WidgetDelegatedMethod lazily retrieve proxyfied method's func_code, so that it's easier to pinpoint underlying method.
Use case: when a widget rendering method raises and the rendered field is a proxyfield, func_code cans be read *after* call raised.

Modified:
    erp5/trunk/products/ERP5Form/ProxyField.py

Modified: erp5/trunk/products/ERP5Form/ProxyField.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/ProxyField.py?rev=21956&r1=21955&r2=21956&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/ProxyField.py (original)
+++ erp5/trunk/products/ERP5Form/ProxyField.py Thu Jun 26 13:58:38 2008
@@ -63,6 +63,8 @@
 class WidgetDelegatedMethod(Method):
   """Method delegated to the proxied field's widget.
   """
+  func_code = None
+
   def __init__(self, method_id, default=''):
     self._method_id = method_id
     self._default = default
@@ -72,7 +74,10 @@
     proxied_field = field.getRecursiveTemplateField()
     if proxied_field:
       proxied_method = getattr(proxied_field.widget, self._method_id)
-      return proxied_method(field, *args, **kw)
+      try:
+        return proxied_method(field, *args, **kw)
+      finally:
+        self.func_code = getattr(proxied_method, 'func_code', None)
     return self._default
 
 




More information about the Erp5-report mailing list