Project Roles

project_role
REPOSITORY
REPOSITORYOCA/project
GIT
GIThttps://github.com/OCA/project.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/project/tree/18.0/project_role
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYProject
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), CorporateHub
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), CorporateHub
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, David Ramia, andrea
WEBSITE
WEBSITEhttps://github.com/OCA/project
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:14
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - project
    - analytic
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
    - uom
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - rating
    - resource
    - digest
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows maintaining project roster based on roles and
assignments. List of roles is configured at company level, while
assignments can be created on project, company, and cross-company
levels, with configurable inheritance.

Code Analysis

Views touched (10)
XML IDNameModelTypeStatus
edit_project project.project.form project.project div Inherits project.edit_project
project_assignment_form project.assignment.form project.assignment form New
project_assignment_kanban project.assignment.kanban project.assignment kanban New
project_assignment_pivot project.assignment.pivot project.assignment pivot New
project_assignment_search project.assignment.search project.assignment search New
project_assignment_tree project.assignment.tree project.assignment list New
project_role_search project.role.search project.role search New
project_role_view_form project.role.view.form project.role form New
project_role_view_tree project.role.view.tree project.role list New
res_config_settings_view_form res.config.settings.view.form.project_role res.config.settings xpath Inherits project.res_config_settings_view_form
Models touched (5)

New fields (6)
  • active Boolean
    default=True
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> ondelete='cascade' string='Company'
  • name Char
    compute='_compute_name' index=True store=True
  • project_id Many2one → project.project
    comodel_name='project.project' ondelete='cascade' string='Project'
  • role_id Many2one → project.role
    comodel_name='project.role' ondelete='restrict' required=True string='Role'
  • user_id Many2one → res.users
    comodel_name='res.users' ondelete='restrict' required=True string='User'
Public methods (0)

No public methods.

New fields (3)
  • assignment_ids One2many → project.assignment
    comodel_name='project.assignment' inverse_name='project_id' string='Project Assignments' tracking=True
  • inherit_assignments Boolean
    default=<expr>
  • limit_role_to_assignments Boolean
    default=<expr>
Public methods (1)
  • create(self, vals_list)
    @api.model_create_multi

New fields (8)
  • active Boolean
    default=True
  • child_ids One2many → project.role
    comodel_name='project.role' copy=True inverse_name='parent_id' string='Child Roles'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> ondelete='cascade' string='Company'
  • complete_name Char
    compute='_compute_complete_name' recursive=True store=True
  • description Html
    translate=html_translate
  • name Char
    required=True translate=True
  • parent_id Many2one → project.role
    comodel_name='project.role' index=True ondelete='cascade' string='Parent Role'
  • parent_path Char
    index=True
Public methods (2)
  • can_assign(self, user_id, project_id)
    Extension point to check if user can be assigned to this role
  • get_available_roles(self, user_id, project_id)
    @api.model
    Get domain on roles that can be assumed by given user on a specific project, depending on company and project assignments configuration.

New fields (2)
  • project_inherit_assignments Boolean
    default=True string='Projects Inherit Assignments'
  • project_limit_role_to_assignments Boolean
    default=False string='Limit Project Role to Assignments'
Public methods (0)

No public methods.

New fields (2)
  • project_inherit_assignments Boolean
    readonly=False related='company_id.project_inherit_assignments'
  • project_limit_role_to_assignments Boolean
    readonly=False related='company_id.project_limit_role_to_assignments'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/project
GIT
GIThttps://github.com/OCA/project.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/project/tree/17.0/project_role
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYProject
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), CorporateHub
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), CorporateHub
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, David Ramia
WEBSITE
WEBSITEhttps://github.com/OCA/project
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:06
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - project
    - analytic
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - rating
    - resource
    - digest
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows maintaining project roster based on roles and
assignments. List of roles is configured at company level, while
assignments can be created on project, company, and cross-company
levels, with configurable inheritance.

Code Analysis

