From 117db349694f14d6c885616d4e1c0f9832bd1754 Mon Sep 17 00:00:00 2001 From: Christopher Rogos Date: Mon, 24 Mar 2025 20:03:26 +0000 Subject: [PATCH 1/9] [ADD] tracking_manager_domain: add domain condition for tracking_manager fields --- tracking_manager_domain/README.rst | 119 +++++ tracking_manager_domain/__init__.py | 1 + tracking_manager_domain/__manifest__.py | 21 + .../i18n/tracking_manager_domain.pot | 36 ++ tracking_manager_domain/models/__init__.py | 2 + .../models/ir_model_fields.py | 22 + tracking_manager_domain/models/models.py | 61 +++ tracking_manager_domain/pyproject.toml | 3 + .../readme/CONTRIBUTORS.md | 1 + tracking_manager_domain/readme/USAGE.md | 3 + .../static/description/fields.drawio.png | Bin 0 -> 186994 bytes .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 456 ++++++++++++++++++ tracking_manager_domain/tests/__init__.py | 1 + tracking_manager_domain/tests/test_models.py | 50 ++ .../views/ir_model_fields.xml | 22 + 16 files changed, 798 insertions(+) create mode 100644 tracking_manager_domain/README.rst create mode 100644 tracking_manager_domain/__init__.py create mode 100644 tracking_manager_domain/__manifest__.py create mode 100644 tracking_manager_domain/i18n/tracking_manager_domain.pot create mode 100644 tracking_manager_domain/models/__init__.py create mode 100644 tracking_manager_domain/models/ir_model_fields.py create mode 100644 tracking_manager_domain/models/models.py create mode 100644 tracking_manager_domain/pyproject.toml create mode 100644 tracking_manager_domain/readme/CONTRIBUTORS.md create mode 100644 tracking_manager_domain/readme/USAGE.md create mode 100644 tracking_manager_domain/static/description/fields.drawio.png create mode 100644 tracking_manager_domain/static/description/icon.png create mode 100644 tracking_manager_domain/static/description/index.html create mode 100644 tracking_manager_domain/tests/__init__.py create mode 100644 tracking_manager_domain/tests/test_models.py create mode 100644 tracking_manager_domain/views/ir_model_fields.xml diff --git a/tracking_manager_domain/README.rst b/tracking_manager_domain/README.rst new file mode 100644 index 00000000000..47a3cb43c66 --- /dev/null +++ b/tracking_manager_domain/README.rst @@ -0,0 +1,119 @@ +================ +Tracking Manager +================ + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:b0730db6a25a61791c804b38d6ae18e8f6934cafe024c1121aa23e9967e0b532 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github + :target: https://github.com/OCA/server-tools/tree/17.0/tracking_manager + :alt: OCA/server-tools +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/server-tools-17-0/server-tools-17-0-tracking_manager + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/server-tools&target_branch=17.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module allows to track all fields on every model that has a +chatter, including one2many and many2many ones. This excludes the +computed, readonly, related fields by default. In addition, line changes +of a one2many field can be tracked (e.g. product_uom_qty of an +order_line in a sale order). + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +- In setting > models: select a model +- Check "Active" under Custom Tracking. +- You have two options - 1) manually configure tracked fields one by + one, or 2) determine tracked fields based on a specific domain. +- For 1) manually configure tracked fields one by one + + - Click on Tracked Fields smart button, and select/unselect Custom + Tracking. + +- For 2) determine tracked fields based on a specific domain + + - Select "Automatic configuration", and then set the domain + accordingly. + - Click "Update" for the domain to take effect. + +|image| + +- Then select the fields to track + +|image1| + +.. |image| image:: https://raw.githubusercontent.com/OCA/server-tools/17.0/tracking_manager/static/description/model_view.png +.. |image1| image:: https://raw.githubusercontent.com/OCA/server-tools/17.0/tracking_manager/static/description/fields.png + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +------- + +* Akretion + +Contributors +------------ + +- Kévin Roche +- Sébastien BEAU + +Maintainers +----------- + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +.. |maintainer-Kev-Roche| image:: https://github.com/Kev-Roche.png?size=40px + :target: https://github.com/Kev-Roche + :alt: Kev-Roche +.. |maintainer-sebastienbeau| image:: https://github.com/sebastienbeau.png?size=40px + :target: https://github.com/sebastienbeau + :alt: sebastienbeau + +Current `maintainers `__: + +|maintainer-Kev-Roche| |maintainer-sebastienbeau| + +This module is part of the `OCA/server-tools `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/tracking_manager_domain/__init__.py b/tracking_manager_domain/__init__.py new file mode 100644 index 00000000000..0650744f6bc --- /dev/null +++ b/tracking_manager_domain/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/tracking_manager_domain/__manifest__.py b/tracking_manager_domain/__manifest__.py new file mode 100644 index 00000000000..fae87e7f1f0 --- /dev/null +++ b/tracking_manager_domain/__manifest__.py @@ -0,0 +1,21 @@ +# Copyright 2025 glueckkanja AG () - Christopher Rogos +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Tracking Manager Domain", + "summary": "This module extends the tracking manager to" + " allow to define a domain on fields to track changes " + "only when certain conditions apply.", + "version": "17.0.1.0.0", + "category": "Tools", + "website": "https://github.com/OCA/server-tools", + "author": "Akretion, Odoo Community Association (OCA)", + "maintainers": ["CRogos"], + "license": "AGPL-3", + "application": False, + "installable": True, + "depends": ["tracking_manager"], + "data": [ + "views/ir_model_fields.xml", + ], +} diff --git a/tracking_manager_domain/i18n/tracking_manager_domain.pot b/tracking_manager_domain/i18n/tracking_manager_domain.pot new file mode 100644 index 00000000000..cbebbc384df --- /dev/null +++ b/tracking_manager_domain/i18n/tracking_manager_domain.pot @@ -0,0 +1,36 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * tracking_manager_domain +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: tracking_manager_domain +#: model:ir.model.fields,help:tracking_manager_domain.field_ir_model_fields__tracking_domain +msgid "" +"Add a domain filter to only track changes when certain condition apply on " +"the parent record." +msgstr "" + +#. module: tracking_manager_domain +#: model:ir.model,name:tracking_manager_domain.model_base +msgid "Base" +msgstr "" + +#. module: tracking_manager_domain +#: model:ir.model,name:tracking_manager_domain.model_ir_model_fields +msgid "Fields" +msgstr "" + +#. module: tracking_manager_domain +#: model:ir.model.fields,field_description:tracking_manager_domain.field_ir_model_fields__tracking_domain +msgid "Tracking Domain" +msgstr "" diff --git a/tracking_manager_domain/models/__init__.py b/tracking_manager_domain/models/__init__.py new file mode 100644 index 00000000000..c0f19c503d0 --- /dev/null +++ b/tracking_manager_domain/models/__init__.py @@ -0,0 +1,2 @@ +from . import ir_model_fields +from . import models diff --git a/tracking_manager_domain/models/ir_model_fields.py b/tracking_manager_domain/models/ir_model_fields.py new file mode 100644 index 00000000000..158debbae7c --- /dev/null +++ b/tracking_manager_domain/models/ir_model_fields.py @@ -0,0 +1,22 @@ +# Copyright 2025 glueckkanja AG () - Christopher Rogos +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class IrModelFields(models.Model): + _inherit = "ir.model.fields" + + tracking_domain = fields.Char( + help="Add a domain filter to only track changes when" + " certain condition apply on the parent record." + ) + + def write(self, vals): + if "tracking_domain" in vals: + self.env.registry.clear_cache() + self.check_access_rights("write") + custom_tracking_domain = vals.pop("tracking_domain") + self._write({"tracking_domain": custom_tracking_domain}) + self.invalidate_model(fnames=["tracking_domain"]) + return super().write(vals) diff --git a/tracking_manager_domain/models/models.py b/tracking_manager_domain/models/models.py new file mode 100644 index 00000000000..79948c032b5 --- /dev/null +++ b/tracking_manager_domain/models/models.py @@ -0,0 +1,61 @@ +# Copyright 2025 glueckkanja AG () - Christopher Rogos +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + + +from ast import literal_eval +from collections import defaultdict + +from odoo import models, tools + + +class Base(models.AbstractModel): + _inherit = "base" + + @tools.ormcache() + def _all_tracking_domain_fields(self): + cr = self._cr + cr.execute( + """ + SELECT id, model, name, tracking_domain + FROM ir_model_fields + WHERE tracking_domain is not null + and tracking_domain != '' + and tracking_domain != '[]' + """ + ) + result = defaultdict(dict) + for row in cr.dictfetchall(): + result[row["model"]][row["name"]] = row + return result + + def _mail_track(self, tracked_fields, initial_values): + changes, tracking_value_ids = super()._mail_track( + tracked_fields, initial_values + ) + tracking_value_field_ids = [ + tracking_value_id[2]["field_id"] for tracking_value_id in tracking_value_ids + ] + if tracking_value_field_ids: + all_tracking_domain_fields = self._all_tracking_domain_fields()[self._name] + + if all_tracking_domain_fields: + # remove entries that are not matching the tracking_domain of the field + fields_to_remove = [] + for field_name in tracked_fields: + field_data = all_tracking_domain_fields.get(field_name, False) + if field_data and not self.filtered_domain( + literal_eval(field_data["tracking_domain"]) + ): + fields_to_remove.append(field_data["id"]) + res_changes = [] + res_tracking_value_ids = [] + # remove values from tracking result + for change, tracking_value_id in zip( + changes, tracking_value_ids, strict=True + ): + if tracking_value_id[2]["field_id"] not in fields_to_remove: + res_changes.append(change) + res_tracking_value_ids.append(tracking_value_id) + changes = res_changes + tracking_value_ids = res_tracking_value_ids + return changes, tracking_value_ids diff --git a/tracking_manager_domain/pyproject.toml b/tracking_manager_domain/pyproject.toml new file mode 100644 index 00000000000..4231d0cccb3 --- /dev/null +++ b/tracking_manager_domain/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/tracking_manager_domain/readme/CONTRIBUTORS.md b/tracking_manager_domain/readme/CONTRIBUTORS.md new file mode 100644 index 00000000000..7d854509d7b --- /dev/null +++ b/tracking_manager_domain/readme/CONTRIBUTORS.md @@ -0,0 +1 @@ +- Christopher Rogos \<\> \ No newline at end of file diff --git a/tracking_manager_domain/readme/USAGE.md b/tracking_manager_domain/readme/USAGE.md new file mode 100644 index 00000000000..494b053e9ed --- /dev/null +++ b/tracking_manager_domain/readme/USAGE.md @@ -0,0 +1,3 @@ +- Add an optional domain on the field to limit tracking on certain condition. + +![fields](./static/description/fields.drawio.png) \ No newline at end of file diff --git a/tracking_manager_domain/static/description/fields.drawio.png b/tracking_manager_domain/static/description/fields.drawio.png new file mode 100644 index 0000000000000000000000000000000000000000..070c704a702df64a9ea7606ad9a2f7c649f4dbe2 GIT binary patch literal 186994 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 z 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/tracking_manager_domain/static/description/index.html b/tracking_manager_domain/static/description/index.html new file mode 100644 index 00000000000..a74a569a5cb --- /dev/null +++ b/tracking_manager_domain/static/description/index.html @@ -0,0 +1,456 @@ + + + + + +Tracking Manager + + + +

