From 69f2db88056a193b1a3bbfb9a37d482335115489 Mon Sep 17 00:00:00 2001
From: Romain Courteaud <romain@nexedi.com>
Date: Tue, 19 Jun 2007 17:24:44 +0000
Subject: [PATCH] Do not save data on the widget anymore. This fix breaks
 edition for planning box.

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

diff --git a/product/ERP5Form/PlanningBox.py b/product/ERP5Form/PlanningBox.py
index 72f1a7fdac..d7fd0f9f61 100644
--- a/product/ERP5Form/PlanningBox.py
+++ b/product/ERP5Form/PlanningBox.py
@@ -916,18 +916,16 @@ class PlanningBoxWidget(Widget.Widget):
     # build structure
     # render_structure will call all method necessary to build the entire
     # structure relative to the planning
-    # XXX Conflict error
     # creates and fill up self.basic, self.planning and self.build_error_list
-    self.render_structure(field=field, key=key, value=value,
-                          REQUEST=REQUEST, here=here)
+    basic, planning = self.render_structure(field=field, key=key, value=value,
+                                            REQUEST=REQUEST, here=here)
     # getting CSS script generator
     planning_css_method = getattr(REQUEST['here'], 'planning_css')
     # recover CSS data buy calling DTML document
-    # XXX Bad parameter name, use planning_box_widget_instance instead
-    CSS_data = planning_css_method(structure=self)
+    CSS_data = planning_css_method(basic=basic, planning=planning)
     # saving structure inside the request for HTML render
-    # XXX Bad parameter name, use planning_box_widget_instance instead
-    REQUEST.set('structure', self)
+    REQUEST.set('basic', basic)
+    REQUEST.set('planning', planning)
 
     return CSS_data
 
@@ -941,12 +939,13 @@ class PlanningBoxWidget(Widget.Widget):
     # or list (to generated a PDF output or anything else).
 
     # recover structure
-    widget_instance = REQUEST.get('structure')
+    basic = REQUEST.get('basic')
+    planning = REQUEST.get('planning')
 
     # getting HTML rendering Page Template
     planning_html_method = getattr(REQUEST['here'], 'planning_content')
     # recovering HTML data by calling Page Template document
-    HTML_data = planning_html_method(struct=widget_instance)
+    HTML_data = planning_html_method(basic=basic, planning=planning)
     # return HTML data
     return HTML_data
 
@@ -990,8 +989,7 @@ class PlanningBoxWidget(Widget.Widget):
 
     ###### CALL CLASS METHODS TO BUILD BASIC STRUCTURE ######
     # creating BasicStructure instance (and initializing its internal values)
-    # XXX Conflict error
-    self.basic = BasicStructure(here=here,
+    basic = BasicStructure(here=here,
                                 form=form, field=field,
                                 REQUEST=REQUEST, list_method=list_method,
                                 selection=selection, params=params,
@@ -1002,25 +1000,22 @@ class PlanningBoxWidget(Widget.Widget):
                                 sort=sort,
                                 list_error=list_error)
     # call build method to generate BasicStructure
-    status = self.basic.build()
+    status = basic.build()
     if status != 1:
       raise PlanningBoxError, status
 
     ###### CALL CLASS METHODS TO BUILD PLANNING STRUCTURE ######
     # creating PlanningStructure instance and initializing its internal values
-    # XXX Conflict error
-    self.planning = PlanningStructure()
+    planning = PlanningStructure()
     # call build method to generate final Planning Structure
-    status = self.planning.build(basic_structure=self.basic,
-                                 field=field,
-                                 REQUEST=REQUEST)
+    status = planning.build(basic_structure=basic,
+                            field=field,
+                            REQUEST=REQUEST)
     if status != 1:
       # in case error during planning structure generation
       raise PlanningBoxError, status
 
-    # XXX widget is used to store data!!
-    # Remove this as soon as possible
-    return self
+    return basic, planning
 
 # instanciating class
 PlanningBoxWidgetInstance = PlanningBoxWidget()
-- 
2.30.9