Product Profile

product_profile
REPOSITORY
REPOSITORYOCA/product-attribute
GIT
GIThttps://github.com/OCA/product-attribute.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/product-attribute/tree/18.0/product_profile
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYproduct
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion
COMMITTERS
COMMITTERSStefan Rijnhart, Weblate, OCA-git-bot, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/product-attribute
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:13
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale_management
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
    - account_payment
    - account
    - onboarding
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - payment
    - utm
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module provides easier products configuration (in one click). It
allows to configure a product template with only one field.

> ![](static/img/field.png)

**Main use case**: a lot of modules are installed (mrp, purchase, sale,
pos) and products configuration becomes harder for end users: too many
fields to take care of.

You are concerned that at any time a product might be not configured
correctly: this module is your friend.

Thanks to this module, a lot of complexity becomes hidden (default
behavior) to the end user and usability is optimal.

It eases as well the data migration by only specifying the profile field
instead of all fields which depend on it.

Note: This module is meant to be used by skilled people in database
fields creation within the ERP framework.

Additional feature: a default value can be attached to a profile (see §
Configuration, part 3)

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
product_profile_tree_view product.profile list New
product_template_form_view product.template xpath Inherits product.product_template_form_view
product_template_search_view product.template xpath Inherits product.product_template_search_view
view_general_configuration res.config.settings xpath Inherits sale.res_config_settings_view_form
Models touched (5)

New fields (0)

No new fields.

Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (0)

No new fields.

Public methods (1)
  • get_view(self, view_id=None, view_type='form', **options)
    @api.model

New fields (4)
  • explanation Text
    help='An explanation on the selected profile\n(not synchronized with product.template fields)' required=True
  • name Char
    help='Profile name displayed on product template\n(not synchronized with product.template fields)' required=True
  • sequence Integer
    help='Defines the order of the entries of profile_id field\n(not synchronized with product.template fields)'
  • type Selection
    default='consu' help="See 'detailed_type' field in product.template" required=True selection=[('consu', 'Consumable'), ('service', 'Service')]
Public methods (3)
  • check_useless_key_in_vals(self, vals, key)
    @api.model
    If replacing values are the same than in db, we remove them. Use cases: 1/ if in edition mode you switch a field from value A to value B and then go back to value A then save form, field is in vals whereas it shouldn't. 2/ if profile data are in csv file there are processed each time module containing csv is loaded we remove field from vals to minimize impact on products
  • get_view(self, view_id=None, view_type='form', **options)
    @api.model
    Add a warning to the form view which is otherwise auto-generated
  • write(self, vals)
    Profile update can impact products: we take care to propagate ad hoc changes. If on the profile at least one field has changed, re-apply its values on relevant products

New fields (2)
  • profile_explanation Text
    readonly=True related='profile_id.explanation'
  • profile_id Many2one → product.profile
    comodel_name='product.profile' string='Profile'
Public methods (1)
  • get_view(self, view_id=None, view_type='form', **options)
    @api.model
    fields_view_get comes from Model (not AbstractModel)

New fields (1)
  • group_product_profile Boolean
    help='Display fields computed by product profile module.\nFor debugging purpose see menu\nSales > Configuration \n> Products\n> Product Profiles' implied_group='product_profile.group_product_profile_user' string='Display Product Profile fields'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/product-attribute
GIT
GIThttps://github.com/OCA/product-attribute.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/product-attribute/tree/17.0/product_profile
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYproduct
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion
COMMITTERS
COMMITTERSOCA-git-bot, oca-ci, bosd
WEBSITE
WEBSITEhttps://github.com/OCA/product-attribute
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:06
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale_management
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - account_payment
    - account
    - onboarding
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - payment
    - utm
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module provides easier products configuration (in one click). It
allows to configure a product template with only one field.

> ![](static/img/field.png)

**Main use case**: a lot of modules are installed (mrp, purchase, sale,
pos) and products configuration becomes harder for end users: too many
fields to take care of.

You are concerned that at any time a product might be not configured
correctly: this module is your friend.

Thanks to this module, a lot of complexity becomes hidden (default
behavior) to the end user and usability is optimal.

It eases as well the data migration by only specifying the profile field
instead of all fields which depend on it.

Note: This module is meant to be used by skilled people in database
fields creation within the ERP framework.

