diff --git a/addons/base_export/controllers/main.py b/addons/base_export/controllers/main.py index adb0b9e6e9f..89a1d8be6d8 100644 --- a/addons/base_export/controllers/main.py +++ b/addons/base_export/controllers/main.py @@ -7,14 +7,13 @@ class Export(View): def fields_get(self, req, model): Model = req.session.model(model) fields = Model.fields_get(False, req.session.eval_context(req.context)) + fields.update({'id': {'string': 'ID'}, '.id': {'string': 'Database ID'}}) return fields @openerpweb.jsonrequest def get_fields(self, req, model, prefix='', field_parent=None, name= ''): fields = self.fields_get(req, model) - fields.update({'id': {'string': 'ID'}, '.id': {'string': 'Database ID'}}) - records = [] for key, value in fields.items(): record = {} @@ -73,3 +72,54 @@ class Export(View): def delete_export(self, req, export_id): req.session.model("ir.exports").unlink(export_id, req.session.eval_context(req.context)) return True + + @openerpweb.jsonrequest + def namelist(self,req, model, export_id): + + result = self.get_data(req, model, req.session.eval_context(req.context)) + ir_export_obj = req.session.model("ir.exports") + ir_export_line_obj = req.session.model("ir.exports.line") + + field = ir_export_obj.read(export_id) + fields = ir_export_line_obj.read(field['export_fields']) + + name_list = {} + [name_list.update({field['name']: result.get(field['name'])}) for field in fields] + print ":name_list::\n\n\n\n\n:",name_list + return name_list + + def get_data(self, req, model, context=None): + + ids = [] + context = context or {} + fields_data = {} + proxy = req.session.model(model) + fields = self.fields_get(req, model) + if not ids: + f1 = proxy.fields_view_get(False, 'tree', context)['fields'] + f2 = proxy.fields_view_get(False, 'form', context)['fields'] + + fields = dict(f1) + fields.update(f2) + + def rec(fields): + _fields = {'id': 'ID' , '.id': 'Database ID' } + def model_populate(fields, prefix_node='', prefix=None, prefix_value='', level=2): + fields_order = fields.keys() + fields_order.sort(lambda x,y: -cmp(fields[x].get('string', ''), fields[y].get('string', ''))) + + for field in fields_order: + fields_data[prefix_node+field] = fields[field] + if prefix_node: + fields_data[prefix_node + field]['string'] = '%s%s' % (prefix_value, fields_data[prefix_node + field]['string']) + st_name = fields[field]['string'] or field + _fields[prefix_node+field] = st_name + if fields[field].get('relation', False) and level>0: + fields2 = self.fields_get(req, fields[field]['relation']) + model_populate(fields2, prefix_node+field+'/', None, st_name+'/', level-1) + model_populate(fields) + + return _fields + + return rec(fields) + diff --git a/addons/base_export/static/src/js/base_export.js b/addons/base_export/static/src/js/base_export.js index 7b1137ac6ae..06ed5eacaa6 100644 --- a/addons/base_export/static/src/js/base_export.js +++ b/addons/base_export/static/src/js/base_export.js @@ -54,21 +54,35 @@ openerp.base_export.Export = openerp.base.Dialog.extend({ $("#ExistsExportList").show(); } else{ - this.rpc("/base_export/export/exist_export_lists", {"model": this.dataset.model}, function(export_list){ - if(export_list.length){ - $("#ExistsExportList").append(QWeb.render('Exists.ExportList', {'existing_exports':export_list})); - $('#delete_export_list').click(function(){ - select_exp = $("#saved_export_list option:selected") - if (select_exp.val()){ - self.rpc("/base_export/export/delete_export", {"export_id": parseInt(select_exp.val())}, {}); - select_exp.remove(); - if($("#saved_export_list option").length <= 1){ + this.rpc("/base_export/export/exist_export_lists", {"model": this.dataset.model}, function(export_list){ + if(export_list.length){ + $("#ExistsExportList").append(QWeb.render('Exists.ExportList', {'existing_exports':export_list})); + $("#saved_export_list").change(function(){ + $("#fields_list option").remove(); + export_id = $("#saved_export_list option:selected").val(); + if (export_id){ + self.rpc("/base_export/export/namelist", {"model": self.dataset.model, export_id: parseInt(export_id)}, self.do_load_export_field); + } + }); + $('#delete_export_list').click(function(){ + select_exp = $("#saved_export_list option:selected") + if (select_exp.val()){ + self.rpc("/base_export/export/delete_export", {"export_id": parseInt(select_exp.val())}, {}); + select_exp.remove(); + if($("#saved_export_list option").length <= 1){ $("#ExistsExportList").hide(); - } - } - }); - } - }); + } + } + }); + } + }); + } + }, + + do_load_export_field: function(field_list){ + var export_node = $("#fields_list"); + for (var key in field_list) { + export_node.append(new Option(field_list[key], key)); } },