+

Tracking Manager

+ + +

Beta License: AGPL-3 OCA/server-tools Translate me on Weblate Try me on Runboat

+

This module allows to track all fields on every model that has a +chatter, including one2many and many2many ones. This excludes the +computed, readonly, related fields by default. In addition, line changes +of a one2many field can be tracked (e.g. product_uom_qty of an +order_line in a sale order).

+

Table of contents

+ +
+

Usage

+
    +
  • In setting > models: select a model
  • +
  • Check “Active” under Custom Tracking.
  • +
  • You have two options - 1) manually configure tracked fields one by +one, or 2) determine tracked fields based on a specific domain.
  • +
  • For 1) manually configure tracked fields one by one
      +
    • Click on Tracked Fields smart button, and select/unselect Custom +Tracking.
    • +
    +
  • +
  • For 2) determine tracked fields based on a specific domain
      +
    • Select “Automatic configuration”, and then set the domain +accordingly.
    • +
    • Click “Update” for the domain to take effect.
    • +
    +
  • +
+

image

+
    +
  • Then select the fields to track
  • +
+

image1

+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Akretion
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+ +Odoo Community Association + +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

Current maintainers:

+

Kev-Roche sebastienbeau

+

This module is part of the OCA/server-tools project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/tracking_manager_domain/tests/__init__.py b/tracking_manager_domain/tests/__init__.py new file mode 100644 index 00000000000..483288c9af7 --- /dev/null +++ b/tracking_manager_domain/tests/__init__.py @@ -0,0 +1 @@ +from . import test_models diff --git a/tracking_manager_domain/tests/test_models.py b/tracking_manager_domain/tests/test_models.py new file mode 100644 index 00000000000..9290461bdd3 --- /dev/null +++ b/tracking_manager_domain/tests/test_models.py @@ -0,0 +1,50 @@ +# Copyright 2025 glueckkanja AG () - Christopher Rogos +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo.tests.common import TransactionCase + + +class TestMailTrack(TransactionCase): + def setUp(self): + super().setUp() + + self.Field = self.env["ir.model.fields"] + self.field_mobile = self.Field.search( + [("model", "=", "res.partner"), ("name", "=", "mobile")], limit=1 + ) + self.field_mobile.write({"tracking_domain": "[('is_company', '=', True)]"}) + + def test_mail_track(self): + # arrange + company = self.env.ref("base.res_partner_12") + tracked_fields = {"mobile": {"string": "Mobile", "type": "char"}} + initial_values = {"mobile": "1234"} + + # act + changes, tracking_value_ids = company._mail_track( + tracked_fields, initial_values + ) + + # assert + # Check if changes and tracking_value_ids are returned correctly + self.assertEqual(len(changes), 1) + self.assertEqual(len(tracking_value_ids), 1) + + # Check if the field is tracked correctly + tracking_value = tracking_value_ids[0][2] + self.assertEqual(tracking_value["field_id"], self.field_mobile.id) + + def test_mail_track_with_non_matching_domain(self): + # arrange + person = self.env.ref("base.partner_admin") + + tracked_fields = {"mobile": {"string": "Mobile", "type": "char"}} + initial_values = {"mobile": "1234"} + + # act + changes, tracking_value_ids = person._mail_track(tracked_fields, initial_values) + + # assert + # Check if changes and tracking_value_ids are empty when domain does not match + self.assertEqual(len(changes), 0) + self.assertEqual(len(tracking_value_ids), 0) diff --git a/tracking_manager_domain/views/ir_model_fields.xml b/tracking_manager_domain/views/ir_model_fields.xml new file mode 100644 index 00000000000..c3d256bc8b7 --- /dev/null +++ b/tracking_manager_domain/views/ir_model_fields.xml @@ -0,0 +1,22 @@ + + + + ir.model.fields + + + + + + + + + + From 7134d4f77d972ba926f4d16bc27d9c5f6c077a2c Mon Sep 17 00:00:00 2001 From: mymage Date: Tue, 1 Apr 2025 16:56:03 +0000 Subject: [PATCH 2/9] Added translation using Weblate (Italian) --- tracking_manager_domain/i18n/it.po | 41 ++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 tracking_manager_domain/i18n/it.po diff --git a/tracking_manager_domain/i18n/it.po b/tracking_manager_domain/i18n/it.po new file mode 100644 index 00000000000..375ce8c5cb8 --- /dev/null +++ b/tracking_manager_domain/i18n/it.po @@ -0,0 +1,41 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * tracking_manager_domain +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2025-04-08 06:44+0000\n" +"Last-Translator: mymage \n" +"Language-Team: none\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.10.4\n" + +#. module: tracking_manager_domain +#: model:ir.model.fields,help:tracking_manager_domain.field_ir_model_fields__tracking_domain +msgid "" +"Add a domain filter to only track changes when certain condition apply on " +"the parent record." +msgstr "" +"Aggiungere un filtro di dominio per tracciare le modifiche solo quando si " +"applicano determinate condizioni al record padre." + +#. module: tracking_manager_domain +#: model:ir.model,name:tracking_manager_domain.model_base +msgid "Base" +msgstr "Base" + +#. module: tracking_manager_domain +#: model:ir.model,name:tracking_manager_domain.model_ir_model_fields +msgid "Fields" +msgstr "Campi" + +#. module: tracking_manager_domain +#: model:ir.model.fields,field_description:tracking_manager_domain.field_ir_model_fields__tracking_domain +msgid "Tracking Domain" +msgstr "Dominio tracciamento" From 0699a35bab522590abd5c7e0e3e25a52a2a61c8a Mon Sep 17 00:00:00 2001 From: Christopher Rogos Date: Wed, 2 Apr 2025 10:33:37 +0000 Subject: [PATCH 3/9] [IMP] tracking_manager_domain: support domains on one2many messages --- tracking_manager_domain/models/models.py | 37 ++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/tracking_manager_domain/models/models.py b/tracking_manager_domain/models/models.py index 79948c032b5..fb226a020a4 100644 --- a/tracking_manager_domain/models/models.py +++ b/tracking_manager_domain/models/models.py @@ -12,7 +12,7 @@ class Base(models.AbstractModel): _inherit = "base" @tools.ormcache() - def _all_tracking_domain_fields(self): + def _tm_all_tracking_domain_fields(self): cr = self._cr cr.execute( """ @@ -28,6 +28,37 @@ def _all_tracking_domain_fields(self): result[row["model"]][row["name"]] = row return result + def _tm_post_message(self, data): + for model_name, model_data in data.items(): + all_tracking_domain_fields = self._tm_all_tracking_domain_fields()[ + model_name + ] + # check if any fields with tracking_domain + if not all_tracking_domain_fields: + continue + record_to_remove = [] + for record_id, messages_by_field in model_data.items(): + fields_to_remove = [] + record = self.env[model_name].browse(record_id) + if not record.exists(): + # if a record have been modify and then deleted + # it's not need to track the change so skip it + continue + for field_name, _messages in messages_by_field.items(): + field_data = all_tracking_domain_fields.get(field_name, False) + if field_data and not record.filtered_domain( + literal_eval(field_data["tracking_domain"]) + ): + fields_to_remove.append(field_name) + for field_name in fields_to_remove: + del model_data[record_id][field_name] + if not model_data[record_id]: + record_to_remove.append(record_id) + + for record_id in record_to_remove: + del model_data[record_id] + return super()._tm_post_message(data) + def _mail_track(self, tracked_fields, initial_values): changes, tracking_value_ids = super()._mail_track( tracked_fields, initial_values @@ -36,7 +67,9 @@ def _mail_track(self, tracked_fields, initial_values): tracking_value_id[2]["field_id"] for tracking_value_id in tracking_value_ids ] if tracking_value_field_ids: - all_tracking_domain_fields = self._all_tracking_domain_fields()[self._name] + all_tracking_domain_fields = self._tm_all_tracking_domain_fields()[ + self._name + ] if all_tracking_domain_fields: # remove entries that are not matching the tracking_domain of the field From 32fa86456908096c7517df6a9f9ada4e0a4a279a Mon Sep 17 00:00:00 2001 From: Christopher Rogos Date: Wed, 21 May 2025 09:09:30 +0000 Subject: [PATCH 4/9] [IMP] tracking_manager_domain: pre-commit auto fixes --- tracking_manager_domain/views/ir_model_fields.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/tracking_manager_domain/views/ir_model_fields.xml b/tracking_manager_domain/views/ir_model_fields.xml index c3d256bc8b7..13186554a45 100644 --- a/tracking_manager_domain/views/ir_model_fields.xml +++ b/tracking_manager_domain/views/ir_model_fields.xml @@ -8,7 +8,6 @@ /> - Date: Thu, 12 Jun 2025 14:17:28 +0000 Subject: [PATCH 5/9] [IMP] tracking_manager_domain: Migration to 18.0 --- tracking_manager_domain/__manifest__.py | 2 +- .../i18n/tracking_manager_domain.pot | 12 +++++++++++- tracking_manager_domain/models/ir_model_fields.py | 2 +- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/tracking_manager_domain/__manifest__.py b/tracking_manager_domain/__manifest__.py index fae87e7f1f0..4f5cfb693cb 100644 --- a/tracking_manager_domain/__manifest__.py +++ b/tracking_manager_domain/__manifest__.py @@ -6,7 +6,7 @@ "summary": "This module extends the tracking manager to" " allow to define a domain on fields to track changes " "only when certain conditions apply.", - "version": "17.0.1.0.0", + "version": "18.0.1.0.0", "category": "Tools", "website": "https://github.com/OCA/server-tools", "author": "Akretion, Odoo Community Association (OCA)", diff --git a/tracking_manager_domain/i18n/tracking_manager_domain.pot b/tracking_manager_domain/i18n/tracking_manager_domain.pot index cbebbc384df..734ef6eca23 100644 --- a/tracking_manager_domain/i18n/tracking_manager_domain.pot +++ b/tracking_manager_domain/i18n/tracking_manager_domain.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 17.0\n" +"Project-Id-Version: Odoo Server 18.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" @@ -20,6 +20,11 @@ msgid "" "the parent record." msgstr "" +#. module: tracking_manager_domain +#: model:ir.model.fields,field_description:tracking_manager_domain.field_ir_model_fields__assigned_attachment_ids +msgid "Assigned Attachments" +msgstr "" + #. module: tracking_manager_domain #: model:ir.model,name:tracking_manager_domain.model_base msgid "Base" @@ -30,6 +35,11 @@ msgstr "" msgid "Fields" msgstr "" +#. module: tracking_manager_domain +#: model:ir.model.fields,field_description:tracking_manager_domain.field_ir_model_fields__smart_search +msgid "Smart Search" +msgstr "" + #. module: tracking_manager_domain #: model:ir.model.fields,field_description:tracking_manager_domain.field_ir_model_fields__tracking_domain msgid "Tracking Domain" diff --git a/tracking_manager_domain/models/ir_model_fields.py b/tracking_manager_domain/models/ir_model_fields.py index 158debbae7c..463c2343fd8 100644 --- a/tracking_manager_domain/models/ir_model_fields.py +++ b/tracking_manager_domain/models/ir_model_fields.py @@ -15,7 +15,7 @@ class IrModelFields(models.Model): def write(self, vals): if "tracking_domain" in vals: self.env.registry.clear_cache() - self.check_access_rights("write") + self.check_access("write") custom_tracking_domain = vals.pop("tracking_domain") self._write({"tracking_domain": custom_tracking_domain}) self.invalidate_model(fnames=["tracking_domain"]) From 0248d2ea7b0ad6892247a4af9288fbe2537cafff Mon Sep 17 00:00:00 2001 From: Christopher Rogos Date: Mon, 24 Nov 2025 12:34:08 +0000 Subject: [PATCH 6/9] [FIX] tracking_manager_domain: prevent error when tracking properties --- tracking_manager_domain/__manifest__.py | 4 +-- tracking_manager_domain/models/models.py | 6 +++- tracking_manager_domain/tests/test_models.py | 36 ++++++++++++++++++++ 3 files changed, 43 insertions(+), 3 deletions(-) diff --git a/tracking_manager_domain/__manifest__.py b/tracking_manager_domain/__manifest__.py index 4f5cfb693cb..fc84cda2a2c 100644 --- a/tracking_manager_domain/__manifest__.py +++ b/tracking_manager_domain/__manifest__.py @@ -6,10 +6,10 @@ "summary": "This module extends the tracking manager to" " allow to define a domain on fields to track changes " "only when certain conditions apply.", - "version": "18.0.1.0.0", + "version": "18.0.1.0.1", "category": "Tools", "website": "https://github.com/OCA/server-tools", - "author": "Akretion, Odoo Community Association (OCA)", + "author": "glueckkanja AG, Odoo Community Association (OCA)", "maintainers": ["CRogos"], "license": "AGPL-3", "application": False, diff --git a/tracking_manager_domain/models/models.py b/tracking_manager_domain/models/models.py index fb226a020a4..47b0472dc88 100644 --- a/tracking_manager_domain/models/models.py +++ b/tracking_manager_domain/models/models.py @@ -63,8 +63,12 @@ def _mail_track(self, tracked_fields, initial_values): changes, tracking_value_ids = super()._mail_track( tracked_fields, initial_values ) + + # TODO: add properties support on domain filters tracking_value_field_ids = [ - tracking_value_id[2]["field_id"] for tracking_value_id in tracking_value_ids + tracking_value_id[2]["field_id"] + for tracking_value_id in tracking_value_ids + if "field_id" in tracking_value_id[2] ] if tracking_value_field_ids: all_tracking_domain_fields = self._tm_all_tracking_domain_fields()[ diff --git a/tracking_manager_domain/tests/test_models.py b/tracking_manager_domain/tests/test_models.py index 9290461bdd3..37c60741cf2 100644 --- a/tracking_manager_domain/tests/test_models.py +++ b/tracking_manager_domain/tests/test_models.py @@ -1,6 +1,9 @@ # Copyright 2025 glueckkanja AG () - Christopher Rogos # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from unittest.mock import patch + +from odoo import Command from odoo.tests.common import TransactionCase @@ -48,3 +51,36 @@ def test_mail_track_with_non_matching_domain(self): # Check if changes and tracking_value_ids are empty when domain does not match self.assertEqual(len(changes), 0) self.assertEqual(len(tracking_value_ids), 0) + + # TODO: add properties support on domain filters + def test_mail_track_lead_properties_noerror(self): + # arrange + person = self.env.ref("base.res_partner_12") + tracked_fields = { + "lead_properties": {"string": "Properties", "type": "properties"} + } + initial_values = {"3f32dd2678757113": False} + + patch_changes = {1234: "lead_properties"} + patch_tracking_value_ids = [ + Command.create( + { + "old_value_integer": 15, + "new_value_integer": 10, + "old_value_char": "Azure Interior", + "new_value_char": "Deco Addict", + "field_info": { + "desc": "Properties: Ev", + "name": "lead_properties", + "type": "many2one", + }, + } + ) + ] + + with patch( + "odoo.addons.tracking_manager.models.models.Base._mail_track", + return_value=(patch_changes, patch_tracking_value_ids), + ): + # act + person._mail_track(tracked_fields, initial_values) From 4ec775c34816b726ae410e094eb2afed588eb88a Mon Sep 17 00:00:00 2001 From: Christopher Rogos Date: Wed, 20 May 2026 15:32:10 +0000 Subject: [PATCH 7/9] [MIG] tracking_manager_domain: Migration to 19.0 --- tracking_manager_domain/README.rst | 79 +++++------- tracking_manager_domain/__manifest__.py | 2 +- tracking_manager_domain/models/models.py | 2 +- .../readme/CONTRIBUTORS.md | 3 +- tracking_manager_domain/readme/DESCRIPTION.md | 6 + .../static/description/index.html | 74 +++++------ tracking_manager_domain/tests/test_models.py | 117 ++++++++++++++++-- 7 files changed, 179 insertions(+), 104 deletions(-) create mode 100644 tracking_manager_domain/readme/DESCRIPTION.md diff --git a/tracking_manager_domain/README.rst b/tracking_manager_domain/README.rst index 47a3cb43c66..6d79f429dec 100644 --- a/tracking_manager_domain/README.rst +++ b/tracking_manager_domain/README.rst @@ -1,6 +1,10 @@ -================ -Tracking Manager -================ +.. image:: https://odoo-community.org/readme-banner-image + :target: https://odoo-community.org/get-involved?utm_source=readme + :alt: Odoo Community Association + +======================= +Tracking Manager Domain +======================= .. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @@ -13,26 +17,28 @@ Tracking Manager .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status :alt: Beta -.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png +.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github - :target: https://github.com/OCA/server-tools/tree/17.0/tracking_manager + :target: https://github.com/OCA/server-tools/tree/19.0/tracking_manager_domain :alt: OCA/server-tools .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/server-tools-17-0/server-tools-17-0-tracking_manager + :target: https://translation.odoo-community.org/projects/server-tools-19-0/server-tools-19-0-tracking_manager_domain :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png - :target: https://runboat.odoo-community.org/builds?repo=OCA/server-tools&target_branch=17.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/server-tools&target_branch=19.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| -This module allows to track all fields on every model that has a -chatter, including one2many and many2many ones. This excludes the -computed, readonly, related fields by default. In addition, line changes -of a one2many field can be tracked (e.g. product_uom_qty of an -order_line in a sale order). +This module extends the Tracking Manager module to allow defining a +domain filter on tracked fields. Changes are only recorded when the +specified domain condition is satisfied on the parent record. + +This is useful when you want to limit tracking to specific record states +or conditions, for example only tracking a field when a partner is a +company. **Table of contents** @@ -42,29 +48,11 @@ order_line in a sale order). Usage ===== -- In setting > models: select a model -- Check "Active" under Custom Tracking. -- You have two options - 1) manually configure tracked fields one by - one, or 2) determine tracked fields based on a specific domain. -- For 1) manually configure tracked fields one by one - - - Click on Tracked Fields smart button, and select/unselect Custom - Tracking. - -- For 2) determine tracked fields based on a specific domain - - - Select "Automatic configuration", and then set the domain - accordingly. - - Click "Update" for the domain to take effect. - -|image| - -- Then select the fields to track - -|image1| +- Add an optional domain on the field to limit tracking on certain + condition. -.. |image| image:: https://raw.githubusercontent.com/OCA/server-tools/17.0/tracking_manager/static/description/model_view.png -.. |image1| image:: https://raw.githubusercontent.com/OCA/server-tools/17.0/tracking_manager/static/description/fields.png +.. image:: https://raw.githubusercontent.com/OCA/server-tools/19.0/tracking_manager_domain/static/description/fields.drawio.png + :alt: fields Bug Tracker =========== @@ -72,7 +60,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -82,13 +70,13 @@ Credits Authors ------- -* Akretion +* glueckkanja AG Contributors ------------ -- Kévin Roche -- Sébastien BEAU +- Christopher Rogos +- Nils Coenen Maintainers ----------- @@ -103,17 +91,14 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -.. |maintainer-Kev-Roche| image:: https://github.com/Kev-Roche.png?size=40px - :target: https://github.com/Kev-Roche - :alt: Kev-Roche -.. |maintainer-sebastienbeau| image:: https://github.com/sebastienbeau.png?size=40px - :target: https://github.com/sebastienbeau - :alt: sebastienbeau +.. |maintainer-CRogos| image:: https://github.com/CRogos.png?size=40px + :target: https://github.com/CRogos + :alt: CRogos -Current `maintainers `__: +Current `maintainer `__: -|maintainer-Kev-Roche| |maintainer-sebastienbeau| +|maintainer-CRogos| -This module is part of the `OCA/server-tools `_ project on GitHub. +This module is part of the `OCA/server-tools `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/tracking_manager_domain/__manifest__.py b/tracking_manager_domain/__manifest__.py index fc84cda2a2c..9023d23546d 100644 --- a/tracking_manager_domain/__manifest__.py +++ b/tracking_manager_domain/__manifest__.py @@ -6,7 +6,7 @@ "summary": "This module extends the tracking manager to" " allow to define a domain on fields to track changes " "only when certain conditions apply.", - "version": "18.0.1.0.1", + "version": "19.0.1.0.0", "category": "Tools", "website": "https://github.com/OCA/server-tools", "author": "glueckkanja AG, Odoo Community Association (OCA)", diff --git a/tracking_manager_domain/models/models.py b/tracking_manager_domain/models/models.py index 47b0472dc88..701f734cb33 100644 --- a/tracking_manager_domain/models/models.py +++ b/tracking_manager_domain/models/models.py @@ -13,7 +13,7 @@ class Base(models.AbstractModel): @tools.ormcache() def _tm_all_tracking_domain_fields(self): - cr = self._cr + cr = self.env.cr cr.execute( """ SELECT id, model, name, tracking_domain diff --git a/tracking_manager_domain/readme/CONTRIBUTORS.md b/tracking_manager_domain/readme/CONTRIBUTORS.md index 7d854509d7b..335b6f2a372 100644 --- a/tracking_manager_domain/readme/CONTRIBUTORS.md +++ b/tracking_manager_domain/readme/CONTRIBUTORS.md @@ -1 +1,2 @@ -- Christopher Rogos \<\> \ No newline at end of file +- Christopher Rogos \<\> +- Nils Coenen \<\> diff --git a/tracking_manager_domain/readme/DESCRIPTION.md b/tracking_manager_domain/readme/DESCRIPTION.md new file mode 100644 index 00000000000..f0562ad5bb5 --- /dev/null +++ b/tracking_manager_domain/readme/DESCRIPTION.md @@ -0,0 +1,6 @@ +This module extends the Tracking Manager module to allow defining a domain +filter on tracked fields. Changes are only recorded when the specified domain +condition is satisfied on the parent record. + +This is useful when you want to limit tracking to specific record states or +conditions, for example only tracking a field when a partner is a company. diff --git a/tracking_manager_domain/static/description/index.html b/tracking_manager_domain/static/description/index.html index a74a569a5cb..0c9f57f7626 100644 --- a/tracking_manager_domain/static/description/index.html +++ b/tracking_manager_domain/static/description/index.html @@ -3,7 +3,7 @@ -Tracking Manager +README.rst -
-

