From 5da4ed375d1be161361561744b01882192cbf33f Mon Sep 17 00:00:00 2001
From: Romain Courteaud <romain@nexedi.com>
Date: Mon, 27 Feb 2006 13:29:32 +0000
Subject: [PATCH] Can define default value on ProxyField.

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@5857 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ERP5Form/ProxyField.py | 31 +++++++++++++++++++++++++------
 1 file changed, 25 insertions(+), 6 deletions(-)

diff --git a/product/ERP5Form/ProxyField.py b/product/ERP5Form/ProxyField.py
index e13b344318..87ef6fe899 100755
--- a/product/ERP5Form/ProxyField.py
+++ b/product/ERP5Form/ProxyField.py
@@ -53,9 +53,9 @@ class ProxyWidget(Widget.Widget):
   """
 
   property_names = Widget.Widget.property_names + [
-    'form_id', \
-    'field_id', \
-    'extra_context', \
+    'form_id',
+    'field_id',
+    'extra_context',
   ]
 
   form_id = fields.StringField(
@@ -89,7 +89,6 @@ class ProxyWidget(Widget.Widget):
                                 default=(), 
                                 required=0)
 
- 
   def render(self, field, key, value, REQUEST):
     """
       Render proxy field
@@ -99,7 +98,9 @@ class ProxyWidget(Widget.Widget):
       proxy_form = getattr(form, field.get_value('form_id'))
       proxy_field = getattr(proxy_form, field.get_value('field_id'))
     except AttributeError:
-      LOG('ProxyField', WARNING, 'could not get a field from a proxy field %s in %s' % (field.id, form.id))
+      LOG('ProxyField', WARNING, 
+          'could not get a field from a proxy field %s in %s' % \
+              (field.id, form.id))
       return ''
     extra_context = REQUEST.other.get('erp5_extra_context', {})
     for k, v in field.get_value('extra_context'):
@@ -118,7 +119,9 @@ class ProxyWidget(Widget.Widget):
       proxy_form = getattr(form, field.get_value('form_id'))
       proxy_field = getattr(proxy_form, field.get_value('field_id'))
     except AttributeError:
-      LOG('ProxyField', WARNING, 'could not get a field from a proxy field %s in %s' % (field.id, form.id))
+      LOG('ProxyField', WARNING, 
+          'could not get a field from a proxy field %s in %s' % \
+              (field.id, form.id))
       return ''
     REQUEST = get_request()
     extra_context = REQUEST.other.get('erp5_extra_context', {})
@@ -157,3 +160,19 @@ class ProxyField(ZMIField):
 
   widget = ProxyWidgetInstance
   validator = ProxyValidatorInstance
+
+  def _get_default(self, key, value, REQUEST):
+    """
+    Return default value of the field.
+    """
+    value = ZMIField._get_default(self, key, value, REQUEST)
+    if value in (None, ''):
+      form = self.aq_parent
+      try:
+        proxy_form = getattr(form, self.get_value('form_id'))
+        proxy_self = getattr(proxy_form, self.get_value('field_id'))
+      except AttributeError:
+        pass
+      else:
+        value = proxy_self.get_value('default', REQUEST=REQUEST)
+    return value
-- 
2.30.9