Additional feature: a default value can be attached to a profile (see §
Configuration, part 3)

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
product_profile_tree_view product.profile tree New
product_template_form_view product.template xpath Inherits product.product_template_form_view
product_template_search_view product.template xpath Inherits product.product_template_search_view
view_general_configuration res.config.settings xpath Inherits sale.res_config_settings_view_form
Models touched (5)

New fields (0)

No new fields.

Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (0)

No new fields.

Public methods (1)
  • get_view(self, view_id=None, view_type='form', **options)
    @api.model

New fields (4)
  • detailed_type Selection
    default='consu' help="See 'detailed_type' field in product.template" required=True selection=[('consu', 'Consumable'), ('service', 'Service')]
  • explanation Text
    help='An explanation on the selected profile\n(not synchronized with product.template fields)' required=True
  • name Char
    help='Profile name displayed on product template\n(not synchronized with product.template fields)' required=True
  • sequence Integer
    help='Defines the order of the entries of profile_id field\n(not synchronized with product.template fields)'
Public methods (3)
  • check_useless_key_in_vals(self, vals, key)
    @api.model
    If replacing values are the same than in db, we remove them. Use cases: 1/ if in edition mode you switch a field from value A to value B and then go back to value A then save form, field is in vals whereas it shouldn't. 2/ if profile data are in csv file there are processed each time module containing csv is loaded we remove field from vals to minimize impact on products
  • fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
    @api.model
    Display a warning for end user if edit record
  • write(self, vals)
    Profile update can impact products: we take care to propagate ad hoc changes. If on the profile at least one field has changed, re-apply its values on relevant products

New fields (2)
  • profile_explanation Text
    readonly=True related='profile_id.explanation'
  • profile_id Many2one → product.profile
    comodel_name='product.profile' string='Profile'
Public methods (1)
  • get_view(self, view_id=None, view_type='form', **options)
    @api.model
    fields_view_get comes from Model (not AbstractModel)

New fields (1)
  • group_product_profile Boolean
    help='Display fields computed by product profile module.\nFor debugging purpose see menu\nSales > Configuration \n> Products\n> Product Profiles' implied_group='product_profile.group_product_profile_user' string='Display Product Profile fields'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/product-attribute
GIT
GIThttps://github.com/OCA/product-attribute.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/product-attribute/tree/16.0/product_profile
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYproduct
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, bosd
WEBSITE
WEBSITEhttps://github.com/OCA/product-attribute
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:48
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale_management
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - account_payment
    - account
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - payment
    - utm
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
product_profile_tree_view product.profile tree New
product_template_form_view product.template xpath Inherits product.product_template_form_view
product_template_search_view product.template xpath Inherits product.product_template_search_view
view_general_configuration res.config.settings xpath Inherits sale.res_config_settings_view_form
Models touched (5)

New fields (0)

No new fields.

Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (0)

No new fields.

Public methods (1)
  • get_view(self, view_id=None, view_type='form', **options)
    @api.model

New fields (4)
  • detailed_type Selection
    default='consu' help="See 'detailed_type' field in product.template" required=True selection=[('consu', 'Consumable'), ('service', 'Service')]
  • explanation Text
    help='An explanation on the selected profile\n(not synchronized with product.template fields)' required=True
  • name Char
    help='Profile name displayed on product template\n(not synchronized with product.template fields)' required=True
  • sequence Integer
    help='Defines the order of the entries of profile_id field\n(not synchronized with product.template fields)'
Public methods (3)
  • check_useless_key_in_vals(self, vals, key)
    @api.model
    If replacing values are the same than in db, we remove them. Use cases: 1/ if in edition mode you switch a field from value A to value B and then go back to value A then save form, field is in vals whereas it shouldn't. 2/ if profile data are in csv file there are processed each time module containing csv is loaded we remove field from vals to minimize impact on products
  • fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
    @api.model
    Display a warning for end user if edit record
  • write(self, vals)
    Profile update can impact products: we take care to propagate ad hoc changes. If on the profile at least one field has changed, re-apply its values on relevant products

New fields (2)
  • profile_explanation Text
    readonly=True related='profile_id.explanation'
  • profile_id Many2one → product.profile
    comodel_name='product.profile' string='Profile'
