[Erp5-report] r15777 - /erp5/trunk/products/ERP5Form/ProxyField.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Wed Aug 22 13:39:06 CEST 2007
Author: jerome
Date: Wed Aug 22 13:39:06 2007
New Revision: 15777
URL: http://svn.erp5.org?rev=15777&view=rev
Log:
Define a generic method to delegate a call to the original field widget. This
method is used by all methods called on the field from page templates: render,
render_view, render_css, render_pdf etc
Also add render_pdf to those methods.
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=15777&r1=15776&r2=15777&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/ProxyField.py (original)
+++ erp5/trunk/products/ERP5Form/ProxyField.py Wed Aug 22 13:39:06 2007
@@ -42,11 +42,28 @@
from Products.PythonScripts.standard import url_quote_plus
from AccessControl import ClassSecurityInfo
-import string
+from MethodObject import Method
from zLOG import LOG, WARNING, DEBUG
from Acquisition import aq_base, aq_inner, aq_acquire, aq_chain
from Globals import DTMLFile
+
+
+class WidgetDelegatedMethod(Method):
+ """Method delegated to the proxied field's widget.
+ """
+ def __init__(self, method_id, default=''):
+ self._method_id = method_id
+ self._default = default
+
+ def __call__(self, instance, *args, **kw):
+ field = instance
+ proxied_field = field.getRecursiveTemplateField()
+ if proxied_field:
+ proxied_method = getattr(proxied_field.widget, self._method_id)
+ return proxied_method(field, *args, **kw)
+ return self._default
+
class ProxyWidget(Widget.Widget):
"""
@@ -86,55 +103,15 @@
href='manage_edit_target',
required=0)
- def render(self, field, key, value, REQUEST):
- """
- Render proxy field
- """
- result = ''
- proxy_field = field.getRecursiveTemplateField()
- if proxy_field is not None:
- result = proxy_field.widget.render(field, key, value, REQUEST)
- return result
-
- def render_htmlgrid(self, field, key, value, REQUEST):
- """
- Render proxy field
- """
- result = ''
- proxy_field = field.getRecursiveTemplateField()
- if proxy_field is not None:
- result = proxy_field.widget.render_htmlgrid(field, key, value, REQUEST)
- return result
-
- def render_view(self, field, value):
- """
- Display proxy field
- """
- result = ''
- proxy_field = field.getRecursiveTemplateField()
- if proxy_field is not None:
- result = proxy_field.widget.render_view(field, value)
- return result
-
- def render_css(self, field, REQUEST):
- """
- Render proxy field
- """
- result = ''
- proxy_field = field.getRecursiveTemplateField()
- if proxy_field is not None:
- result = proxy_field.widget.render_css(field, REQUEST)
- return result
-
- def get_javascript_list(self, field, REQUEST):
- """
- Render proxy field
- """
- result = []
- proxy_field = field.getRecursiveTemplateField()
- if proxy_field is not None:
- result = proxy_field.widget.get_javascript_list(field, REQUEST)
- return result
+ # Field API Methods, delegated to the template field widget
+ render = WidgetDelegatedMethod('render', default='')
+ render_htmlgrid = WidgetDelegatedMethod('render_htmlgrid', default='')
+ render_view = WidgetDelegatedMethod('render_view', default='')
+ render_pdf = WidgetDelegatedMethod('render_pdf', default='')
+ render_css = WidgetDelegatedMethod('render_css', default='')
+ get_javascript_list = WidgetDelegatedMethod(
+ 'get_javascript_list', default=[])
+
class ProxyValidator(Validator.Validator):
"""
More information about the Erp5-report
mailing list