77
88from dateutil .relativedelta import relativedelta
99
10- from odoo import _ , api , fields , models
10+ from odoo import api , fields , models
1111from odoo .exceptions import UserError
12+ from odoo .http import request
1213
1314from odoo .addons .web .controllers .export import CSVExport , ExcelExport
1415
@@ -27,7 +28,7 @@ def delay_export(self, data):
2728 """Delay the export, called from js"""
2829 params = json .loads (data .get ("data" ))
2930 if not self .env .user .email :
30- raise UserError (_ ("You must set an email address to your user." ))
31+ raise UserError (self . env . _ ("You must set an email address to your user." ))
3132 self .with_delay ().export (params )
3233
3334 @api .model
@@ -59,10 +60,12 @@ def _get_file_content(self, params):
5960
6061 if export_format == "csv" :
6162 csv = CSVExport ()
62- return csv .from_data (columns_headers , import_data )
63+ return csv .from_data (field_names , columns_headers , import_data ).encode (
64+ "utf-8"
65+ )
6366 else :
6467 xls = ExcelExport ()
65- return xls .from_data (columns_headers , import_data )
68+ return xls .from_data (fields_name , columns_headers , import_data )
6669
6770 @api .model
6871 def export (self , params ):
@@ -80,6 +83,10 @@ def export(self, params):
8083 * import_compat: if the export is export/import compatible (boolean)
8184 * user_ids: optional list of user ids who receive the file
8285 """
86+
87+ # `ExportXlsxWriter` gets the environment from `request.env`
88+ if request :
89+ request .update_env (user = self .env .user )
8390 content = self ._get_file_content (params )
8491
8592 items = operator .itemgetter ("model" , "context" , "format" , "user_ids" )(params )
0 commit comments