Naresh(OpenERP) has proposed merging 
lp:~openerp-dev/openobject-client/trunk-bug-805243-nch into 
lp:openobject-client.

Requested reviews:
  OpenERP sa GTK client R&D (openerp-dev-gtk)
Related bugs:
  Bug #805243 in OpenERP GTK Client: "[V6.0.2] No check when loading ir.reports"
  https://bugs.launchpad.net/openobject-client/+bug/805243

For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-client/trunk-bug-805243-nch/+merge/67690
-- 
https://code.launchpad.net/~openerp-dev/openobject-client/trunk-bug-805243-nch/+merge/67690
Your team OpenERP R&D Team is subscribed to branch 
lp:~openerp-dev/openobject-client/trunk-bug-805243-nch.
=== modified file 'bin/modules/gui/window/win_export.py'
--- bin/modules/gui/window/win_export.py	2011-01-25 10:26:37 +0000
+++ bin/modules/gui/window/win_export.py	2011-07-12 12:44:40 +0000
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 ##############################################################################
-#    
+#
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
 #
@@ -15,7 +15,7 @@
 #    GNU Affero General Public License for more details.
 #
 #    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
 ##############################################################################
 
@@ -105,7 +105,7 @@
             common.error(_('Error Opening Excel !'),'')
 
 def datas_read(ids, model, fields, fields_view, prefix='', context=None):
-    ctx = context.copy()    
+    ctx = context.copy()
     ctx.update(rpc.session.context)
     datas = rpc.session.rpc_exec_auth('/object', 'execute', model, 'export_data', ids, fields, ctx)
     return datas
@@ -165,7 +165,7 @@
         self.wid_action = self.glade.get_widget('win_saveas_combo')
         self.wid_write_field_names = self.glade.get_widget('add_field_names_cb')
         action = self.wid_action.set_active(os.name!='nt')
-        
+
         if os.name != 'nt':
             self.wid_action.remove_text(0)
         else:
@@ -198,14 +198,26 @@
         self.pref_export.connect('key_press_event', self.del_export_list_key)
 
         # Fill the predefined export tree view and show everything
+        self.predef_rec = {}
+        ir_export = rpc.RPCProxy('ir.exports')
+        export_ids = ir_export.search([('resource', '=', self.model)])
+        self.predef_rec = self.get_predef_exports(export_ids)
         self.fill_predefwin()
         self.pref_export.show_all()
 
+    def get_predef_exports(self, export_ids=[]):
+        values = {}
+        ir_export = rpc.RPCProxy('ir.exports')
+        ir_export_line = rpc.RPCProxy('ir.exports.line')
+        for export in ir_export.read(export_ids):
+            values[export['name']] = ir_export_line.read(export['export_fields'])
+        return values
+
     def model_populate(self, fields, prefix_node='', prefix=None, prefix_value='', level=2):
         import_comp = self.wid_import_compatible.get_active()
         fields = fields.copy()
         fields.update({'id':{'string':_('ID')}})
-        fields.update({'.id':{'string':_('Database ID')}}) 
+        fields.update({'.id':{'string':_('Database ID')}})
 
         fields_order = fields.keys()
         fields_order.sort(lambda x,y: -cmp(fields[x].get('string', ''), fields[y].get('string', '')))
@@ -219,7 +231,7 @@
             self.fields_data[prefix_node+field] = fields[field]
             if prefix_node:
                 self.fields_data[prefix_node + field]['string'] = '%s%s' % (prefix_value, self.fields_data[prefix_node + field]['string'])
-            st_name = fields[field]['string'] or field 
+            st_name = fields[field]['string'] or field
             node = self.model1.insert(prefix, 0, [st_name, prefix_node+field, (fields[field].get('required', False) and '#ddddff') or 'white'])
             self.fields[prefix_node+field] = (st_name, fields[field].get('relation', False))
             if fields[field].get('relation', False) and level>0:
@@ -235,7 +247,7 @@
     def del_export_list_key(self,widget, event, *args):
         if event.keyval==gtk.keysyms.Delete:
             self.del_selected_export_list()
-    
+
     def del_export_list_btn(self, widget=None):
         self.del_selected_export_list()
 
@@ -289,20 +301,18 @@
     def import_toggled(self, widget=None):
         self.model1.clear()
         self.model2.clear()
+        self.fields_data.clear()
         self.model_populate(self.fields_original)
+        self.fill_predefwin()
 
     def sig_unsel_all(self, widget=None):
         self.model2.clear()
-    
+
     def fill_predefwin(self):
         self.predef_model = gtk.ListStore(gobject.TYPE_PYOBJECT, gobject.TYPE_STRING, gobject.TYPE_STRING)
-        ir_export = rpc.RPCProxy('ir.exports')
-        ir_export_line = rpc.RPCProxy('ir.exports.line')
-        export_ids = ir_export.search([('resource', '=', self.model)])
-        for export in ir_export.read(export_ids):
-            fields = ir_export_line.read(export['export_fields'])
+        for name, value in self.predef_rec.iteritems():
             try:
-                self.predef_model.append(([f['name'] for f in fields], export['name'], ', '.join([self.fields_data[f['name']]['string'] for f in fields])))
+                self.predef_model.append(([f['name'] for f in value], name, ', '.join([self.fields_data[f['name']]['string'] for f in value])))
             except:
                 pass
         self.pref_export.set_model(self.predef_model)
@@ -310,7 +320,7 @@
     def add_predef(self, button):
         name = common.ask(_('What is the name of this export ?'))
         if not name:
-            return 
+            return
         ir_export = rpc.RPCProxy('ir.exports')
         iter = self.model2.get_iter_root()
         fields = []
@@ -318,9 +328,10 @@
             field_name = self.model2.get_value(iter, 1)
             fields.append(field_name)
             iter = self.model2.iter_next(iter)
-        ir_export.create({'name' : name, 'resource' : self.model, 'export_fields' : [(0, 0, {'name' : f}) for f in fields]})
-        self.predef_model.append((fields, name, ','.join([self.fields_data[f]['string'] for f in fields])))
-    
+        export_id = ir_export.create({'name' : name, 'resource' : self.model, 'export_fields' : [(0, 0, {'name' : f}) for f in fields]})
+        self.predef_rec.update(self.get_predef_exports([export_id]))
+        self.fill_predefwin()
+
     def sel_predef(self, treeview, path, column):
         self.model2.clear()
         for field in self.predef_model[path[0]][0]:

_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help   : https://help.launchpad.net/ListHelp

Reply via email to