[Erp5-report] r16581 - /erp5/trunk/products/ERP5Form/
nobody at svn.erp5.org
nobody at svn.erp5.org
Mon Sep 24 19:23:42 CEST 2007
Author: yusei
Date: Mon Sep 24 19:23:42 2007
New Revision: 16581
URL: http://svn.erp5.org?rev=16581&view=rev
Log:
Fixed a bug. if field class had original get_value method and it was registered in ProxyField module, then use it instead of ProxyField's one.
Modified:
erp5/trunk/products/ERP5Form/ListBox.py
erp5/trunk/products/ERP5Form/MatrixBox.py
erp5/trunk/products/ERP5Form/MultiRelationField.py
erp5/trunk/products/ERP5Form/ParallelListField.py
erp5/trunk/products/ERP5Form/PlanningBox.py
erp5/trunk/products/ERP5Form/ProxyField.py
erp5/trunk/products/ERP5Form/RelationField.py
Modified: erp5/trunk/products/ERP5Form/ListBox.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/ListBox.py?rev=16581&r1=16580&r2=16581&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/ListBox.py (original)
+++ erp5/trunk/products/ERP5Form/ListBox.py Mon Sep 24 19:23:42 2007
@@ -3322,4 +3322,6 @@
#psyco.bind(ListBoxWidget.render)
psyco.bind(ListBoxValidator.validate)
-
+# Register get_value
+from Products.ERP5Form.ProxyField import registerOriginalGetValueClassAndArgument
+registerOriginalGetValueClassAndArgument(ListBox, 'default')
Modified: erp5/trunk/products/ERP5Form/MatrixBox.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/MatrixBox.py?rev=16581&r1=16580&r2=16581&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/MatrixBox.py (original)
+++ erp5/trunk/products/ERP5Form/MatrixBox.py Mon Sep 24 19:23:42 2007
@@ -488,3 +488,7 @@
from Products.ERP5Type.PsycoWrapper import psyco
psyco.bind(MatrixBoxWidget.render)
psyco.bind(MatrixBoxValidator.validate)
+
+# Register get_value
+from Products.ERP5Form.ProxyField import registerOriginalGetValueClassAndArgument
+registerOriginalGetValueClassAndArgument(MatrixBox, 'default')
Modified: erp5/trunk/products/ERP5Form/MultiRelationField.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/MultiRelationField.py?rev=16581&r1=16580&r2=16581&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/MultiRelationField.py (original)
+++ erp5/trunk/products/ERP5Form/MultiRelationField.py Mon Sep 24 19:23:42 2007
@@ -789,3 +789,7 @@
else:
result = ZMIField.get_value(self, id, REQUEST=REQUEST, **kw)
return result
+
+# Register get_value
+from Products.ERP5Form.ProxyField import registerOriginalGetValueClassAndArgument
+registerOriginalGetValueClassAndArgument(MultiRelationStringField, 'items')
Modified: erp5/trunk/products/ERP5Form/ParallelListField.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/ParallelListField.py?rev=16581&r1=16580&r2=16581&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/ParallelListField.py (original)
+++ erp5/trunk/products/ERP5Form/ParallelListField.py Mon Sep 24 19:23:42 2007
@@ -283,3 +283,8 @@
if hasattr(self, 'sub_form'):
delattr(self, 'sub_form')
return hash_list
+
+
+# Register get_value
+from Products.ERP5Form.ProxyField import registerOriginalGetValueClassAndArgument
+registerOriginalGetValueClassAndArgument(ParallelListField, '*')
Modified: erp5/trunk/products/ERP5Form/PlanningBox.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/PlanningBox.py?rev=16581&r1=16580&r2=16581&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/PlanningBox.py (original)
+++ erp5/trunk/products/ERP5Form/PlanningBox.py Mon Sep 24 19:23:42 2007
@@ -3212,3 +3212,7 @@
Info):
InitializeClass(klass)
allow_class(klass)
+
+# Register get_value
+from Products.ERP5Form.ProxyField import registerOriginalGetValueClassAndArgument
+registerOriginalGetValueClassAndArgument(PlanningBox, 'default')
Modified: erp5/trunk/products/ERP5Form/ProxyField.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/ProxyField.py?rev=16581&r1=16580&r2=16581&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/ProxyField.py (original)
+++ erp5/trunk/products/ERP5Form/ProxyField.py Mon Sep 24 19:23:42 2007
@@ -51,7 +51,6 @@
from Globals import DTMLFile
from Products.Formulator.TALESField import TALESMethod
-from Products.ERP5Form.ListBox import ListBox
from Products.ERP5Form.Form import StaticValue, TALESValue, OverrideValue, DefaultValue, EditableValue
_field_value_cache = {}
@@ -532,11 +531,11 @@
try:
template_field = self.getRecursiveTemplateField()
# Old ListBox instance might have default attribute. so we need to check it.
- if id=='default' and isinstance(aq_base(template_field), ListBox):
+ if checkOriginalGetValue(template_field, id):
return self._get_value(id, **kw)
value = self.get_recursive_orig_value(id)
except KeyError:
- # For ListBox
+ # For ListBox and other exceptional fields.
return self._get_value(id, **kw)
field_id = field.id
@@ -599,3 +598,38 @@
if self.aq_parent:
raise KeyError
return getTransactionalVariable(self)[self._getCacheId()].__of__(self.aq_parent)
+
+
+#
+# get_value exception dict
+#
+_get_value_exception_dict = {}
+
+def registerOriginalGetValueClassAndArgument(class_, argument_name_list=()):
+ """
+ if field class has its own get_value implementation and
+ must use it rather than ProxyField's one, then register it.
+
+ if argument_name_list is '*' , original get_value is
+ applied for all arguments.
+ """
+ if not isinstance(argument_name_list, (list, tuple)):
+ argument_name_list = (argument_name_list,)
+ _get_value_exception_dict[class_] = argument_name_list
+
+def checkOriginalGetValue(instance, argument_name):
+ """
+ if exception data is registered, then return True
+ """
+ class_ = aq_base(instance).__class__
+ argument_name_list = _get_value_exception_dict.get(class_)
+
+ if argument_name_list is None:
+ return False
+
+ if len(argument_name_list)==1 and argument_name_list[0]=='*':
+ return True
+
+ if argument_name in argument_name_list:
+ return True
+ return False
Modified: erp5/trunk/products/ERP5Form/RelationField.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/RelationField.py?rev=16581&r1=16580&r2=16581&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/RelationField.py (original)
+++ erp5/trunk/products/ERP5Form/RelationField.py Mon Sep 24 19:23:42 2007
@@ -178,3 +178,7 @@
else:
result = ZMIField.get_value(self, id, REQUEST=REQUEST, **kw)
return result
+
+# Register get_value
+from Products.ERP5Form.ProxyField import registerOriginalGetValueClassAndArgument
+registerOriginalGetValueClassAndArgument(RelationStringField, 'items')
More information about the Erp5-report
mailing list