diff --git a/pattern_import_export/models/pattern_chunk.py b/pattern_import_export/models/pattern_chunk.py index c1664cb4..e3fc948e 100644 --- a/pattern_import_export/models/pattern_chunk.py +++ b/pattern_import_export/models/pattern_chunk.py @@ -39,9 +39,8 @@ def run_import(self): pattern_config={ "model": model, "record_ids": [], - "purge_one2many": ( - self.pattern_file_id.pattern_config_id.purge_one2many - ), + "purge_one2many": self.pattern_file_id.pattern_config_id.purge_one2many, + "pattern_file": self.pattern_file_id, } ) .env[model] diff --git a/pattern_import_export_csv/models/pattern_file.py b/pattern_import_export_csv/models/pattern_file.py index 4ef6e449..5a366858 100644 --- a/pattern_import_export_csv/models/pattern_file.py +++ b/pattern_import_export_csv/models/pattern_file.py @@ -12,7 +12,7 @@ class PatternFile(models.Model): _inherit = "pattern.file" def _parse_data_csv(self, datafile): - in_file = io.StringIO(datafile.decode("utf-8")) + in_file = io.StringIO(datafile.decode("utf-8-sig")) config = self.pattern_config_id if config.header_format == "description_and_tech": # read the first line to skip it diff --git a/pattern_import_export_custom_header/__manifest__.py b/pattern_import_export_custom_header/__manifest__.py index 09d875aa..c11634c8 100644 --- a/pattern_import_export_custom_header/__manifest__.py +++ b/pattern_import_export_custom_header/__manifest__.py @@ -4,7 +4,7 @@ { "name": "Pattern export custom header", - "summary": "Allow to use custom headers names in export files", + "summary": "Allow to use custom headers names in export or import files", "version": "14.0.1.0.1", "category": "Extra Tools", "website": "https://github.com/Shopinvader/pattern-import-export", diff --git a/pattern_import_export_custom_header/models/__init__.py b/pattern_import_export_custom_header/models/__init__.py index 9d55f4ed..872d411f 100644 --- a/pattern_import_export_custom_header/models/__init__.py +++ b/pattern_import_export_custom_header/models/__init__.py @@ -1 +1,2 @@ from . import pattern_config +from . import base diff --git a/pattern_import_export_custom_header/models/base.py b/pattern_import_export_custom_header/models/base.py new file mode 100644 index 00000000..487c1659 --- /dev/null +++ b/pattern_import_export_custom_header/models/base.py @@ -0,0 +1,20 @@ +# Copyright (C) 2023 Akretion (). +# @author Chafique Delli +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import models + + +class Base(models.AbstractModel): + _inherit = "base" + + def _pattern_format2json(self, row): + config = self._context["pattern_config"]["pattern_file"].pattern_config_id + new_row = { + header.initial_header_name: row.get(header.name) + or header.import_default_value + for header in config.custom_header_ids + } + if new_row: + row = new_row + return super()._pattern_format2json(row=row) diff --git a/pattern_import_export_custom_header/models/pattern_config.py b/pattern_import_export_custom_header/models/pattern_config.py index f7d433cf..80fd045a 100644 --- a/pattern_import_export_custom_header/models/pattern_config.py +++ b/pattern_import_export_custom_header/models/pattern_config.py @@ -19,7 +19,7 @@ class PatternConfig(models.Model): def _map_with_custom_header(self, data): return { - item.name: data.get(item.initial_header_name) + item.name: data.get(item.initial_header_name) or item.export_default_value for item in self.custom_header_ids } @@ -72,6 +72,8 @@ class PatternCustomHeader(models.Model): custom_name = fields.Char(string="Custom Header Name") initial_header_name = fields.Char(string="Initial Header Name") pattern_id = fields.Many2one("pattern.config", required=True) + import_default_value = fields.Char(string="Import default Value") + export_default_value = fields.Char(string="Export default Value") def _compute_name(self): for record in self: diff --git a/pattern_import_export_custom_header/views/pattern_config.xml b/pattern_import_export_custom_header/views/pattern_config.xml index 292dbf36..824e308f 100644 --- a/pattern_import_export_custom_header/views/pattern_config.xml +++ b/pattern_import_export_custom_header/views/pattern_config.xml @@ -30,6 +30,8 @@ name="custom_name" attrs="{'required': [('initial_header_name', '=', False)]}" /> + +