Views touched (10)
XML IDNameModelTypeStatus
edit_project project.project.form project.project div Inherits project.edit_project
project_assignment_form project.assignment.form project.assignment form New
project_assignment_kanban project.assignment.kanban project.assignment kanban New
project_assignment_pivot project.assignment.pivot project.assignment pivot New
project_assignment_search project.assignment.search project.assignment search New
project_assignment_tree project.assignment.tree project.assignment tree New
project_role_search project.role.search project.role search New
project_role_view_form project.role.view.form project.role form New
project_role_view_tree project.role.view.tree project.role tree New
res_config_settings_view_form res.config.settings.view.form.project_role res.config.settings xpath Inherits project.res_config_settings_view_form
Models touched (5)

New fields (6)
  • active Boolean
    default=True
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> ondelete='cascade' string='Company'
  • name Char
    compute='_compute_name' index=True store=True
  • project_id Many2one → project.project
    comodel_name='project.project' ondelete='cascade' string='Project'
  • role_id Many2one → project.role
    comodel_name='project.role' ondelete='restrict' required=True string='Role'
  • user_id Many2one → res.users
    comodel_name='res.users' ondelete='restrict' required=True string='User'
Public methods (0)

No public methods.

New fields (3)
  • assignment_ids One2many → project.assignment
    comodel_name='project.assignment' inverse_name='project_id' string='Project Assignments' tracking=True
  • inherit_assignments Boolean
    default=<expr>
  • limit_role_to_assignments Boolean
    default=<expr>
Public methods (1)
  • create(self, vals_list)
    @api.model_create_multi

New fields (8)
  • active Boolean
    default=True
  • child_ids One2many → project.role
    comodel_name='project.role' copy=True inverse_name='parent_id' string='Child Roles'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> ondelete='cascade' string='Company'
  • complete_name Char
    compute='_compute_complete_name' recursive=True store=True
  • description Html
    translate=html_translate
  • name Char
    required=True translate=True
  • parent_id Many2one → project.role
    comodel_name='project.role' index=True ondelete='cascade' string='Parent Role'
  • parent_path Char
    index=True unaccent=False
Public methods (2)
  • can_assign(self, user_id, project_id)
    Extension point to check if user can be assigned to this role
  • get_available_roles(self, user_id, project_id)
    @api.model
    Get domain on roles that can be assumed by given user on a specific project, depending on company and project assignments configuration.

New fields (2)
  • project_inherit_assignments Boolean
    default=True string='Projects Inherit Assignments'
  • project_limit_role_to_assignments Boolean
    default=False string='Limit Project Role to Assignments'
Public methods (0)

No public methods.

New fields (2)
  • project_inherit_assignments Boolean
    readonly=False related='company_id.project_inherit_assignments'
  • project_limit_role_to_assignments Boolean
    readonly=False related='company_id.project_limit_role_to_assignments'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/project
GIT
GIThttps://github.com/OCA/project.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/project/tree/16.0/project_role
VERSION
VERSION 1.0.4
CATEGORY
CATEGORYProject
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), CorporateHub
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), CorporateHub
COMMITTERS
COMMITTERSMiquel Raïch, Denis Leemann, Weblate, OCA-git-bot, oca-ci, David Ramia, Anjeel Haria, len
WEBSITE
WEBSITEhttps://github.com/OCA/project
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:49
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - project
    - analytic
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - rating
    - resource
    - digest
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (10)
XML IDNameModelTypeStatus
edit_project project.project.form project.project div Inherits project.edit_project
project_assignment_form project.assignment.form project.assignment form New
project_assignment_kanban project.assignment.kanban project.assignment kanban New
project_assignment_pivot project.assignment.pivot project.assignment pivot New
project_assignment_search project.assignment.search project.assignment search New
project_assignment_tree project.assignment.tree project.assignment tree New
project_role_search project.role.search project.role search New
project_role_view_form project.role.view.form project.role form New
project_role_view_tree project.role.view.tree project.role tree New
res_config_settings_view_form res.config.settings.view.form.project_role res.config.settings xpath Inherits project.res_config_settings_view_form
Models touched (5)

