@@ -12,7 +12,7 @@ class Base(models.AbstractModel):
12
12
_inherit = "base"
13
13
14
14
@tools .ormcache ()
15
- def _all_tracking_domain_fields (self ):
15
+ def _tm_all_tracking_domain_fields (self ):
16
16
cr = self ._cr
17
17
cr .execute (
18
18
"""
@@ -28,6 +28,33 @@ def _all_tracking_domain_fields(self):
28
28
result [row ["model" ]][row ["name" ]] = row
29
29
return result
30
30
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
+
31
58
def _mail_track (self , tracked_fields , initial_values ):
32
59
changes , tracking_value_ids = super ()._mail_track (
33
60
tracked_fields , initial_values
@@ -36,7 +63,9 @@ def _mail_track(self, tracked_fields, initial_values):
36
63
tracking_value_id [2 ]["field_id" ] for tracking_value_id in tracking_value_ids
37
64
]
38
65
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
+ ]
40
69
41
70
if all_tracking_domain_fields :
42
71
# remove entries that are not matching the tracking_domain of the field
0 commit comments