From 9dbcfb91f2b14a55c6fae77a3901c3d66f245595 Mon Sep 17 00:00:00 2001
From: Thomas Bernard <thomas@nexedi.com>
Date: Wed, 3 May 2006 14:30:21 +0000
Subject: [PATCH] fix bug while trying to use color script allow to change
 'parent' source on the fly

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

diff --git a/product/ERP5Form/PlanningBox.py b/product/ERP5Form/PlanningBox.py
index 33ac4fb2a9..dce1908279 100644
--- a/product/ERP5Form/PlanningBox.py
+++ b/product/ERP5Form/PlanningBox.py
@@ -679,7 +679,7 @@ class PlanningBoxWidget(Widget.Widget):
     # build structure
     here = REQUEST['here']
 
-
+    pdb.set_trace()
     structure = self.render_structure(field=field, key=key, value=value, REQUEST=REQUEST, here=here)
 
     if structure != None:
@@ -1148,11 +1148,11 @@ class BasicStructure:
 
       try:
         child_activity_list = self.report_activity_dict[object_tree_group.getObject().getTitle()]
-      except AttributeError:
+      except (AttributeError, KeyError):
         child_activity_list = None
 
       #if method_start == None and child_activity_list != None:
-      if child_activity_list != None:
+      if child_activity_list not in (None, [], {}):
         # can not recover method from object_tree_group itself, trying
         # over the activity list
         # XXX in fact can not fail to recover method from object_tree_group
@@ -1385,8 +1385,15 @@ class BasicGroup:
     + update secondary_axis_occurence
     """
 
-    # specific color scriptactivity
-    color_script = getattr(self, self.field.get_value('color_script'),None)
+
+    # specific begin & stop methods for secondary axis
+    object_begin_method_id = self.field.get_value('x_start_bloc')
+    object_end_method_id= self.field.get_value('x_stop_bloc')
+
+    # recover method to et begin and end limits
+    method_begin = getattr(self.object.getObject(),object_begin_method_id,None)
+    method_end = getattr(self.object.getObject(),object_end_method_id,None)
+
 
     # specific block text_information methods
     info_center = self.field.get_value('info_center')
@@ -1395,17 +1402,9 @@ class BasicGroup:
     info_backleft = self.field.get_value('info_backleft')
     info_backright = self.field.get_value('info_backright')
 
-    # specific begin & stop methods for secondary axis
-    object_begin_method_id = self.field.get_value('x_start_bloc')
-    object_end_method_id= self.field.get_value('x_stop_bloc')
 
     info = {}
 
-
-    # recover method to et begin and end limits
-    method_begin = getattr(self.object.getObject(),object_begin_method_id,None)
-    method_end = getattr(self.object.getObject(),object_end_method_id,None)
-
     # getting info method from activity itself if exists
     info_center_method = getattr(self.object.getObject(),info_center,None)
     info_topright_method = getattr(self.object.getObject(),info_topright,None)
@@ -1421,10 +1420,7 @@ class BasicGroup:
     if info_backright_method!=None: info['info_backright']=str(info_backright_method())
 
 
-    # calling color script if exists to set up activity_color
-    current_color=''
-    if color_script !=None:
-      current_color = color_script(self)
+    
 
     #if method_begin == None and activity_list not in ([],None):
     if activity_list not in ([],None):
@@ -1499,10 +1495,11 @@ class BasicGroup:
           if info_backleft_method!=None: info['info_backleft'] =str(info_backleft_method())
           if info_backright_method!=None: info['info_backright']=str(info_backright_method())
 
+          color_script = getattr(activity_content.getObject(), self.field.get_value('color_script'),None)
           # calling color script if exists to set up activity_color
           current_color=''
           if color_script !=None:
-            current_color = color_script(activity_content)
+            current_color = color_script(activity_content.getObject())
 
           # testing if some activities have errors
           error = 'false'
@@ -1537,6 +1534,16 @@ class BasicGroup:
 
     else:
 
+      # specific color scriptactivity
+      color_script = getattr(self.object.getObject(), self.field.get_value('color_script'),None)
+
+
+      # calling color script if exists to set up activity_color
+      current_color=''
+      if color_script !=None:
+        current_color = color_script(self.object.getObject())
+
+
       # getting begin and end values from previously recovered method
       if method_begin !=None:
         block_begin = method_begin()
-- 
2.30.9