New fields (6)
  • active Boolean
    default=True
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> ondelete='cascade' string='Company'
  • name Char
    compute='_compute_name' index=True store=True
  • project_id Many2one → project.project
    comodel_name='project.project' ondelete='cascade' string='Project'
  • role_id Many2one → project.role
    comodel_name='project.role' ondelete='restrict' required=True string='Role'
  • user_id Many2one → res.users
    comodel_name='res.users' ondelete='restrict' required=True string='User'
Public methods (0)

No public methods.

New fields (3)
  • assignment_ids One2many → project.assignment
    comodel_name='project.assignment' inverse_name='project_id' string='Project Assignments' tracking=True
  • inherit_assignments Boolean
    default=<expr>
  • limit_role_to_assignments Boolean
    default=<expr>
Public methods (1)
  • create(self, vals_list)
    @api.model_create_multi

New fields (8)
  • active Boolean
    default=True
  • child_ids One2many → project.role
    comodel_name='project.role' copy=True inverse_name='parent_id' string='Child Roles'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> ondelete='cascade' string='Company'
  • complete_name Char
    compute='_compute_complete_name' recursive=True store=True
  • description Html
    translate=html_translate
  • name Char
    required=True translate=True
  • parent_id Many2one → project.role
    comodel_name='project.role' index=True ondelete='cascade' string='Parent Role'
  • parent_path Char
    index=True unaccent=False
Public methods (2)
  • can_assign(self, user_id, project_id)
    Extension point to check if user can be assigned to this role
  • get_available_roles(self, user_id, project_id)
    @api.model
    Get domain on roles that can be assumed by given user on a specific project, depending on company and project assignments configuration.

New fields (2)
  • project_inherit_assignments Boolean
    default=True string='Projects Inherit Assignments'
  • project_limit_role_to_assignments Boolean
    default=False string='Limit Project Role to Assignments'
Public methods (0)

No public methods.

New fields (2)
  • project_inherit_assignments Boolean
    readonly=False related='company_id.project_inherit_assignments'
  • project_limit_role_to_assignments Boolean
    readonly=False related='company_id.project_limit_role_to_assignments'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/project
GIT
GIThttps://github.com/OCA/project.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/project/tree/15.0/project_role
VERSION
VERSION 1.0.2
CATEGORY
CATEGORYProject
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), CorporateHub
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), CorporateHub
COMMITTERS
COMMITTERSAlexey Pelykh, Miquel Raïch, Víctor Martínez, Weblate, OCA-git-bot, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/project
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:36
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - project
    - analytic
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - rating
    - resource
    - digest
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (10)
XML IDNameModelTypeStatus
edit_project project.project.form project.project div Inherits project.edit_project
project_assignment_form project.assignment.form project.assignment form New
project_assignment_kanban project.assignment.kanban project.assignment kanban New
project_assignment_pivot project.assignment.pivot project.assignment pivot New
project_assignment_search project.assignment.search project.assignment search New
project_assignment_tree project.assignment.tree project.assignment tree New
project_role_search project.role.search project.role search New
project_role_view_form project.role.view.form project.role form New
project_role_view_tree project.role.view.tree project.role tree New
res_config_settings_view_form res.config.settings.view.form.project_role res.config.settings xpath Inherits project.res_config_settings_view_form
Models touched (5)

New fields (6)
  • active Boolean
    default=True
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> ondelete='cascade' string='Company'
  • name Char
    compute='_compute_name' index=True store=True
  • project_id Many2one → project.project
    comodel_name='project.project' ondelete='cascade' string='Project'
  • role_id Many2one → project.role
    comodel_name='project.role' ondelete='restrict' required=True string='Role'
  • user_id Many2one → res.users
    comodel_name='res.users' ondelete='restrict' required=True string='User'
Public methods (0)

No public methods.

New fields (3)
  • assignment_ids One2many → project.assignment
    comodel_name='project.assignment' inverse_name='project_id' string='Project Assignments' tracking=True
  • inherit_assignments Boolean
    default=<expr>
  • limit_role_to_assignments Boolean
    default=<expr>
