Skip to content

Commit 91ff4ff

Browse files
committed
[IMP] tracking_manager_domain: support domains on one2many messages
1 parent be70632 commit 91ff4ff

File tree

1 file changed

+31
-2
lines changed

1 file changed

+31
-2
lines changed

tracking_manager_domain/models/models.py

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ class Base(models.AbstractModel):
1212
_inherit = "base"
1313

1414
@tools.ormcache()
15-
def _all_tracking_domain_fields(self):
15+
def _tm_all_tracking_domain_fields(self):
1616
cr = self._cr
1717
cr.execute(
1818
"""
@@ -28,6 +28,33 @@ def _all_tracking_domain_fields(self):
2828
result[row["model"]][row["name"]] = row
2929
return result
3030

31+
def _tm_post_message(self, data):
32+
for model_name, model_data in data.items():
33+
all_tracking_domain_fields = self._tm_all_tracking_domain_fields()[
34+
model_name
35+
]
36+
# check if any fields with tracking_domain
37+
if not all_tracking_domain_fields:
38+
continue
39+
record_to_remove = []
40+
for record_id, messages_by_field in model_data.items():
41+
fields_to_remove = []
42+
record = self.env[model_name].browse(record_id)
43+
for field_name, _messages in messages_by_field.items():
44+
field_data = all_tracking_domain_fields.get(field_name, False)
45+
if field_data and not record.filtered_domain(
46+
literal_eval(field_data["tracking_domain"])
47+
):
48+
fields_to_remove.append(field_name)
49+
for field_name in fields_to_remove:
50+
del model_data[record_id][field_name]
51+
if not model_data[record_id]:
52+
record_to_remove.append(record_id)
53+
54+
for record_id in record_to_remove:
55+
del model_data[record_id]
56+
return super()._tm_post_message(data)
57+
3158
def _mail_track(self, tracked_fields, initial_values):
3259
changes, tracking_value_ids = super()._mail_track(
3360
tracked_fields, initial_values
@@ -36,7 +63,9 @@ def _mail_track(self, tracked_fields, initial_values):
3663
tracking_value_id[2]["field_id"] for tracking_value_id in tracking_value_ids
3764
]
3865
if tracking_value_field_ids:
39-
all_tracking_domain_fields = self._all_tracking_domain_fields()[self._name]
66+
all_tracking_domain_fields = self._tm_all_tracking_domain_fields()[
67+
self._name
68+
]
4069

4170
if all_tracking_domain_fields:
4271
# remove entries that are not matching the tracking_domain of the field

0 commit comments

Comments
 (0)