Skip to content

[16.0][ADD] cetmix_tower_product: add module#317

Draft
Aldeigja wants to merge 11 commits into16.0from
16.0-t4630-cetmix_tower_product_add_module
Draft

[16.0][ADD] cetmix_tower_product: add module#317
Aldeigja wants to merge 11 commits into16.0from
16.0-t4630-cetmix_tower_product_add_module

Conversation

@Aldeigja
Copy link
Copy Markdown
Contributor

@Aldeigja Aldeigja commented Jun 16, 2025

Link Cetmix Tower variables to Odoo product attributes

​Description

This module provides integration between Cetmix Tower server configuration variables and Odoo product attributes.

Task: 4620

Summary by CodeRabbit

  • New Features

    • Introduced integration between Cetmix Tower server variables and Odoo product attributes, enabling direct linking and synchronization.
    • Added a manual synchronization button to import Tower variable values into product attributes, with automatic duplicate prevention.
    • Product attribute values now display Tower reference and origin information for enhanced traceability.
  • Documentation

    • Added comprehensive documentation, including configuration, usage guides, and HTML descriptions, to support setup and operation of the new module.
  • Demo Data

    • Provided demo records illustrating typical configurations and usage scenarios for the integration.

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Jun 16, 2025

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Walkthrough

This change introduces a new Odoo module, cetmix_tower_product, which integrates Cetmix Tower server configuration variables with Odoo product attributes. The update includes module initialization, manifest, demo data, model extensions for attribute synchronization with Tower variables, configuration and usage documentation, and XML view customizations for managing and syncing Tower-linked attribute values.

Changes

Files/Paths Change Summary
cetmix_tower_product/README.rst
cetmix_tower_product/readme/CONFIGURE.md
cetmix_tower_product/readme/DESCRIPTION.md
cetmix_tower_product/readme/USAGE.md
cetmix_tower_product/static/description/index.html
Added comprehensive documentation and guides: main README, configuration steps, module description, usage instructions, and a formatted HTML description, covering integration, setup, synchronization, usage scenarios, bug reporting, and credits.
cetmix_tower_product/init.py
cetmix_tower_product/models/init.py
Added package initialization files with imports to register models and submodules for Odoo module loading.
cetmix_tower_product/manifest.py Added Odoo module manifest declaring metadata, dependencies, data/demo files, and installability for cetmix_tower_product.
cetmix_tower_product/pyproject.toml Added build system configuration specifying whool as the build backend.
cetmix_tower_product/demo/demo_data.xml Added demo XML data: defines Tower variable values, product attributes linked to Tower variables, attribute values (Odoo versions, languages, OS), and a demo product template with these attributes and values.
cetmix_tower_product/models/product_attribute.py Extended product.attribute model: added a Many2one field to link attributes to Tower variables, and methods for manual synchronization of attribute values from Tower variables, handling both option-type and value-type variables, with duplicate prevention and user notifications.
cetmix_tower_product/models/product_attribute_value.py Extended product.attribute.value model: added fields for Tower variable references, links to Tower options/values, computed Tower variable field, and a boolean for Tower origin; includes methods for computing fields, retrieving actual Tower values, and opening related Tower records.
cetmix_tower_product/views/product_attribute_views.xml Added XML view customizations: new group and field for Tower integration in product attribute form, a sync button, and extra columns in attribute value tree view for Tower references and origin status.

Comment @coderabbitai help to get the list of available commands and usage tips.

@Aldeigja Aldeigja marked this pull request as draft June 16, 2025 17:40
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 13

♻️ Duplicate comments (1)
cetmix_tower_product/models/product_attribute.py (1)

86-88: Minor: let ORM return freshly created records directly

created_values |= self.env["product.attribute.value"].create(vals_list) is correct, but you can drop the temporary variable and just return the result of create. Slightly cleaner and avoids an unnecessary union on an empty recordset.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 16febb8 and 4b24016.

