[IMP] add on_click_export_data method for export data in csv file.

bzr revid: ysa@tinyerp.com-20110718124940-kbxbqz90buuef93d
This commit is contained in:
Yogesh (OpenERP)
2011-07-18 18:19:40 +05:30
parent 530f436186
commit f146e2a85e
2 changed files with 59 additions and 5 deletions
+38 -3
View File
@@ -1,5 +1,7 @@
from base.controllers.main import View
import openerpweb
import StringIO
import csv
class Export(View):
_cp_path = "/base_export/export"
@@ -89,7 +91,6 @@ class Export(View):
return name_list
def get_data(self, req, model, context=None):
ids = []
context = context or {}
fields_data = {}
@@ -118,8 +119,42 @@ class Export(View):
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)
def export_csv(self, req, fields, result):
fp = StringIO.StringIO()
writer = csv.writer(fp, quoting=csv.QUOTE_ALL)
writer.writerow(fields)
for data in result:
row = []
for d in data:
if isinstance(d, basestring):
d = d.replace('\n',' ').replace('\t',' ')
try:
d = d.encode('utf-8')
except:
pass
if d is False: d = None
row.append(d)
writer.writerow(row)
fp.seek(0)
data = fp.read()
fp.close()
return data
@openerpweb.jsonrequest
def export_data(self, req, model, fields, ids, domain, import_compat=False, context=None):
context = req.session.eval_context(req.context)
modle_obj = req.session.model(model)
ids = ids or modle_obj.search(domain, context=context)
field = fields.keys()
result = modle_obj.export_data(ids, field , context).get('datas',[])
if not import_compat:
field = fields.values()
return self.export_csv(req, field, result)
@@ -24,7 +24,7 @@ openerp.base_export.Export = openerp.base.Dialog.extend({
self.close();
},
"Export To File" : function() {
self.get_fields();
self.on_click_export_data();
}
},
close: function(event, ui){ self.close();}
@@ -284,10 +284,29 @@ openerp.base_export.Export = openerp.base.Dialog.extend({
export_field.push(jQuery(this).val());
});
if (! export_field.length){
alert('Please select fields to export...');
alert('Please select fields to save export list...');
}
return export_field;
},
on_click_export_data: function(){
var self = this;
var export_field = {};
var flag = true;
$("#fields_list option").each(function(){
export_field[jQuery(this).val()] = jQuery(this).text();
flag = false;
});
if (flag){
alert('Please select fields to export...');
return;
}
import_comp = $("#import_compat option:selected").val()
self.rpc("/base_export/export/export_data", {"model": self.dataset.model, "fields":export_field, 'ids': self.dataset.ids, 'domain': self.dataset.domain, "import_compat":parseInt(import_comp)}, function(data){
window.location="data:text/csv;charset=utf8," + encodeURIComponent(data)
self.close();
});
},
close: function() {
jQuery(this.$dialog).remove();