Initial commit: Odoo 18.0-20251222 extra-addons
This commit is contained in:
68
tracking_manager/models/mail_tracking_value.py
Executable file
68
tracking_manager/models/mail_tracking_value.py
Executable file
@@ -0,0 +1,68 @@
|
||||
# Copyright 2025 Tecnativa - Víctor Martínez
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
from odoo import api, models
|
||||
from odoo.tools import html2plaintext
|
||||
|
||||
|
||||
class MailTracking(models.Model):
|
||||
_inherit = "mail.tracking.value"
|
||||
|
||||
# TODO: Remove if merged https://github.com/odoo/odoo/pull/156236
|
||||
def _create_tracking_values_property(
|
||||
self, initial_value, new_value, col_name, col_info, record
|
||||
):
|
||||
field = self.env["ir.model.fields"]._get(record._name, col_name)
|
||||
field_info = {
|
||||
"desc": f"{field.field_description}: {col_info['string']}",
|
||||
"name": col_name,
|
||||
"type": col_info["type"],
|
||||
}
|
||||
if col_info["type"] in ("many2one", "many2many"):
|
||||
comodel = self.env[col_info["comodel"]]
|
||||
initial_value = comodel.browse(initial_value) if initial_value else False
|
||||
new_value = comodel.browse(new_value) if new_value else False
|
||||
values = self.env["mail.tracking.value"]._create_tracking_values(
|
||||
initial_value, new_value, col_name, col_info, record
|
||||
)
|
||||
del values["field_id"]
|
||||
return {**values, "field_info": field_info}
|
||||
|
||||
@api.model
|
||||
def _create_tracking_values(
|
||||
self, initial_value, new_value, col_name, col_info, record
|
||||
):
|
||||
try:
|
||||
return super()._create_tracking_values(
|
||||
initial_value, new_value, col_name, col_info, record
|
||||
)
|
||||
except NotImplementedError:
|
||||
if col_info["type"] == "html":
|
||||
field = self.env["ir.model.fields"]._get(record._name, col_name)
|
||||
values = {"field_id": field.id}
|
||||
values.update(
|
||||
{
|
||||
"old_value_char": html2plaintext(initial_value) or "",
|
||||
"new_value_char": html2plaintext(new_value) or "",
|
||||
}
|
||||
)
|
||||
return values
|
||||
elif col_info["type"] == "properties":
|
||||
# TODO: Remove if merged https://github.com/odoo/odoo/pull/156236
|
||||
# A return is necessary to avoid the NotImplementedError error
|
||||
field = self.env["ir.model.fields"]._get(record._name, col_name)
|
||||
return {"field_id": field.id}
|
||||
elif col_info["type"] == "tags":
|
||||
# TODO: Remove if merged https://github.com/odoo/odoo/pull/156236
|
||||
field = self.env["ir.model.fields"]._get(record._name, col_name)
|
||||
return {
|
||||
"field_id": field.id,
|
||||
"old_value_char": (
|
||||
", ".join(value for value in initial_value)
|
||||
if initial_value
|
||||
else ""
|
||||
),
|
||||
"new_value_char": (
|
||||
", ".join(value for value in new_value) if new_value else ""
|
||||
),
|
||||
}
|
||||
raise
|
||||
Reference in New Issue
Block a user