diff --git a/pattern_import_export/models/ir_exports_line.py b/pattern_import_export/models/ir_exports_line.py index 20fbc7af..b78086d9 100644 --- a/pattern_import_export/models/ir_exports_line.py +++ b/pattern_import_export/models/ir_exports_line.py @@ -87,6 +87,8 @@ def _compute_required_fields(self): if ftype in ["many2one", "many2many"]: level += 1 hidden_fields.remove("add_select_tab") + if ftype in ["selection"]: + hidden_fields.remove("add_select_tab") for idx in range(2, level + 1): required.append("field{}_id".format(idx)) if ftype in ["one2many", "many2many"]: @@ -94,7 +96,7 @@ def _compute_required_fields(self): if ftype in "one2many": required.append("sub_pattern_config_id") record.required_fields = ",".join(required) - if record.add_select_tab: + if record.add_select_tab and ftype != "selection": # this field is optionnal required.append("tab_filter_id") hidden_fields = list(set(hidden_fields) - set(required)) diff --git a/pattern_import_export/models/pattern_config.py b/pattern_import_export/models/pattern_config.py index 74d025f3..33af2b7d 100644 --- a/pattern_import_export/models/pattern_config.py +++ b/pattern_import_export/models/pattern_config.py @@ -290,14 +290,24 @@ def _get_metadata(self): offset += rec.number_occurence or 1 continue - permitted_records = [] - model_name = rec.related_model_id.model - domain = ( - rec.tab_filter_id and ast.literal_eval(rec.tab_filter_id.domain) - ) or [] - records_matching_constraint = self.env[model_name].search(domain) - permitted_records += records_matching_constraint - data = rec._format_tab_records(permitted_records) + selection = ( + self.env["ir.model.fields"].browse(rec.last_field_id.id).selection + ) + if selection: + selection_list = ast.literal_eval(selection) + data = [] + for option in selection_list: + data.append([option[0]]) + if rec.related_model_id.model: + permitted_records = [] + + model_name = rec.related_model_id.model + domain = ( + rec.tab_filter_id and ast.literal_eval(rec.tab_filter_id.domain) + ) or [] + records_matching_constraint = self.env[model_name].search(domain) + permitted_records += records_matching_constraint + data = rec._format_tab_records(permitted_records) headers = rec._get_tab_headers() tab_name = rec._get_tab_name() idx_col_validator = [] diff --git a/pattern_import_export/tests/test_pattern_export.py b/pattern_import_export/tests/test_pattern_export.py index 619af867..b3341d26 100644 --- a/pattern_import_export/tests/test_pattern_export.py +++ b/pattern_import_export/tests/test_pattern_export.py @@ -418,3 +418,30 @@ def test_get_metadata(self): "idx_col_validator": [7, 12, 17], }, ) + + def test_get_metadata_with_selection_field(self): + self.env["ir.exports.line"].create( + { + "name": "type", + "export_id": self.env.ref("pattern_import_export.demo_export").id, + "add_select_tab": True, + } + ) + result = self.pattern_config._get_metadata() + self.assertEqual(len(result["tabs"]), 3) + tabs = result["tabs"] + + self.assertEqual( + tabs["Address Type"], + { + "headers": ["type"], + "data": [ + ["contact"], + ["invoice"], + ["delivery"], + ["other"], + ["private"], + ], + "idx_col_validator": [6], + }, + )