Tracking Manager

+
+ + +Odoo Community Association + +
+

Tracking Manager Domain

-

Beta License: AGPL-3 OCA/server-tools Translate me on Weblate Try me on Runboat

-

This module allows to track all fields on every model that has a -chatter, including one2many and many2many ones. This excludes the -computed, readonly, related fields by default. In addition, line changes -of a one2many field can be tracked (e.g. product_uom_qty of an -order_line in a sale order).

+

Beta License: AGPL-3 OCA/server-tools Translate me on Weblate Try me on Runboat

+

This module extends the Tracking Manager module to allow defining a +domain filter on tracked fields. Changes are only recorded when the +specified domain condition is satisfied on the parent record.

+

This is useful when you want to limit tracking to specific record states +or conditions, for example only tracking a field when a partner is a +company.

Table of contents

    @@ -389,55 +395,38 @@

    Tracking Manager

-

Usage

+

Usage

    -
  • In setting > models: select a model
  • -
  • Check “Active” under Custom Tracking.
  • -
  • You have two options - 1) manually configure tracked fields one by -one, or 2) determine tracked fields based on a specific domain.
  • -
  • For 1) manually configure tracked fields one by one
      -
    • Click on Tracked Fields smart button, and select/unselect Custom -Tracking.
    • +
    • Add an optional domain on the field to limit tracking on certain +condition.
    -
  • -
  • For 2) determine tracked fields based on a specific domain
      -
    • Select “Automatic configuration”, and then set the domain -accordingly.
    • -
    • Click “Update” for the domain to take effect.
    • -
    -
  • -