Public methods (1)
  • get_view(self, view_id=None, view_type='form', **options)
    @api.model
    fields_view_get comes from Model (not AbstractModel)

New fields (1)
  • group_product_profile Boolean
    help='Display fields computed by product profile module.\nFor debugging purpose see menu\nSales > Configuration \n> Products\n> Product Profiles' implied_group='product_profile.group_product_profile_user' string='Display Product Profile fields'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/product-attribute
GIT
GIThttps://github.com/OCA/product-attribute.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/product-attribute/tree/15.0/product_profile
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYproduct
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, bosd
WEBSITE
WEBSITEhttps://github.com/OCA/product-attribute
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:35
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale_management
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - payment
    - account
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - utm
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
product_profile_tree_view product.profile tree New
product_template_form_view product.template xpath Inherits product.product_template_form_view
product_template_search_view product.template xpath Inherits product.product_template_search_view
view_general_configuration res.config.settings xpath Inherits sale.res_config_settings_view_form
Models touched (5)

New fields (0)

No new fields.

Public methods (2)
  • create(self, vals)
    @api.model
  • write(self, vals)

New fields (0)

No new fields.

Public methods (1)
  • fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
    @api.model

New fields (4)
  • detailed_type Selection
    default='consu' help="See 'detailed_type' field in product.template" required=True selection=[('consu', 'Consumable'), ('service', 'Service')]
  • explanation Text
    help='An explanation on the selected profile\n(not synchronized with product.template fields)' required=True
  • name Char
    help='Profile name displayed on product template\n(not synchronized with product.template fields)' required=True
  • sequence Integer
    help='Defines the order of the entries of profile_id field\n(not synchronized with product.template fields)'
Public methods (3)
  • check_useless_key_in_vals(self, vals, key)
    @api.model
    If replacing values are the same than in db, we remove them. Use cases: 1/ if in edition mode you switch a field from value A to value B and then go back to value A then save form, field is in vals whereas it shouldn't. 2/ if profile data are in csv file there are processed each time module containing csv is loaded we remove field from vals to minimize impact on products
  • fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
    @api.model
    Display a warning for end user if edit record
  • write(self, vals)
    Profile update can impact products: we take care to propagate ad hoc changes. If on the profile at least one field has changed, re-apply its values on relevant products

New fields (2)
  • profile_explanation Text
    readonly=True related='profile_id.explanation'
  • profile_id Many2one → product.profile
    comodel_name='product.profile' string='Profile'
Public methods (0)

No public methods.

New fields (1)
  • group_product_profile Boolean
    help='Display fields computed by product profile module.\nFor debugging purpose see menu\nSales > Configuration \n> Products\n> Product Profiles' implied_group='product_profile.group_product_profile_user' string='Display Product Profile fields'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/product-attribute
GIT
GIThttps://github.com/OCA/product-attribute.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/product-attribute/tree/14.0/product_profile
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYproduct
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion
COMMITTERS
COMMITTERSOCA Transbot, Sébastien BEAU, oca-travis, Weblate, OCA-git-bot, Pierrick Brun, oca-git-bot
WEBSITE
WEBSITEhttps://github.com/OCA/product-attribute
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:41:01
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale_management
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - payment
    - account
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - utm
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
product_profile_tree_view product.profile tree New
product_template_form_view product.template xpath Inherits product.product_template_form_view
product_template_search_view product.template xpath Inherits product.product_template_search_view
view_general_configuration res.config.settings xpath Inherits sale.res_config_settings_view_form
Models touched (5)

New fields (0)

No new fields.

Public methods (2)
  • create(self, vals)
    @api.model
  • write(self, vals)

New fields (0)

No new fields.

Public methods (1)
  • fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
    @api.model

New fields (4)
  • explanation Text
    help='An explanation on the selected profile\n(not synchronized with product.template fields)' required=True
  • name Char
    help='Profile name displayed on product template\n(not synchronized with product.template fields)' required=True
  • sequence Integer
    help='Defines the order of the entries of profile_id field\n(not synchronized with product.template fields)'
  • type Selection
    default='consu' help="See 'type' field in product.template" required=True selection=[('consu', 'Consumable'), ('service', 'Service')]
Public methods (3)
  • check_useless_key_in_vals(self, vals, key)
    @api.model
    If replacing values are the same than in db, we remove them. Use cases: 1/ if in edition mode you switch a field from value A to value B and then go back to value A then save form, field is in vals whereas it shouldn't. 2/ if profile data are in csv file there are processed each time module containing csv is loaded we remove field from vals to minimize impact on products
  • fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
    @api.model
    Display a warning for end user if edit record
  • write(self, vals)
    Profile update can impact products: we take care to propagate ad hoc changes. If on the profile at least one field has changed, re-apply its values on relevant products

New fields (2)
  • profile_explanation Text
    readonly=True related='profile_id.explanation'
  • profile_id Many2one → product.profile
    comodel_name='product.profile' string='Profile'
Public methods (0)

No public methods.

New fields (1)
  • group_product_profile Boolean
    help=<expr> implied_group='product_profile.group_product_profile_user' string='Display Product Profile fields'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/product-attribute
GIT
GIThttps://github.com/OCA/product-attribute.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/product-attribute/tree/12.0/product_profile
VERSION
VERSION 2.0.0
CATEGORY
CATEGORYproduct
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion
COMMITTERS
COMMITTERSOCA Transbot, oca-travis, Weblate, OCA-git-bot, Héctor Villarreal Ortega, Kevin Khao, kevinkhao
WEBSITE
WEBSITEhttps://github.com/OCA/product-attribute
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:18
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale_management
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - payment
    - account
    - product
    - decimal_precision
    - uom
    - analytic
    - portal
    - http_routing
    - digest
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
product_profile_tree_view product.profile tree New
product_template_form_view product.template xpath Inherits product.product_template_form_view
product_template_search_view product.template xpath Inherits product.product_template_search_view
view_general_configuration res.config.settings xpath Inherits sale.res_config_settings_view_form
Models touched (5)

New fields (0)

No new fields.

Public methods (2)
  • create(self, vals)
    @api.model
  • write(self, vals)

New fields (0)

No new fields.

Public methods (1)
  • fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
    @api.model

New fields (4)
  • explanation Text
    help='An explanation on the selected profile\n(not synchronized with product.template fields)' required=True
  • name Char
    help='Profile name displayed on product template\n(not synchronized with product.template fields)' required=True
  • sequence Integer
    help='Defines the order of the entries of profile_id field\n(not synchronized with product.template fields)'
  • type Selection
    help="See 'type' field in product.template" required=True selection=[('consu', 'Consumable'), ('service', 'Service')]
Public methods (3)
  • check_useless_key_in_vals(self, vals, key)
    @api.model
    If replacing values are the same than in db, we remove them. Use cases: 1/ if in edition mode you switch a field from value A to value B and then go back to value A then save form, field is in vals whereas it shouldn't. 2/ if profile data are in csv file there are processed each time module containing csv is loaded we remove field from vals to minimize impact on products
  • fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
    @api.model
    Display a warning for end user if edit record
  • write(self, vals)
    Profile update can impact products: we take care to propagate ad hoc changes. If on the profile at least one field has changed, re-apply its values on relevant products

New fields (2)
  • profile_explanation Text
    readonly=True related='profile_id.explanation'
  • profile_id Many2one → product.profile
    comodel_name='product.profile' string='Profile'
Public methods (1)
  • fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
    @api.model
    fields_view_get comes from Model (not AbstractModel)

New fields (1)
  • group_product_profile Boolean
    help=<expr> implied_group='product_profile.group_product_profile_user' string='Display Product Profile fields'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/product-attribute
GIT
GIThttps://github.com/OCA/product-attribute.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/product-attribute/tree/10.0/product_profile
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYproduct
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion
COMMITTERS
COMMITTERSSylvain LE GAL, GitHub, OCA Transbot, oca-travis, Weblate, OCA-git-bot, Mourad, Pierrick Brun, MonsieurB
WEBSITE
WEBSITEhttp://www.akretion.com/
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:19:57
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web_kanban
    - web
    - bus
    - web_tour
    - account
    - product
    - decimal_precision
    - report
    - analytic
    - web_planner
    - procurement
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
product_profile_tree_view product.profile tree New
product_template_form_view product.template xpath Inherits product.product_template_form_view
product_template_search_view product.template xpath Inherits product.product_template_search_view
view_general_configuration base.config.settings xpath Inherits base_setup.view_general_configuration
Models touched (5)

