[16.0][ADD] cetmix_tower_product: add module#317
Conversation
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the WalkthroughThis change introduces a new Odoo module, Changes
Comment |
There was a problem hiding this comment.
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 ofcreate. Slightly cleaner and avoids an unnecessary union on an empty recordset.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro
📒 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.mdcetmix_tower_product/readme/CONFIGURE.mdcetmix_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 neededThis
pyproject.tomlis maintained by the CI/CD system (whool) and should not be modified manually.cetmix_tower_product/__init__.py (1)
1-4: Correct package initialization
Themodelssubpackage 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 ofproduct_attributeandproduct_attribute_valueguarantee 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 GroupThe new
tower_fieldsgroup is correctly injected after the main fields section, providing a clear separation for Tower configuration.
17-26: Action Button: Sync from Tower VariableThe sync button is properly configured with visibility logic (
attrs) and styled for prominence.
29-45: Tree View Enhancement: Tower FieldsThe two new read-only fields in the
value_idstree 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 ValueThe global Tower variable value record is correctly defined with
noupdate="1"andis_globalflag.
10-18: Product Attribute RecordsThe attribute definitions link the correct Tower variables and set the display types appropriately.
37-82: Odoo Version Attribute ValuesValue records for Odoo Version are accurately mapped to Tower options with consistent
tower_variable_reference.
85-114: Language Attribute ValuesLanguage values are properly created and linked to Tower options.
117-123: Operating System Attribute ValueThe OS value uses
tower_variable_value_idfor the global variable, aligning with design.
125-134: Demo Product TemplateThe service-type product template is defined with necessary fields for the demo.
139-150: Assign Odoo Version to Demo ProductThe attribute line correctly assigns all version values via the
(6, 0, [...])command.
153-162: Assign Language to Demo ProductLanguage attribute line is properly configured with explicit values.
166-170: Assign OS to Demo ProductOS attribute line is accurately set with the Ubuntu value reference.
3f65809 to
50a05c5
Compare
0161ebf to
8ce4fcf
Compare
|
/ocabot rebase |
|
Congratulations, PR rebased to 16.0. |
8ce4fcf to
9b1fb3b
Compare
9b1fb3b to
973ec3e
Compare
|
/ocabot rebase |
|
Congratulations, PR rebased to 16.0. |
ba54515 to
5be4a40
Compare
|
/ocabot rebase |
|
Congratulations, PR rebased to 16.0. |
5be4a40 to
d8bdc80
Compare
…c with product.attributes
…th tower variable option
…ttribute values from the product attribute connected to Cetmix tower
remove variable reference from the attribute values view task:4630
d8bdc80 to
6739fcc
Compare
| return records | ||
|
|
||
| def _batch_trigger_product_attribute_autosync(self, variables): | ||
| """Batch trigger auto-sync for multiple variables to avoid N+1 queries""" |
There was a problem hiding this comment.
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( |
There was a problem hiding this comment.
Cannot those values be retrieved without search using this field?
| help="Tower variable associated with this attribute value", | ||
| ) | ||
|
|
||
| is_from_tower = fields.Boolean( |
There was a problem hiding this comment.
Do we really need this field? Cannot the tower_option_id be used instead?

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
Documentation
Demo Data