Public methods (1)
  • create(self, values)
    @api.model

New fields (8)
  • active Boolean
    default=True
  • child_ids One2many → project.role
    comodel_name='project.role' copy=True inverse_name='parent_id' string='Child Roles'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> ondelete='cascade' string='Company'
  • complete_name Char
    compute='_compute_complete_name' recursive=True store=True
  • description Html
    translate=html_translate
  • name Char
    required=True translate=True
  • parent_id Many2one → project.role
    comodel_name='project.role' index=True ondelete='cascade' string='Parent Role'
  • parent_path Char
    index=True
Public methods (2)
  • can_assign(self, user_id, project_id)
    Extension point to check if user can be assigned to this role
  • get_available_roles(self, user_id, project_id)
    @api.model
    Get domain on roles that can be assumed by given user on a specific project, depending on company and project assignments configuration.

New fields (2)
  • project_inherit_assignments Boolean
    default=True string='Projects Inherit Assignments'
  • project_limit_role_to_assignments Boolean
    default=False string='Limit Project Role to Assignments'
Public methods (0)

No public methods.

New fields (2)
  • project_inherit_assignments Boolean
    readonly=False related='company_id.project_inherit_assignments'
  • project_limit_role_to_assignments Boolean
    readonly=False related='company_id.project_limit_role_to_assignments'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/project
GIT
GIThttps://github.com/OCA/project.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/project/tree/14.0/project_role
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYProject
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), CorporateHub
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), CorporateHub
COMMITTERS
COMMITTERSOCA Transbot, Miquel Raïch, oca-travis, Weblate, OCA-git-bot, oca-ci, newtratip, oca-git-bot, Yoshiro009
WEBSITE
WEBSITEhttps://github.com/OCA/project
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:41:02
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - project
    - analytic
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - rating
    - resource
    - digest
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (10)
XML IDNameModelTypeStatus
edit_project project.project.form project.project div Inherits project.edit_project
project_assignment_form project.assignment.form project.assignment form New
project_assignment_kanban project.assignment.kanban project.assignment kanban New
project_assignment_pivot project.assignment.pivot project.assignment pivot New
project_assignment_search project.assignment.search project.assignment search New
project_assignment_tree project.assignment.tree project.assignment tree New
project_role_search project.role.search project.role search New
project_role_view_form project.role.view.form project.role form New
project_role_view_tree project.role.view.tree project.role tree New
res_config_settings_view_form res.config.settings.view.form.project_role res.config.settings xpath Inherits project.res_config_settings_view_form
Models touched (5)

New fields (6)
  • active Boolean
    default=True
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> ondelete='cascade' string='Company'
  • name Char
    compute='_compute_name' index=True store=True
  • project_id Many2one → project.project
    comodel_name='project.project' ondelete='cascade' string='Project'
  • role_id Many2one → project.role
    comodel_name='project.role' ondelete='restrict' required=True string='Role'
  • user_id Many2one → res.users
    comodel_name='res.users' ondelete='restrict' required=True string='User'
Public methods (0)

No public methods.

New fields (3)
  • assignment_ids One2many → project.assignment
    comodel_name='project.assignment' inverse_name='project_id' string='Project Assignments' tracking=True
  • inherit_assignments Boolean
    default=<expr> string='Inherit assignments'
  • limit_role_to_assignments Boolean
    default=<expr> string='Limit role to assignments'
Public methods (1)
  • create(self, values)
    @api.model

New fields (8)
  • active Boolean
    default=True
  • child_ids One2many → project.role
    comodel_name='project.role' copy=True inverse_name='parent_id' string='Child Roles'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> ondelete='cascade' string='Company'
  • complete_name Char
    compute='_compute_complete_name' store=True string='Complete Name'
  • description Html
    string='Description' translate=html_translate
  • name Char
    required=True string='Name' translate=True
  • parent_id Many2one → project.role
    comodel_name='project.role' index=True ondelete='cascade' string='Parent Role'
  • parent_path Char
    index=True