📒 Files selected for processing (13)
  • cetmix_tower_product/README.rst (1 hunks)
  • cetmix_tower_product/__init__.py (1 hunks)
  • cetmix_tower_product/__manifest__.py (1 hunks)
  • cetmix_tower_product/demo/demo_data.xml (1 hunks)
  • cetmix_tower_product/models/__init__.py (1 hunks)
  • cetmix_tower_product/models/product_attribute.py (1 hunks)
  • cetmix_tower_product/models/product_attribute_value.py (1 hunks)
  • cetmix_tower_product/pyproject.toml (1 hunks)
  • cetmix_tower_product/readme/CONFIGURE.md (1 hunks)
  • cetmix_tower_product/readme/DESCRIPTION.md (1 hunks)
  • cetmix_tower_product/readme/USAGE.md (1 hunks)
  • cetmix_tower_product/static/description/index.html (1 hunks)
  • cetmix_tower_product/views/product_attribute_views.xml (1 hunks)
🧰 Additional context used
📓 Path-based instructions (3)
`**/readme/*.*`: Never ask to add a top header in any file in these locations

**/readme/*.*: Never ask to add a top header in any file in these locations

  • cetmix_tower_product/readme/DESCRIPTION.md
  • cetmix_tower_product/readme/CONFIGURE.md
  • cetmix_tower_product/readme/USAGE.md
`**/README.rst`: Never check this file

**/README.rst: Never check this file

  • cetmix_tower_product/README.rst
`**/static/description/index.html`: Never check this file.

**/static/description/index.html: Never check this file.

  • cetmix_tower_product/static/description/index.html
🧠 Learnings (6)
📓 Common learnings
Learnt from: ivs-cetmix
PR: cetmix/cetmix-tower#273
File: cetmix_tower/readme/HISTORY.md:1-1
Timestamp: 2025-04-27T19:48:30.965Z
Learning: PR #273 titled "[17.0][MIG] cetmix_tower" focuses strictly on migrating the cetmix_tower module to Odoo version 17.0 without refactoring or code improvements, following the standard approach for migrations where functionality is first preserved before making enhancements in subsequent PRs.
Learnt from: ivs-cetmix
PR: cetmix/cetmix-tower#266
File: cetmix_tower/readme/newsfragments/4264.feature:1-1
Timestamp: 2025-04-24T08:19:31.548Z
Learning: In the cetmix-tower repository, the `cetmix_tower` module is a helper/meta-module used for the Odoo App Store that maintains update history (newsfragments) for all modules it depends on, including changes implemented in other modules like `cetmix_tower_server`.
Learnt from: ivs-cetmix
PR: cetmix/cetmix-tower#293
File: cetmix_tower/readme/newsfragments/4679.bugfix:1-1
Timestamp: 2025-05-16T21:26:45.117Z
Learning: The cetmix_tower module is published in the Odoo App Store and must contain information (newsfragments) about all tower modules, even if that means duplicating some files between cetmix_tower and other modules like cetmix_tower_server.
cetmix_tower_product/pyproject.toml (5)
Learnt from: geomer198
PR: cetmix/netconnections-cetmix#88
File: nc_mail_parser/pyproject.toml:1-3
Timestamp: 2025-05-05T13:38:06.141Z
Learning: In the cetmix/netconnections-cetmix repository, pyproject.toml files are automatically generated with "whool" as the build system requirement and should not be manually modified. These files should be ignored during code reviews, especially for migration PRs.
Learnt from: geomer198
PR: cetmix/netconnections-cetmix#77
File: product_import_via_json/pyproject.toml:1-3
Timestamp: 2025-04-13T08:38:23.518Z
Learning: In the product_import_via_json module, the pyproject.toml file is created automatically with "whool" as the build system requirement and "whool.buildapi" as the build backend. This file should not be modified manually.
Learnt from: Aldeigja
PR: cetmix/cetmix-tower#292
File: cetmix_tower_aws/pyproject.toml:1-3
Timestamp: 2025-05-16T18:29:56.104Z
Learning: The `pyproject.toml` file in the cetmix-tower repository is maintained by the CI/CD system and should not be manually modified during code reviews.
Learnt from: Mohajiro
PR: cetmix/cetmix-partner-contact#21
File: prt_partner_tweaks_access/pyproject.toml:1-3
Timestamp: 2025-05-27T07:26:30.751Z
Learning: In Odoo modules using the whool build system, pyproject.toml files are auto-generated and should not be manually modified. These files typically contain only the build system configuration for whool.buildapi.
Learnt from: Mohajiro
PR: cetmix/cetmix-stock#54
File: prt_product_tweaks_sku/pyproject.toml:1-3
Timestamp: 2025-05-29T09:02:35.267Z
Learning: In Odoo projects using whool, the pyproject.toml files are system-generated and should not be manually edited, as changes would be overwritten during the next generation cycle.
cetmix_tower_product/__manifest__.py (2)
Learnt from: ivs-cetmix
PR: cetmix/cetmix-tower#293
File: cetmix_tower/readme/newsfragments/4679.bugfix:1-1
Timestamp: 2025-05-16T21:26:45.117Z
Learning: The cetmix_tower module is published in the Odoo App Store and must contain information (newsfragments) about all tower modules, even if that means duplicating some files between cetmix_tower and other modules like cetmix_tower_server.
Learnt from: ivs-cetmix
PR: cetmix/cetmix-tower#266
File: cetmix_tower/readme/newsfragments/4264.feature:1-1
Timestamp: 2025-04-24T08:19:31.548Z
Learning: In the cetmix-tower repository, the `cetmix_tower` module is a helper/meta-module used for the Odoo App Store that maintains update history (newsfragments) for all modules it depends on, including changes implemented in other modules like `cetmix_tower_server`.
cetmix_tower_product/README.rst (9)
Learnt from: ivs-cetmix
PR: cetmix/cetmix-tower#243
File: cetmix_tower_yaml/README.rst:50-57
Timestamp: 2025-04-09T10:48:15.541Z
Learning: README.rst files in the cetmix-tower repository are automatically generated by oca-gen-addon-readme tool and manual changes to these files would be overwritten. No suggestions should be made regarding modifying the content or format of these files.
Learnt from: ivs-cetmix
PR: cetmix/cetmix-tower#237
File: cetmix_tower_server/README.rst:20-20
Timestamp: 2025-03-31T20:04:28.345Z
Learning: The README.rst file in cetmix-tower is generated automatically from the repository template and should not be manually edited as changes would be overwritten.
Learnt from: Mohajiro
PR: cetmix/cetmix-tower#306
File: cetmix_tower_ovh/README.rst:16-16
Timestamp: 2025-06-06T11:30:18.872Z
Learning: README.rst files in the cetmix-tower codebase are auto-generated by oca-gen-addon-readme and should not be manually edited, as any changes would be overwritten during regeneration.
Learnt from: ivs-cetmix
PR: cetmix/cetmix-tower#286
File: cetmix_tower_server/README.rst:16-16
Timestamp: 2025-05-11T22:43:27.137Z
Learning: README.rst files in the cetmix-tower repository are auto-generated by oca-gen-addon-readme and should not be edited directly as changes will be overwritten.
Learnt from: ivs-cetmix
PR: cetmix/cetmix-tower#269
File: cetmix_tower_server_queue/readme/USAGE.md:1-1
Timestamp: 2025-04-24T21:13:42.090Z
Learning: For modules in the cetmix-tower repository that follow OCA guidelines, readme files (USAGE.md, CONFIGURE.md, DESCRIPTION.md, etc.) in the /readme directory must be included as they are required source files for the oca-gen-addon-readme tool which automatically generates README.rst and index.html documentation files.
Learnt from: ivs-cetmix
PR: cetmix/cetmix-tower#243
File: cetmix_tower_server_queue/README.rst:53-60
Timestamp: 2025-04-09T10:52:47.734Z
Learning: README.rst files in the cetmix-tower repositories are automatically generated by oca-gen-addon-readme and should not be modified manually as changes will be overwritten.
Learnt from: ivs-cetmix
PR: cetmix/cetmix-tower#237
File: cetmix_tower_server/README.rst:1005-1006
Timestamp: 2025-03-31T20:04:24.444Z
Learning: The README.rst file in cetmix_tower_server is automatically generated from a repository template and should not be manually edited or have its issues flagged in reviews.
Learnt from: ivs-cetmix
PR: cetmix/cetmix-tower#243
File: cetmix_tower_server/README.rst:54-61
Timestamp: 2025-04-09T10:48:22.294Z
Learning: The README.rst files in the cetmix-tower repository are automatically generated by oca-gen-addon-readme tool, and comments about their content should be avoided during code reviews.
Learnt from: ivs-cetmix
PR: cetmix/cetmix-tower#176
File: cetmix_tower_git/readme/DESCRIPTION.md:1-3
Timestamp: 2025-01-17T23:35:25.657Z
Learning: Documentation for Cetmix Tower modules is managed in a separate repository, not within the module's readme files.
cetmix_tower_product/views/product_attribute_views.xml (1)
Learnt from: nikola-vlavceski-solisa
PR: cetmix/cetmix-tower#159
File: cetmix_tower_server/views/cx_tower_variable_view.xml:28-28
Timestamp: 2024-12-12T08:10:24.081Z
Learning: In `cetmix_tower_server/views/cx_tower_variable_view.xml`, the `option_ids` field should remain without additional attributes or subviews unless specified in the requirements.
cetmix_tower_product/static/description/index.html (8)
Learnt from: ivs-cetmix
PR: cetmix/cetmix-tower#240
File: cetmix_tower_server/static/description/index.html:375-375
Timestamp: 2025-04-02T14:37:42.558Z
Learning: The file `cetmix_tower_server/static/description/index.html` is automatically generated by the oca-gen-addon-readme tool and should not be edited directly. Any changes should be made to the source files that generate this documentation.
Learnt from: ivs-cetmix
PR: cetmix/cetmix-tower#146
File: cetmix_tower_yaml/static/description/index.html:428-445
Timestamp: 2024-11-26T00:19:14.058Z
Learning: The file `cetmix_tower_yaml/static/description/index.html` is generated automatically and should not be modified directly. Required information is provided in `CONFIGURE.md`.
Learnt from: tendil
PR: cetmix/cetmix-tower#187
File: cetmix_tower_server/static/description/index.html:1127-1128
Timestamp: 2025-01-17T19:38:57.484Z
Learning: The file `cetmix_tower_server/static/description/index.html` is auto-generated by oca-gen-addon-readme and should not be modified manually as changes will be overwritten.
Learnt from: ivs-cetmix
PR: cetmix/cetmix-tower#240
File: cetmix_tower_server/static/description/index.html:373-373
Timestamp: 2025-04-02T14:37:51.109Z
Learning: The file `cetmix_tower_server/static/description/index.html` is automatically generated by oca-gen-addon-readme and should not be modified directly as changes would be overwritten during regeneration.
Learnt from: ivs-cetmix
PR: cetmix/cetmix-tower#146
File: cetmix_tower_yaml/static/description/index.html:447-484
Timestamp: 2024-11-26T00:31:32.494Z
Learning: The file `cetmix_tower_yaml/static/description/index.html` is auto-generated and should not be manually edited.
Learnt from: tendil
PR: cetmix/cetmix-tower#187
File: cetmix_tower_server/static/description/index.html:1128-1129
Timestamp: 2025-01-27T00:02:38.176Z
Learning: Files in `cetmix_tower_server/static/description/` directory, including `index.html`, are auto-generated by oca-gen-addon-readme and should not be modified directly. Changes should be made to the source RST files instead.
Learnt from: ivs-cetmix
PR: cetmix/cetmix-tower#176
File: cetmix_tower_git/readme/USAGE.md:1-2
Timestamp: 2025-01-17T23:34:59.387Z
Learning: Documentation for Cetmix Tower modules is managed in a separate repository. Changes to documentation files should not be suggested in the main repository.
Learnt from: ivs-cetmix
PR: cetmix/cetmix-tower#146
File: cetmix_tower_yaml/static/description/index.html:419-424
Timestamp: 2024-11-26T00:19:46.558Z
Learning: In the `cetmix_tower_yaml` module, the file `static/description/index.html` is generated automatically from the MD files in the `/readme` directory.
🪛 Pylint (3.3.7)
cetmix_tower_product/__manifest__.py

[error] 1-1: Unrecognized option found: readme-template-url, manifest-required-authors, manifest-required-keys, manifest-deprecated-keys, license-allowed, valid-odoo-versions

(E0015)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'api-one-deprecated'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'api-one-multi-together'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'attribute-deprecated'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'class-camelcase'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'dangerous-view-replace-wo-priority'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'development-status-allowed'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'duplicate-id-csv'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'duplicate-xml-fields'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'duplicate-xml-record-id'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'eval-referenced'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'incoherent-interpreter-exec-perm'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'license-allowed'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'manifest-author-string'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'manifest-deprecated-key'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'manifest-required-author'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'manifest-required-key'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'manifest-version-format'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'method-compute'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'method-inverse'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'method-required-super'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'method-search'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'openerp-exception-warning'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'print-used'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'redundant-modulename-xml'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'relative-import'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'rst-syntax-error'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'sql-injection'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'translation-field'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'translation-required'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'use-vim-comment'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'wrong-tabs-instead-of-spaces'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'xml-syntax-error'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'attribute-string-redundant'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'character-not-valid-in-resource-link'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'consider-merging-classes-inherited'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'context-overridden'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'create-user-wo-reset-password'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'dangerous-filter-wo-user'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'dangerous-qweb-replace-wo-priority'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'deprecated-data-xml-node'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'deprecated-openerp-xml-node'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'duplicate-po-message-definition'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'except-pass'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'file-not-used'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'invalid-commit'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'manifest-maintainers-list'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'missing-newline-extrafiles'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'missing-readme'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'missing-return'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'odoo-addons-relative-import'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'old-api7-method-defined'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'po-msgstr-variables'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'po-syntax-error'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'renamed-field-parameter'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'resource-not-exist'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'str-format-used'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'test-folder-imported'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'translation-contains-variable'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'translation-positional-used'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'unnecessary-utf8-coding-comment'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'website-manifest-key-not-valid-uri'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'xml-attribute-translatable'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'xml-deprecated-qweb-directive'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'xml-deprecated-tree-attribute'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'external-request-timeout'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'consider-merging-classes-inherited'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'create-user-wo-reset-password'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'dangerous-filter-wo-user'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'file-not-used'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'invalid-commit'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'missing-manifest-dependency'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'missing-newline-extrafiles'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'missing-readme'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'no-utf8-coding-comment'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'odoo-addons-relative-import'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'old-api7-method-defined'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'too-complex'

(W0012)


[warning] 1-1: Unknown option value for '--enable', expected a valid pylint message and got 'unnecessary-utf8-coding-comment'

(W0012)


[error] 1-1: Plugin 'pylint_odoo' is impossible to load, is it installed ? ('No module named 'pylint_odoo'')

(E0013)


[warning] 3-22: Statement seems to have no effect

(W0104)

🪛 LanguageTool
cetmix_tower_product/readme/CONFIGURE.md

[uncategorized] ~30-~30: A period might be missing here.
Context: ...es with identical names are not created again ## Ongoing Management * **Re-sync at ...

(AI_EN_LECTOR_MISSING_PUNCTUATION_PERIOD)

🪛 markdownlint-cli2 (0.17.2)
cetmix_tower_product/readme/CONFIGURE.md

2-2: First line in a file should be a top-level heading
null

(MD041, first-line-heading, first-line-h1)


29-29: Lists should be surrounded by blank lines
null

(MD032, blanks-around-lists)


38-38: Trailing spaces
Expected: 0 or 2; Actual: 1

(MD009, no-trailing-spaces)


38-38: Files should end with a single newline character
null

(MD047, single-trailing-newline)

cetmix_tower_product/readme/USAGE.md

2-2: Multiple consecutive blank lines
Expected: 1; Actual: 2

(MD012, no-multiple-blanks)


3-3: First line in a file should be a top-level heading
null

(MD041, first-line-heading, first-line-h1)


7-7: Multiple consecutive blank lines
Expected: 1; Actual: 2

(MD012, no-multiple-blanks)


13-13: Trailing spaces
Expected: 0 or 2; Actual: 1

(MD009, no-trailing-spaces)


15-15: Files should end with a single newline character
null

(MD047, single-trailing-newline)

⏰ Context from checks skipped due to timeout of 90000ms (2)
  • GitHub Check: test with Odoo
  • GitHub Check: test with OCB
🔇 Additional comments (19)
cetmix_tower_product/pyproject.toml (1)

1-3: Automatically generated build configuration – no manual review needed

This pyproject.toml is maintained by the CI/CD system (whool) and should not be modified manually.

cetmix_tower_product/__init__.py (1)

1-4: Correct package initialization
The models subpackage is properly imported, ensuring your model extensions load when the module is initialized.

cetmix_tower_product/models/__init__.py (1)

1-5: Model package setup is correct
Imports of product_attribute and product_attribute_value guarantee that your model extensions are registered.

cetmix_tower_product/readme/DESCRIPTION.md (1)

1-9: Well-crafted module description
The DESCRIPTION.md clearly states the module’s purpose and key features; no changes needed.

cetmix_tower_product/__manifest__.py (1)

1-11: Ensure license consistency
The file header specifies “AGPL-3.0 or later” while the manifest uses "AGPL-3". Align these values to avoid confusion.

⛔ Skipped due to learnings
Learnt from: ivs-cetmix
PR: cetmix/cetmix-tower#273
File: cetmix_tower/__manifest__.py:1-2
Timestamp: 2025-04-27T19:39:50.223Z
Learning: In Odoo modules, the license field in __manifest__.py files is a selector field with predefined values like "AGPL-3", not a free text field. Meanwhile, file headers may use more verbose descriptions like "AGPL-3.0 or later".
cetmix_tower_product/views/product_attribute_views.xml (3)

10-14: UI Extension: Tower Integration Group

The new tower_fields group is correctly injected after the main fields section, providing a clear separation for Tower configuration.


17-26: Action Button: Sync from Tower Variable

The sync button is properly configured with visibility logic (attrs) and styled for prominence.


29-45: Tree View Enhancement: Tower Fields

The two new read-only fields in the value_ids tree view correctly expose Tower references while keeping the UI clean.

cetmix_tower_product/README.rst (1)

1-147: Auto-generated file – skip manual review.

This file is produced by oca-gen-addon-readme and will be overwritten on regeneration.

cetmix_tower_product/static/description/index.html (1)

1-496: Auto-generated HTML – skip manual edits.

This documentation is generated by Docutils/oca-gen-addon-readme and will be overwritten during builds.

cetmix_tower_product/demo/demo_data.xml (9)

3-8: Demo Global Tower Variable Value

The global Tower variable value record is correctly defined with noupdate="1" and is_global flag.


10-18: Product Attribute Records

The attribute definitions link the correct Tower variables and set the display types appropriately.


37-82: Odoo Version Attribute Values

Value records for Odoo Version are accurately mapped to Tower options with consistent tower_variable_reference.


85-114: Language Attribute Values

Language values are properly created and linked to Tower options.


117-123: Operating System Attribute Value

The OS value uses tower_variable_value_id for the global variable, aligning with design.


125-134: Demo Product Template

The service-type product template is defined with necessary fields for the demo.


139-150: Assign Odoo Version to Demo Product

The attribute line correctly assigns all version values via the (6, 0, [...]) command.


153-162: Assign Language to Demo Product

Language attribute line is properly configured with explicit values.


166-170: Assign OS to Demo Product

OS attribute line is accurately set with the Ubuntu value reference.

Comment thread cetmix_tower_product/readme/USAGE.md Outdated
Comment thread cetmix_tower_product/readme/USAGE.md
Comment thread cetmix_tower_product/readme/USAGE.md
Comment thread cetmix_tower_product/readme/CONFIGURE.md Outdated
Comment thread cetmix_tower_product/readme/CONFIGURE.md Outdated
Comment thread cetmix_tower_product/models/product_attribute_value.py
Comment thread cetmix_tower_product/models/product_attribute.py Outdated
Comment thread cetmix_tower_product/models/product_attribute.py Outdated
Comment thread cetmix_tower_product/models/product_attribute.py Outdated
Comment thread cetmix_tower_product/models/product_attribute.py
@Aldeigja Aldeigja force-pushed the 16.0-t4630-cetmix_tower_product_add_module branch 2 times, most recently from 3f65809 to 50a05c5 Compare June 17, 2025 08:43
@Aldeigja Aldeigja force-pushed the 16.0-t4630-cetmix_tower_product_add_module branch 3 times, most recently from 0161ebf to 8ce4fcf Compare July 4, 2025 18:53
@ivs-cetmix
Copy link
Copy Markdown
Contributor

/ocabot rebase

@CetmixGitDrone
Copy link
Copy Markdown

Congratulations, PR rebased to 16.0.

@CetmixGitDrone CetmixGitDrone force-pushed the 16.0-t4630-cetmix_tower_product_add_module branch from 8ce4fcf to 9b1fb3b Compare July 9, 2025 16:35
Copy link
Copy Markdown
Contributor

@ivs-cetmix ivs-cetmix left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need to use option names, not references as selection values. Variable reference doesn't have any practical value and can be removed from the view.

Image

@Aldeigja Aldeigja force-pushed the 16.0-t4630-cetmix_tower_product_add_module branch from 9b1fb3b to 973ec3e Compare July 29, 2025 03:55
@Aldeigja Aldeigja requested a review from ivs-cetmix July 29, 2025 12:16
@Aldeigja
Copy link
Copy Markdown
Contributor Author

/ocabot rebase

@CetmixGitDrone
Copy link
Copy Markdown

Congratulations, PR rebased to 16.0.

@CetmixGitDrone CetmixGitDrone force-pushed the 16.0-t4630-cetmix_tower_product_add_module branch from ba54515 to 5be4a40 Compare July 31, 2025 11:54
@Aldeigja
Copy link
Copy Markdown
Contributor Author

/ocabot rebase

@CetmixGitDrone
Copy link
Copy Markdown

Congratulations, PR rebased to 16.0.

@CetmixGitDrone CetmixGitDrone force-pushed the 16.0-t4630-cetmix_tower_product_add_module branch from 5be4a40 to d8bdc80 Compare October 17, 2025 11:43
@Aldeigja Aldeigja force-pushed the 16.0-t4630-cetmix_tower_product_add_module branch from d8bdc80 to 6739fcc Compare December 30, 2025 09:18
return records

def _batch_trigger_product_attribute_autosync(self, variables):
"""Batch trigger auto-sync for multiple variables to avoid N+1 queries"""
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pls complete the docstring

created_values = self.env["product.attribute.value"]

# Get all current attribute values for this attribute
remaining_attribute_values = self.env["product.attribute.value"].search(
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cannot those values be retrieved without search using this field?

help="Tower variable associated with this attribute value",
)

is_from_tower = fields.Boolean(
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we really need this field? Cannot the tower_option_id be used instead?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants