Skip to content

Commit c68b850

Browse files
committed
[FIX] function_pattern_chunk_run allow_commit
1 parent fc8844d commit c68b850

4 files changed

Lines changed: 58 additions & 24 deletions

File tree

pattern_import_export/data/queue_job_function_data.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
<field name="model_id" ref="model_pattern_chunk" />
1616
<field name="method">run</field>
1717
<field name="channel_id" ref="channel_pattern_import" />
18+
<field name="allow_commit" eval="True" />
1819
</record>
1920
<record id="job_function_pattern_chunk_check_last" model="queue.job.function">
2021
<field name="model_id" ref="model_pattern_chunk" />

pattern_import_export/demo/demo.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,12 @@
2121
<field name="model_id">res.company</field>
2222
<field name="user_id" />
2323
</record>
24+
<record id="demo_filter_categories" model="ir.filters">
25+
<field name="name">Main category</field>
26+
<field name="domain">[("active", "=", True)]</field>
27+
<field name="model_id">res.partner.category</field>
28+
<field name="user_id" />
29+
</record>
2430

2531
<!--Exports-->
2632
<record id="demo_export" model="ir.exports">
@@ -68,6 +74,7 @@
6874
<field name="name">category_id/name</field>
6975
<field name="export_id" ref="pattern_import_export.demo_export" />
7076
<field name="add_select_tab" eval="True" />
77+
<field name="tab_filter_id" ref="demo_filter_categories" />
7178
</record>
7279
<record id="demo_export_m2m_line_1" model="ir.exports.line">
7380
<field name="name">id</field>

pattern_import_export/models/ir_exports_line.py

Lines changed: 46 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -78,30 +78,54 @@ def _compute_required_fields(self):
7878
"tab_filter_id",
7979
"add_select_tab",
8080
]
81-
if record.name:
82-
required = []
83-
field, model, level = self._get_last_relation_field(
84-
record.model1_id.model, record.name
85-
)
86-
ftype = self.env[model]._fields[field].type
87-
if ftype in ["many2one", "many2many"]:
88-
level += 1
89-
hidden_fields.remove("add_select_tab")
90-
for idx in range(2, level + 1):
91-
required.append(f"field{idx}_id")
92-
if ftype in ["one2many", "many2many"]:
93-
required.append("number_occurence")
94-
if ftype in "one2many":
95-
required.append("sub_pattern_config_id")
96-
record.required_fields = ",".join(required)
97-
if record.add_select_tab:
98-
# this field is optionnal
99-
required.append("tab_filter_id")
100-
hidden_fields = list(set(hidden_fields) - set(required))
101-
record.hidden_fields = ",".join(hidden_fields)
102-
else:
81+
82+
if not record.name:
10383
record.required_fields = ""
10484
record.hidden_fields = ""
85+
continue
86+
87+
required = []
88+
89+
field, model, level = self._get_last_relation_field(
90+
record.model1_id.model, record.name
91+
)
92+
93+
if model not in self.env:
94+
record.required_fields = ""
95+
record.hidden_fields = ",".join(hidden_fields)
96+
continue
97+
98+
model_obj = self.env[model]
99+
100+
field_obj = model_obj._fields.get(field)
101+
if not field_obj:
102+
record.required_fields = ""
103+
record.hidden_fields = ",".join(hidden_fields)
104+
continue
105+
106+
ftype = field_obj.type
107+
108+
if ftype in ["many2one", "many2many"]:
109+
level += 1
110+
if "add_select_tab" in hidden_fields:
111+
hidden_fields.remove("add_select_tab")
112+
113+
for idx in range(2, level + 1):
114+
required.append(f"field{idx}_id")
115+
116+
if ftype in ["one2many", "many2many"]:
117+
required.append("number_occurence")
118+
119+
if ftype == "one2many":
120+
required.append("sub_pattern_config_id")
121+
122+
if record.add_select_tab:
123+
required.append("tab_filter_id")
124+
125+
record.required_fields = ",".join(required)
126+
127+
hidden_fields = list(set(hidden_fields) - set(required))
128+
record.hidden_fields = ",".join(hidden_fields)
105129

106130
def _inverse_name(self):
107131
super()._inverse_name()

pattern_import_export/tests/test_pattern_export.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -393,7 +393,9 @@ def test_get_metadata(self):
393393
tab_country_name = (
394394
f"({self.filter_countries_1.id}) {self.filter_countries_1.name}"
395395
)
396-
self.assertEqual(list(tabs.keys()), [tab_country_name, "Tags"])
396+
filter_categories = self.env.ref("pattern_import_export.demo_filter_categories")
397+
tab_category_name = f"({filter_categories.id}) {filter_categories.name}"
398+
self.assertEqual(list(tabs.keys()), [tab_country_name, tab_category_name])
397399
self.assertEqual(
398400
tabs[tab_country_name],
399401
{
@@ -403,7 +405,7 @@ def test_get_metadata(self):
403405
},
404406
)
405407
self.assertEqual(
406-
tabs["Tags"],
408+
tabs[tab_category_name],
407409
{
408410
"headers": ["name"],
409411
"data": [

0 commit comments

Comments
 (0)