-

image

-
    -
  • Then select the fields to track
  • -
-

image1

+fields
-

Bug Tracker

+

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed -feedback.

+feedback.

Do not contact contributors directly about support or help with technical issues.

-

Credits

+

Credits

-

Authors

+

Authors

    -
  • Akretion
  • +
  • glueckkanja AG
-

Contributors

+

Contributors

-

Maintainers

+

Maintainers

This module is maintained by the OCA.

Odoo Community Association @@ -445,12 +434,13 @@

Maintainers

OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

-

Current maintainers:

-

Kev-Roche sebastienbeau

-

This module is part of the OCA/server-tools project on GitHub.

+

Current maintainer:

+

CRogos

+

This module is part of the OCA/server-tools project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
diff --git a/tracking_manager_domain/tests/test_models.py b/tracking_manager_domain/tests/test_models.py index 37c60741cf2..d7942596d26 100644 --- a/tracking_manager_domain/tests/test_models.py +++ b/tracking_manager_domain/tests/test_models.py @@ -12,16 +12,16 @@ def setUp(self): super().setUp() self.Field = self.env["ir.model.fields"] - self.field_mobile = self.Field.search( - [("model", "=", "res.partner"), ("name", "=", "mobile")], limit=1 + self.field_phone = self.Field.search( + [("model", "=", "res.partner"), ("name", "=", "phone")], limit=1 ) - self.field_mobile.write({"tracking_domain": "[('is_company', '=', True)]"}) + self.field_phone.write({"tracking_domain": "[('is_company', '=', True)]"}) def test_mail_track(self): # arrange - company = self.env.ref("base.res_partner_12") - tracked_fields = {"mobile": {"string": "Mobile", "type": "char"}} - initial_values = {"mobile": "1234"} + company = self.env.ref("base.main_partner") + tracked_fields = {"phone": {"string": "Phone", "type": "char"}} + initial_values = {"phone": "1234"} # act changes, tracking_value_ids = company._mail_track( @@ -35,14 +35,14 @@ def test_mail_track(self): # Check if the field is tracked correctly tracking_value = tracking_value_ids[0][2] - self.assertEqual(tracking_value["field_id"], self.field_mobile.id) + self.assertEqual(tracking_value["field_id"], self.field_phone.id) def test_mail_track_with_non_matching_domain(self): # arrange person = self.env.ref("base.partner_admin") - tracked_fields = {"mobile": {"string": "Mobile", "type": "char"}} - initial_values = {"mobile": "1234"} + tracked_fields = {"phone": {"string": "Phone", "type": "char"}} + initial_values = {"phone": "1234"} # act changes, tracking_value_ids = person._mail_track(tracked_fields, initial_values) @@ -52,10 +52,9 @@ def test_mail_track_with_non_matching_domain(self): self.assertEqual(len(changes), 0) self.assertEqual(len(tracking_value_ids), 0) - # TODO: add properties support on domain filters def test_mail_track_lead_properties_noerror(self): # arrange - person = self.env.ref("base.res_partner_12") + person = self.env.ref("base.main_partner") tracked_fields = { "lead_properties": {"string": "Properties", "type": "properties"} } @@ -79,8 +78,102 @@ def test_mail_track_lead_properties_noerror(self): ] with patch( - "odoo.addons.tracking_manager.models.models.Base._mail_track", + "odoo.addons.mail.models.models.Base._mail_track", return_value=(patch_changes, patch_tracking_value_ids), ): # act person._mail_track(tracked_fields, initial_values) + + def test_tm_post_message_keep_all(self): + partner = self.env.ref("base.main_partner") + + data = { + "res.partner": {partner.id: {"phone": [{"mode": "test", "message": "msg"}]}} + } + + fields = { + "res.partner": { + "phone": {"id": 1, "tracking_domain": "[('is_company', '=', True)]"} + } + } + + with patch( + "odoo.addons.tracking_manager.models.models.Base._tm_post_message", + return_value=data, + ): + with patch.object( + type(self.env["base"]), + "_tm_all_tracking_domain_fields", + return_value=fields, + ): + res = self.env["base"]._tm_post_message(data) + + self.assertIn(partner.id, res["res.partner"]) + + def test_tm_post_message_remove_field(self): + partner = self.env.ref("base.main_partner") + + data = { + "res.partner": {partner.id: {"phone": [{"mode": "test", "message": "msg"}]}} + } + + fields = { + "res.partner": { + "phone": {"id": 1, "tracking_domain": "[('is_company', '=', False)]"} + } + } + + with patch( + "odoo.addons.tracking_manager.models.models.Base._tm_post_message", + return_value={"res.partner": {}}, + ): + with patch.object( + type(self.env["base"]), + "_tm_all_tracking_domain_fields", + return_value=fields, + ): + res = self.env["base"]._tm_post_message(data) + + self.assertEqual(res, {"res.partner": {}}) + + def test_tm_post_message_missing_record(self): + data = { + "res.partner": {999999: {"phone": [{"mode": "test", "message": "msg"}]}} + } + + fields = {"res.partner": {"phone": {"id": 1, "tracking_domain": "[]"}}} + + with patch( + "odoo.addons.tracking_manager.models.models.Base._tm_post_message", + return_value={"res.partner": {}}, + ): + with patch.object( + type(self.env["base"]), + "_tm_all_tracking_domain_fields", + return_value=fields, + ): + res = self.env["base"]._tm_post_message(data) + + self.assertEqual(res, {"res.partner": {}}) + + def test_tm_post_message_no_tracking_fields(self): + partner = self.env.ref("base.main_partner") + + data = { + "res.partner": {partner.id: {"phone": [{"mode": "test", "message": "msg"}]}} + } + + fields = {"res.partner": {}} + + with patch( + "odoo.addons.tracking_manager.models.models.Base._tm_post_message", + return_value=data, + ): + with patch.object( + type(self.env["base"]), + "_tm_all_tracking_domain_fields", + return_value=fields, + ): + res = self.env["base"]._tm_post_message(data) + + self.assertEqual(res, data) From 36945374d71a1da444884dbdf052f091c25ff108 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Fri, 29 May 2026 08:54:36 +0000 Subject: [PATCH 8/9] [UPD] Update tracking_manager_domain.pot --- .../i18n/tracking_manager_domain.pot | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tracking_manager_domain/i18n/tracking_manager_domain.pot b/tracking_manager_domain/i18n/tracking_manager_domain.pot index 734ef6eca23..f030e3fce49 100644 --- a/tracking_manager_domain/i18n/tracking_manager_domain.pot +++ b/tracking_manager_domain/i18n/tracking_manager_domain.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 18.0\n" +"Project-Id-Version: Odoo Server 19.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" @@ -21,13 +21,13 @@ msgid "" msgstr "" #. module: tracking_manager_domain -#: model:ir.model.fields,field_description:tracking_manager_domain.field_ir_model_fields__assigned_attachment_ids -msgid "Assigned Attachments" +#: model:ir.model,name:tracking_manager_domain.model_base +msgid "Base" msgstr "" #. module: tracking_manager_domain -#: model:ir.model,name:tracking_manager_domain.model_base -msgid "Base" +#: model:ir.model.fields,field_description:tracking_manager_domain.field_ir_model_fields__display_name +msgid "Display Name" msgstr "" #. module: tracking_manager_domain @@ -36,8 +36,8 @@ msgid "Fields" msgstr "" #. module: tracking_manager_domain -#: model:ir.model.fields,field_description:tracking_manager_domain.field_ir_model_fields__smart_search -msgid "Smart Search" +#: model:ir.model.fields,field_description:tracking_manager_domain.field_ir_model_fields__id +msgid "ID" msgstr "" #. module: tracking_manager_domain From 57df9ae7e0f27b1dd8b9682b072aa414473f75db Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Fri, 29 May 2026 08:58:42 +0000 Subject: [PATCH 9/9] [BOT] post-merge updates --- README.md | 1 + setup/_metapackage/pyproject.toml | 3 ++- tracking_manager_domain/README.rst | 15 ++++++++------- .../static/description/index.html | 4 ++-- 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 79fc4bae845..cbb2c90eaab 100644 --- a/README.md +++ b/README.md @@ -42,6 +42,7 @@ addon | version | maintainers | summary [session_db](session_db/) | 19.0.1.0.0 | sbidoul | Store sessions in DB [test_auditlog](test_auditlog/) | 19.0.1.0.0 | | Additional unit tests for Audit Log based on accounting models [tracking_manager](tracking_manager/) | 19.0.1.0.0 | Kev-Roche sebastienbeau | This module tracks all fields of a model, including one2many and many2many ones. +[tracking_manager_domain](tracking_manager_domain/) | 19.0.1.0.0 | CRogos | This module extends the tracking manager to allow to define a domain on fields to track changes only when certain conditions apply. [upgrade_analysis](upgrade_analysis/) | 19.0.1.0.4 | StefanRijnhart legalsylvain | Performs a difference analysis between modules installed on two different Odoo instances [//]: # (end addons) diff --git a/setup/_metapackage/pyproject.toml b/setup/_metapackage/pyproject.toml index 825300504f7..b117a7bc5bb 100644 --- a/setup/_metapackage/pyproject.toml +++ b/setup/_metapackage/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "odoo-addons-oca-server-tools" -version = "19.0.20260528.0" +version = "19.0.20260529.0" dependencies = [ "odoo-addon-auditlog==19.0.*", "odoo-addon-base_cron_exclusion==19.0.*", @@ -23,6 +23,7 @@ dependencies = [ "odoo-addon-session_db==19.0.*", "odoo-addon-test_auditlog==19.0.*", "odoo-addon-tracking_manager==19.0.*", + "odoo-addon-tracking_manager_domain==19.0.*", "odoo-addon-upgrade_analysis==19.0.*", ] classifiers=[ diff --git a/tracking_manager_domain/README.rst b/tracking_manager_domain/README.rst index 6d79f429dec..434910cdaa0 100644 --- a/tracking_manager_domain/README.rst +++ b/tracking_manager_domain/README.rst @@ -11,7 +11,7 @@ Tracking Manager Domain !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:b0730db6a25a61791c804b38d6ae18e8f6934cafe024c1121aa23e9967e0b532 + !! source digest: sha256:5095c579ba93e262e1134ea8e98685295868b7bdb5b1e544d1289c6f8e19d230 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png @@ -48,11 +48,12 @@ company. Usage ===== -- Add an optional domain on the field to limit tracking on certain - condition. +- Add an optional domain on the field to limit tracking on certain + condition. -.. image:: https://raw.githubusercontent.com/OCA/server-tools/19.0/tracking_manager_domain/static/description/fields.drawio.png - :alt: fields +|fields| + +.. |fields| image:: https://raw.githubusercontent.com/OCA/server-tools/19.0/tracking_manager_domain/static/description/fields.drawio.png Bug Tracker =========== @@ -75,8 +76,8 @@ Authors Contributors ------------ -- Christopher Rogos -- Nils Coenen +- Christopher Rogos +- Nils Coenen Maintainers ----------- diff --git a/tracking_manager_domain/static/description/index.html b/tracking_manager_domain/static/description/index.html index 0c9f57f7626..5886b94a9eb 100644 --- a/tracking_manager_domain/static/description/index.html +++ b/tracking_manager_domain/static/description/index.html @@ -372,7 +372,7 @@

Tracking Manager Domain

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:b0730db6a25a61791c804b38d6ae18e8f6934cafe024c1121aa23e9967e0b532 +!! source digest: sha256:5095c579ba93e262e1134ea8e98685295868b7bdb5b1e544d1289c6f8e19d230 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

Beta License: AGPL-3 OCA/server-tools Translate me on Weblate Try me on Runboat

This module extends the Tracking Manager module to allow defining a @@ -400,7 +400,7 @@

Usage

  • Add an optional domain on the field to limit tracking on certain condition.
  • -fields +

    fields