-
-
Notifications
You must be signed in to change notification settings - Fork 550
/
Copy pathbase_import_mapping.py
70 lines (60 loc) · 2.27 KB
/
base_import_mapping.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# Copyright 2025 Tecnativa - Carlos Dauden
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import api, fields, models
from odoo.osv import expression
class ImportMapping(models.Model):
_inherit = "base_import.mapping"
_rec_name = "column_name"
mapping_template_id = fields.Many2one(
comodel_name="base_import.mapping.template",
ondelete="cascade",
)
pre_process_method = fields.Selection(
[
("str_abs_value", "Absolute value (string)"),
("prefix_c", "Prefix C"),
("prefix_p", "Prefix P"),
]
)
mapped_value_ids = fields.Many2many(
comodel_name="base_import.mapping.value.map",
relation="base_import_mapping_value_map_rel",
column1="mapping_id",
column2="value_map_id",
)
python_code = fields.Char()
# Convert to compute to manage from template if is set
res_model = fields.Char(compute="_compute_res_model", store=True, readonly=False)
@api.depends("mapping_template_id")
def _compute_res_model(self):
for line in self.filtered("mapping_template_id"):
line.res_model = line.mapping_template_id.res_model
@api.model
def search(self, domain, offset=0, limit=None, order=None):
domain = expression.AND(
[
domain,
[
(
"mapping_template_id",
"=",
self.env.context.get("use_mapping_template_id", False),
)
],
]
)
return super().search(domain, offset=offset, limit=limit, order=order)
@api.model_create_multi
def create(self, vals_list):
mapping_template_id = self.env.context.get("use_mapping_template_id", False)
if mapping_template_id:
for vals in vals_list:
if "mapping_template_id" not in vals:
vals["mapping_template_id"] = mapping_template_id
return super().create(vals_list)
def pre_process_method_str_abs_value(self, value):
return value.replace("-", "")
def pre_process_method_prefix_c(self, value):
return f"C-{value}"
def pre_process_method_prefix_p(self, value):
return f"P-{value}"