Public methods (2)
  • can_assign(self, user_id, project_id)
    Extension point to check if user can be assigned to this role
  • get_available_roles(self, user_id, project_id)
    @api.model
    Get domain on roles that can be assumed by given user on a specific project, depending on company and project assignments configuration.

New fields (2)
  • project_inherit_assignments Boolean
    default=True string='Projects Inherit Assignments'
  • project_limit_role_to_assignments Boolean
    default=False string='Limit Project Role to Assignments'
Public methods (0)

No public methods.

New fields (2)
  • project_inherit_assignments Boolean
    readonly=False related='company_id.project_inherit_assignments'
  • project_limit_role_to_assignments Boolean
    readonly=False related='company_id.project_limit_role_to_assignments'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/project
GIT
GIThttps://github.com/OCA/project.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/project/tree/13.0/project_role
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYProject
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), CorporateHub
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), CorporateHub
COMMITTERS
COMMITTERSAlexey Pelykh, OCA Transbot, oca-travis, Weblate, OCA-git-bot, alfadil
WEBSITE
WEBSITEhttps://github.com/OCA/project
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:15
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - project
    - analytic
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - rating
    - resource
    - digest
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (10)
XML IDNameModelTypeStatus
edit_project project.project.form project.project div Inherits project.edit_project
project_assignment_form project.assignment.form project.assignment form New
project_assignment_kanban project.assignment.kanban project.assignment kanban New
project_assignment_pivot project.assignment.pivot project.assignment pivot New
project_assignment_search project.assignment.search project.assignment search New
project_assignment_tree project.assignment.tree project.assignment tree New
project_role_search project.role.search project.role search New
project_role_view_form project.role.view.form project.role form New
project_role_view_tree project.role.view.tree project.role tree New
res_config_settings_view_form res.config.settings.view.form.project_role res.config.settings xpath Inherits project.res_config_settings_view_form
Models touched (5)

New fields (6)
  • active Boolean
    default=True
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> ondelete='cascade' string='Company'
  • name Char
    compute='_compute_name' index=True store=True
  • project_id Many2one → project.project
    comodel_name='project.project' ondelete='cascade' string='Project'
  • role_id Many2one → project.role
    comodel_name='project.role' ondelete='restrict' required=True string='Role'
  • user_id Many2one → res.users
    comodel_name='res.users' ondelete='restrict' required=True string='User'
Public methods (0)

No public methods.

New fields (3)
  • assignment_ids One2many → project.assignment
    comodel_name='project.assignment' inverse_name='project_id' string='Project Assignments' track_visibility='onchange'
  • inherit_assignments Boolean
    default=<expr> string='Inherit assignments'
  • limit_role_to_assignments Boolean
    default=<expr> string='Limit role to assignments'
Public methods (1)
  • create(self, values)
    @api.model

New fields (8)
  • active Boolean
    default=True
  • child_ids One2many → project.role
    comodel_name='project.role' copy=True inverse_name='parent_id' string='Child Roles'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> ondelete='cascade' string='Company'
  • complete_name Char
    compute='_compute_complete_name' store=True string='Complete Name'
  • description Html
    string='Description' translate=html_translate
  • name Char
    required=True translate=True args: 'Name'
  • parent_id Many2one → project.role
    comodel_name='project.role' index=True ondelete='cascade' string='Parent Role'
  • parent_path Char
    index=True
Public methods (2)
  • can_assign(self, user_id, project_id)
    Extension point to check if user can be assigned to this role
  • get_available_roles(self, user_id, project_id)
    @api.model
    Get domain on roles that can be assumed by given user on a specific project, depending on company and project assignments configuration.

New fields (2)
  • project_inherit_assignments Boolean
    default=True string='Projects Inherit Assignments'
  • project_limit_role_to_assignments Boolean
    default=False string='Limit Project Role to Assignments'
Public methods (0)

No public methods.

