~openerp-dev/openobject-client/trunk-bug-805243-nch

« back to all changes in this revision

Viewing changes to bin/modules/gui/window/win_export.py

  • Committer: Naresh(OpenERP)
  • Date: 2011-07-12 12:36:30 UTC
  • Revision ID: nch@tinyerp.com-20110712123630-s02aelvufppzlta5
[FIX/IMP]:export should show the predefined list if the list is not import compatible and import compatible is unchecked and vice versa also improved the code

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
# -*- coding: utf-8 -*-
2
2
##############################################################################
3
 
#    
 
3
#
4
4
#    OpenERP, Open Source Management Solution
5
5
#    Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
6
6
#
15
15
#    GNU Affero General Public License for more details.
16
16
#
17
17
#    You should have received a copy of the GNU Affero General Public License
18
 
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.     
 
18
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
19
19
#
20
20
##############################################################################
21
21
 
105
105
            common.error(_('Error Opening Excel !'),'')
106
106
 
107
107
def datas_read(ids, model, fields, fields_view, prefix='', context=None):
108
 
    ctx = context.copy()    
 
108
    ctx = context.copy()
109
109
    ctx.update(rpc.session.context)
110
110
    datas = rpc.session.rpc_exec_auth('/object', 'execute', model, 'export_data', ids, fields, ctx)
111
111
    return datas
165
165
        self.wid_action = self.glade.get_widget('win_saveas_combo')
166
166
        self.wid_write_field_names = self.glade.get_widget('add_field_names_cb')
167
167
        action = self.wid_action.set_active(os.name!='nt')
168
 
        
 
168
 
169
169
        if os.name != 'nt':
170
170
            self.wid_action.remove_text(0)
171
171
        else:
198
198
        self.pref_export.connect('key_press_event', self.del_export_list_key)
199
199
 
200
200
        # Fill the predefined export tree view and show everything
 
201
        self.predef_rec = {}
 
202
        ir_export = rpc.RPCProxy('ir.exports')
 
203
        export_ids = ir_export.search([('resource', '=', self.model)])
 
204
        self.predef_rec = self.get_predef_exports(export_ids)
201
205
        self.fill_predefwin()
202
206
        self.pref_export.show_all()
203
207
 
 
208
    def get_predef_exports(self, export_ids=[]):
 
209
        values = {}
 
210
        ir_export = rpc.RPCProxy('ir.exports')
 
211
        ir_export_line = rpc.RPCProxy('ir.exports.line')
 
212
        for export in ir_export.read(export_ids):
 
213
            values[export['name']] = ir_export_line.read(export['export_fields'])
 
214
        return values
 
215
 
204
216
    def model_populate(self, fields, prefix_node='', prefix=None, prefix_value='', level=2):
205
217
        import_comp = self.wid_import_compatible.get_active()
206
218
        fields = fields.copy()
207
219
        fields.update({'id':{'string':_('ID')}})
208
 
        fields.update({'.id':{'string':_('Database ID')}}) 
 
220
        fields.update({'.id':{'string':_('Database ID')}})
209
221
 
210
222
        fields_order = fields.keys()
211
223
        fields_order.sort(lambda x,y: -cmp(fields[x].get('string', ''), fields[y].get('string', '')))
219
231
            self.fields_data[prefix_node+field] = fields[field]
220
232
            if prefix_node:
221
233
                self.fields_data[prefix_node + field]['string'] = '%s%s' % (prefix_value, self.fields_data[prefix_node + field]['string'])
222
 
            st_name = fields[field]['string'] or field 
 
234
            st_name = fields[field]['string'] or field
223
235
            node = self.model1.insert(prefix, 0, [st_name, prefix_node+field, (fields[field].get('required', False) and '#ddddff') or 'white'])
224
236
            self.fields[prefix_node+field] = (st_name, fields[field].get('relation', False))
225
237
            if fields[field].get('relation', False) and level>0:
235
247
    def del_export_list_key(self,widget, event, *args):
236
248
        if event.keyval==gtk.keysyms.Delete:
237
249
            self.del_selected_export_list()
238
 
    
 
250
 
239
251
    def del_export_list_btn(self, widget=None):
240
252
        self.del_selected_export_list()
241
253
 
289
301
    def import_toggled(self, widget=None):
290
302
        self.model1.clear()
291
303
        self.model2.clear()
 
304
        self.fields_data.clear()
292
305
        self.model_populate(self.fields_original)
 
306
        self.fill_predefwin()
293
307
 
294
308
    def sig_unsel_all(self, widget=None):
295
309
        self.model2.clear()
296
 
    
 
310
 
297
311
    def fill_predefwin(self):
298
312
        self.predef_model = gtk.ListStore(gobject.TYPE_PYOBJECT, gobject.TYPE_STRING, gobject.TYPE_STRING)
299
 
        ir_export = rpc.RPCProxy('ir.exports')
300
 
        ir_export_line = rpc.RPCProxy('ir.exports.line')
301
 
        export_ids = ir_export.search([('resource', '=', self.model)])
302
 
        for export in ir_export.read(export_ids):
303
 
            fields = ir_export_line.read(export['export_fields'])
 
313
        for name, value in self.predef_rec.iteritems():
304
314
            try:
305
 
                self.predef_model.append(([f['name'] for f in fields], export['name'], ', '.join([self.fields_data[f['name']]['string'] for f in fields])))
 
315
                self.predef_model.append(([f['name'] for f in value], name, ', '.join([self.fields_data[f['name']]['string'] for f in value])))
306
316
            except:
307
317
                pass
308
318
        self.pref_export.set_model(self.predef_model)
310
320
    def add_predef(self, button):
311
321
        name = common.ask(_('What is the name of this export ?'))
312
322
        if not name:
313
 
            return 
 
323
            return
314
324
        ir_export = rpc.RPCProxy('ir.exports')
315
325
        iter = self.model2.get_iter_root()
316
326
        fields = []
318
328
            field_name = self.model2.get_value(iter, 1)
319
329
            fields.append(field_name)
320
330
            iter = self.model2.iter_next(iter)
321
 
        ir_export.create({'name' : name, 'resource' : self.model, 'export_fields' : [(0, 0, {'name' : f}) for f in fields]})
322
 
        self.predef_model.append((fields, name, ','.join([self.fields_data[f]['string'] for f in fields])))
323
 
    
 
331
        export_id = ir_export.create({'name' : name, 'resource' : self.model, 'export_fields' : [(0, 0, {'name' : f}) for f in fields]})
 
332
        self.predef_rec.update(self.get_predef_exports([export_id]))
 
333
        self.fill_predefwin()
 
334
 
324
335
    def sel_predef(self, treeview, path, column):
325
336
        self.model2.clear()
326
337
        for field in self.predef_model[path[0]][0]: