[Erp5-report] r11611 - /erp5/trunk/products/ERP5Form/
nobody at svn.erp5.org
nobody at svn.erp5.org
Tue Dec 5 15:52:36 CET 2006
Author: romain
Date: Tue Dec 5 15:52:31 2006
New Revision: 11611
URL: http://svn.erp5.org?rev=11611&view=rev
Log:
ParallelListField are now compatible with the ProxyField, and can be surcharged.
Modified:
erp5/trunk/products/ERP5Form/FormulatorPatch.py
erp5/trunk/products/ERP5Form/ParallelListField.py
erp5/trunk/products/ERP5Form/ProxyField.py
Modified: erp5/trunk/products/ERP5Form/FormulatorPatch.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/FormulatorPatch.py?rev=11611&r1=11610&r2=11611&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/FormulatorPatch.py (original)
+++ erp5/trunk/products/ERP5Form/FormulatorPatch.py Tue Dec 5 15:52:31 2006
@@ -1107,9 +1107,20 @@
render_htmlgrid returns a list of tuple (title, html render)
"""
# What about CSS ? What about description ? What about error ?
- return ((self.get_value('title'),
- self.render_html(value=value, REQUEST=REQUEST, key=key)),)
+ widget_key = self.generate_field_key(key=key)
+ value = self._get_default(key, value, REQUEST)
+ __traceback_info__ = ('key=%s value=%r' % (key, value))
+ return self.widget.render_htmlgrid(self, widget_key, value, REQUEST)
Field.render_htmlgrid = Field_render_htmlgrid
+
+def Widget_render_htmlgrid(self, field, key, value, REQUEST):
+ """
+ render_htmlgrid returns a list of tuple (title, html render)
+ """
+ # XXX Calling _render_helper on the field is not optimized
+ return ((field.get_value('title'),
+ field._render_helper(key, value, REQUEST)),)
+Widget.render_htmlgrid = Widget_render_htmlgrid
# Generic possible renderers
# def render_ext(self, field, key, value, REQUEST):
Modified: erp5/trunk/products/ERP5Form/ParallelListField.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/ParallelListField.py?rev=11611&r1=11610&r2=11611&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/ParallelListField.py (original)
+++ erp5/trunk/products/ERP5Form/ParallelListField.py Tue Dec 5 15:52:31 2006
@@ -94,7 +94,7 @@
}
def render(self, field, key, value, REQUEST):
- hash_list = field._generateSubForm(value, REQUEST)
+ hash_list = generateSubForm(field, value, REQUEST)
# Call render on each sub field
sub_field_render_list = []
for sub_field_property_dict in hash_list:
@@ -108,7 +108,7 @@
return html_string
def render_htmlgrid(self, field, key, value, REQUEST):
- hash_list = field._generateSubForm(value, REQUEST)
+ hash_list = generateSubForm(field, value, REQUEST)
# Call render on each sub field
sub_field_render_list = []
for sub_field_property_dict in hash_list:
@@ -160,7 +160,7 @@
def validate(self, field, key, REQUEST):
result_list = []
- hash_list = field._generateSubForm(None, REQUEST)
+ hash_list = generateSubForm(field, value, REQUEST)
is_sub_field_required = 0
for sub_field_property_dict in hash_list:
try:
@@ -220,50 +220,6 @@
html = self.widget.render_htmlgrid(self, key, value, REQUEST)
return html
- def _generateSubForm(self, value, REQUEST):
- item_list = [x for x in self.get_value('items') \
- if x not in (('',''), ['',''])]
-
- value_list = value
- if not isinstance(value_list, (list, tuple)):
- value_list = [value_list]
-
- empty_sub_field_property_dict = {
- 'key': 'default',
- 'title': self.get_value('title'),
- 'required': 0,
- 'field_type': 'MultiListField',
- 'item_list': [],
- 'value': [],
- 'is_right_display': 0,
- 'size': 5,
- 'editable' : self.get_value('editable')
- }
-
- hash_list = []
- hash_script_id = self.get_value('hash_script_id')
- if hash_script_id not in [None, '']:
- script = getattr(self, hash_script_id)
- script_hash_list = script(
- item_list,
- value_list,
- default_sub_field_property_dict=empty_sub_field_property_dict,
- is_right_display=0)
- hash_list.extend(script_hash_list)
- else:
- # No hash_script founded, generate a little hash_script
- # to display only a MultiListField
- default_sub_field_property_dict = empty_sub_field_property_dict.copy()
- default_sub_field_property_dict.update({
- 'item_list': item_list,
- 'value': value_list,
- })
- hash_list.append(default_sub_field_property_dict)
- # XXX Clean up old ParallelListField
- if hasattr(self, 'sub_form'):
- delattr(self, 'sub_form')
- return hash_list
-
security.declareProtected('Access contents information', 'get_value')
def get_value(self, id, **kw):
"""
@@ -279,3 +235,47 @@
else:
result = ZMIField.get_value(self, id, **kw)
return result
+
+def generateSubForm(self, value, REQUEST):
+ item_list = [x for x in self.get_value('items') \
+ if x not in (('',''), ['',''])]
+
+ value_list = value
+ if not isinstance(value_list, (list, tuple)):
+ value_list = [value_list]
+
+ empty_sub_field_property_dict = {
+ 'key': 'default',
+ 'title': self.get_value('title'),
+ 'required': 0,
+ 'field_type': 'MultiListField',
+ 'item_list': [],
+ 'value': [],
+ 'is_right_display': 0,
+ 'size': 5,
+ 'editable' : self.get_value('editable')
+ }
+
+ hash_list = []
+ hash_script_id = self.get_value('hash_script_id')
+ if hash_script_id not in [None, '']:
+ script = getattr(self, hash_script_id)
+ script_hash_list = script(
+ item_list,
+ value_list,
+ default_sub_field_property_dict=empty_sub_field_property_dict,
+ is_right_display=0)
+ hash_list.extend(script_hash_list)
+ else:
+ # No hash_script founded, generate a little hash_script
+ # to display only a MultiListField
+ default_sub_field_property_dict = empty_sub_field_property_dict.copy()
+ default_sub_field_property_dict.update({
+ 'item_list': item_list,
+ 'value': value_list,
+ })
+ hash_list.append(default_sub_field_property_dict)
+ # XXX Clean up old ParallelListField
+ if hasattr(self, 'sub_form'):
+ delattr(self, 'sub_form')
+ return hash_list
Modified: erp5/trunk/products/ERP5Form/ProxyField.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/ProxyField.py?rev=11611&r1=11610&r2=11611&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/ProxyField.py (original)
+++ erp5/trunk/products/ERP5Form/ProxyField.py Tue Dec 5 15:52:31 2006
@@ -105,6 +105,17 @@
if proxy_field is not None:
REQUEST = field.updateContext(REQUEST)
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:
+ REQUEST = field.updateContext(REQUEST)
+ result = proxy_field.widget.render_htmlgrid(field, key, value, REQUEST)
return result
def render_view(self, field, value):
@@ -479,7 +490,3 @@
if proxy_field is not None:
result = proxy_field.has_value(id)
return result
-
- def _generateSubForm(self, value, REQUEST):
- proxy_field = self.getTemplateField()
- return proxy_field._generateSubForm(value, REQUEST)
More information about the Erp5-report
mailing list