From 50663c77005b5157b939cd37fd9d4204130b745e Mon Sep 17 00:00:00 2001 From: git_admin Date: Mon, 27 Apr 2026 08:16:00 +0000 Subject: [PATCH] Tower: upload cetmix_tower_server 16.0.3.0.1 (via marketplace) --- .../models/cx_tower_metadata_mixin.py | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 addons/cetmix_tower_server/models/cx_tower_metadata_mixin.py diff --git a/addons/cetmix_tower_server/models/cx_tower_metadata_mixin.py b/addons/cetmix_tower_server/models/cx_tower_metadata_mixin.py new file mode 100644 index 0000000..0d0b2f7 --- /dev/null +++ b/addons/cetmix_tower_server/models/cx_tower_metadata_mixin.py @@ -0,0 +1,45 @@ +# Copyright (C) 2026 Cetmix OÜ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo import api, fields, models + + +class CxTowerMetadataMixin(models.AbstractModel): + """Used to implement metadata in models.""" + + _name = "cx.tower.metadata.mixin" + _description = "Cetmix Tower metadata mixin" + + metadata = fields.Json( + help="Additional metadata for this record", + readonly=True, + groups="cetmix_tower_server.group_manager", + ) + metadata_text = fields.Text( + help="Additional metadata for this record", + compute="_compute_metadata_text", + groups="cetmix_tower_server.group_manager", + ) + + @api.depends("metadata") + def _compute_metadata_text(self): + """ + Compute the metadata text for the record + """ + for record in self: + record.metadata_text = str(record.metadata) if record.metadata else False + + def update_metadata(self, metadata): + """ + Updates the metadata for the record. + Preserves the existing metadata. + + Args: + metadata (dict): The metadata to update the record with + + Returns: + bool: True if the metadata was updated, False otherwise + """ + self.ensure_one() + # Preserve the existing data in self.metadata. + self.write({"metadata": {**(self.metadata or {}), **metadata}}) + return True