New fields (2)
  • project_inherit_assignments Boolean
    readonly=False related='company_id.project_inherit_assignments'
  • project_limit_role_to_assignments Boolean
    readonly=False related='company_id.project_limit_role_to_assignments'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/project
GIT
GIThttps://github.com/OCA/project.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/project/tree/12.0/project_role
VERSION
VERSION 3.0.1
CATEGORY
CATEGORYProject
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), CorporateHub
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), CorporateHub
COMMITTERS
COMMITTERSStéphane Bidoul, Alexey Pelykh, OCA Transbot, oca-travis, Weblate, OCA-git-bot
WEBSITE
WEBSITEhttps://github.com/OCA/project
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:20
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - project
    - base_setup
    - base
    - web
    - mail
    - bus
    - web_tour
    - portal
    - http_routing
    - rating
    - resource
    - digest
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (10)
XML IDNameModelTypeStatus
edit_project project.project.form project.project button Inherits project.edit_project
project_assignment_form project.assignment.form project.assignment form New
project_assignment_kanban project.assignment.kanban project.assignment kanban New
project_assignment_pivot project.assignment.pivot project.assignment pivot New
project_assignment_search project.assignment.search project.assignment search New
project_assignment_tree project.assignment.tree project.assignment tree New
project_role_search project.role.search project.role search New
project_role_view_form project.role.view.form project.role form New
project_role_view_tree project.role.view.tree project.role tree New
res_config_settings_view_form res.config.settings.view.form.project_role res.config.settings xpath Inherits project.res_config_settings_view_form
Models touched (5)

New fields (6)
  • active Boolean
    default=True
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> ondelete='cascade' string='Company'
  • name Char
    compute='_compute_name' index=True store=True
  • project_id Many2one → project.project
    comodel_name='project.project' ondelete='cascade' string='Project'
  • role_id Many2one → project.role
    comodel_name='project.role' ondelete='restrict' required=True string='Role'
  • user_id Many2one → res.users
    comodel_name='res.users' ondelete='restrict' required=True string='User'
Public methods (0)

No public methods.

New fields (3)
  • assignment_ids One2many → project.assignment
    comodel_name='project.assignment' inverse_name='project_id' string='Project Assignments' track_visibility='onchange'
  • inherit_assignments Boolean
    default=<expr> string='Inherit assignments'
  • limit_role_to_assignments Boolean
    default=<expr> string='Limit role to assignments'
Public methods (1)
  • create(self, values)
    @api.model

New fields (8)
  • active Boolean
    default=True
  • child_ids One2many → project.role
    comodel_name='project.role' copy=True inverse_name='parent_id' string='Child Roles'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> ondelete='cascade' string='Company'
  • complete_name Char
    compute='_compute_complete_name' store=True string='Complete Name'
  • description Html
    string='Description' translate=html_translate
  • name Char
    required=True translate=True args: 'Name'
  • parent_id Many2one → project.role
    comodel_name='project.role' index=True ondelete='cascade' string='Parent Role'
  • parent_path Char
    index=True
Public methods (3)
  • can_assign(self, user_id, project_id)
    @api.multi
    Extension point to check if user can be assigned to this role
  • get_available_roles(self, user_id, project_id)
    @api.model
    Get domain on roles that can be assumed by given user on a specific project, depending on company and project assignments configuration.
  • get_available_roles_domain(self, user_id, project_id)
    @api.model

New fields (2)
  • project_inherit_assignments Boolean
    default=True string='Projects Inherit Assignments'
  • project_limit_role_to_assignments Boolean
    default=False string='Limit Project Role to Assignments'
Public methods (0)

No public methods.

New fields (2)
  • project_inherit_assignments Boolean
    readonly=False related='company_id.project_inherit_assignments'
  • project_limit_role_to_assignments Boolean
    readonly=False related='company_id.project_limit_role_to_assignments'
Public methods (0)

No public methods.

STATUS
STATUSOpen migration PR - not merged yet for this version
REPOSITORY
REPOSITORYOCA/project
PULL REQUEST
PULL REQUEST[19.0] [MiIG] project role (#1747)