New fields (1)
  • group_product_profile Boolean
    help=<expr> implied_group='product_profile.group_product_profile' string='Display Product Profile fields'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • create(self, vals)
    @api.model
  • write(self, vals)
    @api.multi

New fields (0)

No new fields.

Public methods (1)
  • fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
    @api.model

New fields (4)
  • explanation Text
    help='An explanation on the selected profile\n(not synchronized with product.template fields)' oldname='description' required=True
  • name Char
    help='Profile name displayed on product template\n(not synchronized with product.template fields)' required=True
  • sequence Integer
    help='Defines the order of the entries of profile_id field\n(not synchronized with product.template fields)'
  • type Selection
    help="See 'type' field in product.template" required=True selection=[('consu', 'Consumable'), ('service', 'Service')]
Public methods (3)
  • check_useless_key_in_vals(self, vals, key)
    @api.model
    If replacing values are the same than in db, we remove them. Use cases: 1/ if in edition mode you switch a field from value A to value B and then go back to value A then save form, field is in vals whereas it shouldn't. 2/ if profile data are in csv file there are processed each time module containing csv is loaded we remove field from vals to minimize impact on products
  • fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
    @api.model
    Display a warning for end user if edit record
  • write(self, vals)
    @api.multi
    Profile update can impact products: we take care to propagate ad hoc changes

New fields (2)
  • profile_explanation Text
    readonly=True related='profile_id.explanation'
  • profile_id Many2one → product.profile
    comodel_name='product.profile' string='Profile'
Public methods (1)
  • fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
    @api.model
    fields_view_get comes from Model (not AbstractModel)
REPOSITORY
REPOSITORYOCA/product-attribute
GIT
GIThttps://github.com/OCA/product-attribute.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/product-attribute/tree/8.0/product_profile
VERSION
VERSION 1.0.2
CATEGORY
CATEGORYproduct
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion
COMMITTERS
COMMITTERSmreficent, Stéphane Bidoul (ACSONE), OCA Transbot, David Beal, oca-travis, hpar
WEBSITE
WEBSITEhttp://www.akretion.com/
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:11:23
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - product
    - base
    - decimal_precision
    - mail
    - base_setup
    - web_kanban
    - web
    - report
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
product_profile_tree_view product.profile tree New
product_template_form_view product.template xpath Inherits product.product_template_form_view
product_template_search_view product.template xpath Inherits product.product_template_search_view
view_general_configuration base.config.settings xpath Inherits base_setup.view_general_configuration
Models touched (6)

New fields (1)
  • group_product_profile Boolean
    help=<expr> implied_group='product_profile.group_product_profile' string='Display Product Profile fields'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • create(self, vals)
    @api.model
  • write(self, vals)
    @api.multi

New fields (0)

No new fields.

Public methods (1)
  • fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
    @api.model

New fields (4)
  • explanation Text
    help='An explanation on the selected profile\n(not synchronized with product.template fields)' oldname='description' required=True
  • name Char
    help='Profile name displayed on product template\n(not synchronized with product.template fields)' required=True
  • sequence Integer
    help='Defines the order of the entries of profile_id field\n(not synchronized with product.template fields)'
  • type Selection
    help="See 'type' field in product.template" required=True selection='_get_types'
Public methods (3)
  • check_useless_key_in_vals(self, vals, key)
    @api.model
    If replacing values are the same than in db, we remove them. Use cases: 1/ if in edition mode you switch a field from value A to value B and then go back to value A then save form, field is in vals whereas it shouldn't. 2/ if profile data are in csv file there are processed each time module containing csv is loaded we remove field from vals to minimize impact on products
  • fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
    @api.model
    Display a warning for end user if edit record
  • write(self, vals)
    @api.multi
    Profile update can impact products: we take care to propagate ad hoc changes

New fields (0)

No new fields.

Public methods (1)
  • get_profile_fields_to_exclude(self)

New fields (2)
  • profile_explanation Text
    readonly=True related='profile_id.explanation' string='Profile Explanation'
  • profile_id Many2one → product.profile
    string='Profile' args: 'product.profile'
Public methods (1)
  • fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
    @api.model
    fields_view_get comes from Model (not AbstractModel)