User roles

base_user_role
REPOSITORY
REPOSITORYOCA/server-backend
GIT
GIThttps://github.com/OCA/server-backend.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-backend/tree/19.0/base_user_role
VERSION
VERSION 1.0.2
CATEGORY
CATEGORYTools
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ABF OSIELL
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ABF OSIELL
COMMITTERS
COMMITTERSVíctor Martínez, Weblate, OCA-git-bot, oca-ci, Milan Topuzov, Johan Bjurstam
WEBSITE
WEBSITEhttps://github.com/OCA/server-backend
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:40:51
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module was written to extend the standard functionality regarding
users and groups management. It helps creating well-defined user roles
and associating them to users.

It can become very hard to maintain a large number of user profiles over
time, juggling with many technical groups. For this purpose, this module
will help you to:

> - define functional roles by aggregating low-level groups,
> - set user accounts with the predefined roles (roles are cumulative),
> - update groups of all relevant user accounts (all at once),
> - ensure that user accounts will have the groups defined in their
>   roles (nothing more, nothing less). In other words, you can not set
>   groups manually on a user as long as there is roles configured on
>   it,
> - activate/deactivate roles depending on the date (useful to plan
>   holidays, etc)
> - get a quick overview of roles and the related user accounts.

That way you make clear the different responsabilities within a company,
and are able to add and update user accounts in a scalable and reliable
way.

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
create_from_user_wizard_view Create role from user wizard.create.role.from.user form New
group_groups_into_role_wiz_view wizard.groups.into.role.wiz.view wizard.groups.into.role form New
res_groups_view_form res.groups.form - base_user_role res.groups xpath Inherits base.view_groups_form
view_res_users_form_inherit res.users.form.inherit res.users xpath Inherits base.view_users_form
view_res_users_role_form res.users.role.form res.users.role form New
view_res_users_role_search res.users.role.search res.users.role search New
view_res_users_role_tree res.users.role.list res.users.role list New
view_res_users_search_inherit res.users.search.inherit res.users field Inherits base.view_users_search
view_res_users_tree_inherit res.users field Inherits base.view_users_tree
Models touched (6)

New fields (6)
  • parent_ids Many2many → res.groups
    help='Inverse relation for the Inherits field. The groups from which this group is inheriting' string='Parents' args: 'res.groups', 'res_groups_implied_rel', 'hid', 'gid'
  • role_count Integer
    compute='_compute_role_count' args: '# User Roles'
  • role_id One2many → res.users.role
    comodel_name='res.users.role' help='Relation for the groups that represents a role' inverse_name='group_id'
  • role_ids Many2many → res.users.role
    comodel_name='res.users.role' compute='_compute_role_ids' help='Roles in which the group is involved' relation='res_groups_implied_roles_rel' string='User Roles'
  • trans_parent_ids Many2many → res.groups
    comodel_name='res.groups' compute='_compute_trans_parent_ids' recursive=True string='Parent Groups'
  • view_access Many2many
    groups='base.group_system'
Public methods (1)
  • action_view_roles(self)

New fields (3)
  • role_ids One2many → res.users.role
    comodel_name='res.users.role' compute='_compute_role_ids' compute_sudo=True groups='base.group_erp_manager' string='User Roles'
  • role_line_ids One2many → res.users.role.line
    comodel_name='res.users.role.line' default=<expr> groups='base.group_erp_manager' inverse_name='user_id' string='Role lines'
  • show_alert Boolean
    compute='_compute_show_alert'
Public methods (3)
  • create(self, vals_list)
    @api.model_create_multi
  • set_groups_from_roles(self, force=False)
    Set (replace) the groups following the roles defined on users. If no role is defined on the user, its groups are let untouched unless the `force` parameter is `True`.
  • write(self, vals)

New fields (9)
  • group_id Many2one → res.groups
    comodel_name='res.groups' ondelete='cascade' readonly=True required=True string='Associated group'
  • group_privilege_id Many2one
    help='Privilege assigned to the associated group.' readonly=False related='group_id.privilege_id' string='Associated privilege'
  • is_default Boolean
    help='When enabled, this role is assigned to newly created users by default.' string='Default on new users'
  • line_ids One2many → res.users.role.line
    comodel_name='res.users.role.line' inverse_name='role_id' string='Role lines'
  • model_access_count Integer
    compute='_compute_model_access_ids'
  • model_access_ids Many2many → ir.model.access
    comodel_name='ir.model.access' compute='_compute_model_access_ids' required=False string='Access Rights'
  • role_user_ids One2many → res.users
    comodel_name='res.users' compute='_compute_role_user_ids' string='Users list'
  • rule_ids Many2many → ir.rule
    comodel_name='ir.rule' compute='_compute_rule_ids' required=False string='Record Rules'
  • rules_count Integer
    compute='_compute_rule_ids'
Public methods (9)
  • copy(self, default=None)
  • create(self, vals_list)
    @api.model_create_multi
  • cron_update_users(self)
    @api.model
  • read(self, fields=None, load='_classic_read')
  • show_model_access_ids(self)
  • show_rule_ids(self)
  • unlink(self)
  • update_users(self)
    Update all the users concerned by the roles identified by `ids`.
  • write(self, vals)

New fields (6)
  • active Boolean
    related='user_id.active'
  • date_from Date
    args: 'From'
  • date_to Date
    args: 'To'
  • is_enabled Boolean
    compute='_compute_is_enabled' args: 'Enabled'
  • role_id Many2one → res.users.role
    comodel_name='res.users.role' ondelete='cascade' required=True string='Role'
  • user_id Many2one → res.users
    comodel_name='res.users' domain=[('id', '!=', SUPERUSER_ID)] ondelete='cascade' required=True string='User'
Public methods (1)
  • unlink(self)

New fields (2)
  • assign_to_user Boolean
    default=True args: 'Assign to user'
  • name Char
    required=True
Public methods (1)
  • create_from_user(self)

New fields (1)
  • name Char
    help='Group groups into a role and specify a name for this role' required=True
Public methods (1)
  • create_role(self)
REPOSITORY
REPOSITORYOCA/server-backend
GIT
GIThttps://github.com/OCA/server-backend.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-backend/tree/18.0/base_user_role
VERSION
VERSION 1.0.7
CATEGORY
CATEGORYTools
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ABF OSIELL
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ABF OSIELL
COMMITTERS
COMMITTERSStefan Rijnhart, Víctor Martínez, Sébastien Alix, Weblate, OCA-git-bot, oca-ci, Jérémy Didderen, Bert Van Groenendael, Jaime Quiñones, Julien Hémono
WEBSITE
WEBSITEhttps://github.com/OCA/server-backend
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:19
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module was written to extend the standard functionality regarding
users and groups management. It helps creating well-defined user roles
and associating them to users.

It can become very hard to maintain a large number of user profiles over
time, juggling with many technical groups. For this purpose, this module
will help you to:

> - define functional roles by aggregating low-level groups,
> - set user accounts with the predefined roles (roles are cumulative),
> - update groups of all relevant user accounts (all at once),
> - ensure that user accounts will have the groups defined in their
>   roles (nothing more, nothing less). In other words, you can not set
>   groups manually on a user as long as there is roles configured on
>   it,
> - activate/deactivate roles depending on the date (useful to plan
>   holidays, etc)
> - get a quick overview of roles and the related user accounts.

That way you make clear the different responsabilities within a company,
and are able to add and update user accounts in a scalable and reliable
way.

Code Analysis

Views touched (10)
XML IDNameModelTypeStatus
create_from_user_wizard_view Create role from user wizard.create.role.from.user form New
group_groups_into_role_wiz_view wizard.groups.into.role.wiz.view wizard.groups.into.role form New
res_groups_view_form res.groups.form - base_user_role res.groups xpath Inherits base.view_groups_form
view_res_users_form_inherit res.users.form.inherit res.users xpath Inherits base.view_users_form
view_res_users_role_add_users_wizard role.add.users.wizard.form role.add.users.wizard form New
view_res_users_role_form res.users.role.form res.users.role form New
view_res_users_role_search res.users.role.search res.users.role search New
view_res_users_role_tree res.users.role.list res.users.role list New
view_res_users_search_inherit res.users.search.inherit res.users field Inherits base.view_users_search
view_res_users_tree_inherit res.users field Inherits base.view_users_tree
Models touched (7)

New fields (6)
  • parent_ids Many2many → res.groups
    help='Inverse relation for the Inherits field. The groups from which this group is inheriting' string='Parents' args: 'res.groups', 'res_groups_implied_rel', 'hid', 'gid'
  • role_count Integer
    compute='_compute_role_count' args: '# User Roles'
  • role_id One2many → res.users.role
    comodel_name='res.users.role' help='Relation for the groups that represents a role' inverse_name='group_id'
  • role_ids Many2many → res.users.role
    comodel_name='res.users.role' compute='_compute_role_ids' help='Roles in which the group is involved' relation='res_groups_implied_roles_rel' string='User Roles'
  • trans_parent_ids Many2many → res.groups
    comodel_name='res.groups' compute='_compute_trans_parent_ids' recursive=True string='Parent Groups'
  • view_access Many2many
    groups='base.group_system'
Public methods (1)
  • action_view_roles(self)

New fields (3)
  • role_ids One2many → res.users.role
    comodel_name='res.users.role' compute='_compute_role_ids' compute_sudo=True groups='base.group_erp_manager' string='User Roles'
  • role_line_ids One2many → res.users.role.line
    comodel_name='res.users.role.line' default=<expr> groups='base.group_erp_manager' inverse_name='user_id' string='Role lines'
  • show_alert Boolean
    compute='_compute_show_alert'
Public methods (3)
  • create(self, vals_list)
    @api.model_create_multi
  • set_groups_from_roles(self, force=False)
    Set (replace) the groups following the roles defined on users. If no role is defined on the user, its groups are let untouched unless the `force` parameter is `True`.
  • write(self, vals)

New fields (8)
  • group_category_id Many2one
    default=<expr> help="Associated group's category" readonly=False related='group_id.category_id' string='Associated category'
  • group_id Many2one → res.groups
    comodel_name='res.groups' ondelete='cascade' readonly=True required=True string='Associated group'
  • line_ids One2many → res.users.role.line
    comodel_name='res.users.role.line' inverse_name='role_id' string='Role lines'
  • model_access_count Integer
    compute='_compute_model_access_ids'
  • model_access_ids Many2many → ir.model.access
    comodel_name='ir.model.access' compute='_compute_model_access_ids' required=False string='Access Rights'
  • rule_ids Many2many → ir.rule
    comodel_name='ir.rule' compute='_compute_rule_ids' required=False string='Record Rules'
  • rules_count Integer
    compute='_compute_rule_ids'
  • user_ids One2many → res.users
    comodel_name='res.users' compute='_compute_user_ids' string='Users list'
Public methods (9)
  • copy(self, default=None)
  • create(self, vals_list)
    @api.model_create_multi
  • cron_update_users(self)
    @api.model
  • read(self, fields=None, load='_classic_read')
  • show_model_access_ids(self)
  • show_rule_ids(self)
  • unlink(self)
  • update_users(self)
    Update all the users concerned by the roles identified by `ids`.
  • write(self, vals)

New fields (6)
  • active Boolean
    related='user_id.active'
  • date_from Date
    args: 'From'
  • date_to Date
    args: 'To'
  • is_enabled Boolean
    compute='_compute_is_enabled' args: 'Enabled'
  • role_id Many2one → res.users.role
    comodel_name='res.users.role' ondelete='cascade' required=True string='Role'
  • user_id Many2one → res.users
    comodel_name='res.users' domain=[('id', '!=', SUPERUSER_ID)] ondelete='cascade' required=True string='User'
Public methods (1)
  • unlink(self)

New fields (4)
  • date_from Date
    args: 'From'
  • date_to Date
    args: 'To'
  • role_id Many2one → res.users.role
    comodel_name='res.users.role' ondelete='cascade' required=True
  • user_ids Many2many → res.users
    comodel_name='res.users' required=True string='Users'
Public methods (1)
  • action_add_users(self)

New fields (2)
  • assign_to_user Boolean
    default=True args: 'Assign to user'
  • name Char
    required=True
Public methods (1)
  • create_from_user(self)

New fields (1)
  • name Char
    help='Group groups into a role and specify a name for this role' required=True
Public methods (1)
  • create_role(self)
REPOSITORY
REPOSITORYOCA/server-backend
GIT
GIThttps://github.com/OCA/server-backend.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-backend/tree/17.0/base_user_role
VERSION
VERSION 1.1.2
CATEGORY
CATEGORYTools
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ABF OSIELL
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ABF OSIELL
COMMITTERS
COMMITTERSSébastien Alix, Weblate, OCA-git-bot, Raf Ven, oca-ci, Dawn Hwang, Christopher Rogos
WEBSITE
WEBSITEhttps://github.com/OCA/server-backend
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:11
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module was written to extend the standard functionality regarding
users and groups management. It helps creating well-defined user roles
and associating them to users.

It can become very hard to maintain a large number of user profiles over
time, juggling with many technical groups. For this purpose, this module
will help you to:

> - define functional roles by aggregating low-level groups,
> - set user accounts with the predefined roles (roles are cumulative),
> - update groups of all relevant user accounts (all at once),
> - ensure that user accounts will have the groups defined in their
>   roles (nothing more, nothing less). In other words, you can not set
>   groups manually on a user as long as there is roles configured on
>   it,
> - activate/deactivate roles depending on the date (useful to plan
>   holidays, etc)
> - get a quick overview of roles and the related user accounts.

That way you make clear the different responsabilities within a company,
and are able to add and update user accounts in a scalable and reliable
way.

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
create_from_user_wizard_view Create role from user wizard.create.role.from.user form New
group_groups_into_role_wiz_view wizard.groups.into.role.wiz.view wizard.groups.into.role form New
res_groups_view_form res.groups.form - base_user_role res.groups xpath Inherits base.view_groups_form
view_res_users_form_inherit res.users.form.inherit res.users xpath Inherits base.view_users_form
view_res_users_role_form res.users.role.form res.users.role form New
view_res_users_role_search res.users.role.search res.users.role search New
view_res_users_role_tree res.users.role.tree res.users.role tree New
view_res_users_search_inherit res.users.search.inherit res.users field Inherits base.view_users_search
view_res_users_tree_inherit res.users field Inherits base.view_users_tree
Models touched (6)

New fields (6)
  • parent_ids Many2many → res.groups
    help='Inverse relation for the Inherits field. The groups from which this group is inheriting' string='Parents' args: 'res.groups', 'res_groups_implied_rel', 'hid', 'gid'
  • role_count Integer
    compute='_compute_role_count' args: '# Roles'
  • role_id One2many → res.users.role
    comodel_name='res.users.role' help='Relation for the groups that represents a role' inverse_name='group_id'
  • role_ids Many2many → res.users.role
    comodel_name='res.users.role' compute='_compute_role_ids' help='Roles in which the group is involved' relation='res_groups_implied_roles_rel' string='Roles'
  • trans_parent_ids Many2many → res.groups
    comodel_name='res.groups' compute='_compute_trans_parent_ids' recursive=True string='Parent Groups'
  • view_access Many2many
    groups='base.group_system'
Public methods (1)
  • action_view_roles(self)

New fields (3)
  • role_ids One2many → res.users.role
    comodel_name='res.users.role' compute='_compute_role_ids' compute_sudo=True groups='base.group_erp_manager' string='Roles'
  • role_line_ids One2many → res.users.role.line
    comodel_name='res.users.role.line' default=<expr> groups='base.group_erp_manager' inverse_name='user_id' string='Role lines'
  • show_alert Boolean
    compute='_compute_show_alert'
Public methods (3)
  • create(self, vals_list)
    @api.model_create_multi
  • set_groups_from_roles(self, force=False)
    Set (replace) the groups following the roles defined on users. If no role is defined on the user, its groups are let untouched unless the `force` parameter is `True`.
  • write(self, vals)

New fields (8)
  • group_category_id Many2one
    default=<expr> help="Associated group's category" readonly=False related='group_id.category_id' string='Associated category'
  • group_id Many2one → res.groups
    comodel_name='res.groups' ondelete='cascade' readonly=True required=True string='Associated group'
  • line_ids One2many → res.users.role.line
    comodel_name='res.users.role.line' inverse_name='role_id' string='Role lines'
  • model_access_count Integer
    compute='_compute_model_access_ids'
  • model_access_ids Many2many → ir.model.access
    comodel_name='ir.model.access' compute='_compute_model_access_ids' required=False string='Access Rights'
  • rule_ids Many2many → ir.rule
    comodel_name='ir.rule' compute='_compute_rule_ids' required=False string='Record Rules'
  • rules_count Integer
    compute='_compute_rule_ids'
  • user_ids One2many → res.users
    comodel_name='res.users' compute='_compute_user_ids' string='Users list'
Public methods (9)
  • copy(self, default=None)
  • create(self, vals_list)
    @api.model_create_multi
  • cron_update_users(self)
    @api.model
  • read(self, fields=None, load='_classic_read')
  • show_model_access_ids(self)
  • show_rule_ids(self)
  • unlink(self)
  • update_users(self)
    Update all the users concerned by the roles identified by `ids`.
  • write(self, vals)

New fields (6)
  • active Boolean
    related='user_id.active'
  • date_from Date
    args: 'From'
  • date_to Date
    args: 'To'
  • is_enabled Boolean
    compute='_compute_is_enabled' args: 'Enabled'
  • role_id Many2one → res.users.role
    comodel_name='res.users.role' ondelete='cascade' required=True string='Role'
  • user_id Many2one → res.users
    comodel_name='res.users' domain=[('id', '!=', SUPERUSER_ID)] ondelete='cascade' required=True string='User'
Public methods (1)
  • unlink(self)

New fields (2)
  • assign_to_user Boolean
    default=True args: 'Assign to user'
  • name Char
    required=True
Public methods (1)
  • create_from_user(self)

New fields (1)
  • name Char
    help='Group groups into a role and specify a name for this role' required=True
Public methods (1)
  • create_role(self)
REPOSITORY
REPOSITORYOCA/server-backend
GIT
GIThttps://github.com/OCA/server-backend.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-backend/tree/16.0/base_user_role
VERSION
VERSION 1.4.4
CATEGORY
CATEGORYTools
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ABF OSIELL
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ABF OSIELL
COMMITTERS
COMMITTERSArnaud Pineux, Sylvain LE GAL, GitHub, Daniel Reis, Víctor Martínez, Sébastien Alix, JordiMForgeFlow, Weblate, OCA-git-bot, oca-ci, Daniel Duque, Jérémy Didderen, Guillaume Pothier
WEBSITE
WEBSITEhttps://github.com/OCA/server-backend
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:54:00
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
create_from_user_wizard_view Create role from user wizard.create.role.from.user form New
group_groups_into_role_wiz_view wizard.groups.into.role.wiz.view wizard.groups.into.role form New
res_groups_view_form res.groups.form - base_user_role res.groups xpath Inherits base.view_groups_form
view_res_users_form_inherit res.users.form.inherit res.users xpath Inherits base.view_users_form
view_res_users_role_form res.users.role.form res.users.role form New
view_res_users_role_search res.users.role.search res.users.role search New
view_res_users_role_tree res.users.role.tree res.users.role tree New
view_res_users_search_inherit res.users.search.inherit res.users field Inherits base.view_users_search
view_res_users_tree_inherit res.users field Inherits base.view_users_tree
Models touched (6)

New fields (6)
  • parent_ids Many2many → res.groups
    help='Inverse relation for the Inherits field. The groups from which this group is inheriting' string='Parents' args: 'res.groups', 'res_groups_implied_rel', 'hid', 'gid'
  • role_count Integer
    compute='_compute_role_count' args: '# Roles'
  • role_id One2many → res.users.role
    comodel_name='res.users.role' help='Relation for the groups that represents a role' inverse_name='group_id'
  • role_ids Many2many → res.users.role
    comodel_name='res.users.role' compute='_compute_role_ids' help='Roles in which the group is involved' relation='res_groups_implied_roles_rel' string='Roles'
  • trans_parent_ids Many2many → res.groups
    comodel_name='res.groups' compute='_compute_trans_parent_ids' recursive=True string='Parent Groups'
  • view_access Many2many
    groups='base.group_system'
Public methods (1)
  • action_view_roles(self)

New fields (3)
  • role_ids One2many → res.users.role
    comodel_name='res.users.role' compute='_compute_role_ids' compute_sudo=True groups='base.group_erp_manager' string='Roles'
  • role_line_ids One2many → res.users.role.line
    comodel_name='res.users.role.line' default=<expr> groups='base.group_erp_manager' inverse_name='user_id' string='Role lines'
  • show_alert Boolean
    compute='_compute_show_alert'
Public methods (4)
  • copy(self, default=None)
  • create(self, vals_list)
    @api.model_create_multi
  • set_groups_from_roles(self, force=False)
    Set (replace) the groups following the roles defined on users. If no role is defined on the user, its groups are let untouched unless the `force` parameter is `True`.
  • write(self, vals)

New fields (8)
  • group_category_id Many2one
    default=<expr> help="Associated group's category" readonly=False related='group_id.category_id' string='Associated category'
  • group_id Many2one → res.groups
    comodel_name='res.groups' ondelete='cascade' readonly=True required=True string='Associated group'
  • line_ids One2many → res.users.role.line
    comodel_name='res.users.role.line' inverse_name='role_id' string='Role lines'
  • model_access_count Integer
    compute='_compute_model_access_ids'
  • model_access_ids Many2many → ir.model.access
    comodel_name='ir.model.access' compute='_compute_model_access_ids' required=False string='Access Rights'
  • rule_ids Many2many → ir.rule
    comodel_name='ir.rule' compute='_compute_rule_ids' required=False string='Record Rules'
  • rules_count Integer
    compute='_compute_rule_ids'
  • user_ids One2many → res.users
    comodel_name='res.users' compute='_compute_user_ids' string='Users list'
Public methods (9)
  • copy(self, default=None)
  • create(self, vals_list)
    @api.model_create_multi
  • cron_update_users(self)
    @api.model
  • read(self, fields=None, load='_classic_read')
  • show_model_access_ids(self)
  • show_rule_ids(self)
  • unlink(self)
  • update_users(self)
    Update all the users concerned by the roles identified by `ids`.
  • write(self, vals)

New fields (6)
  • active Boolean
    related='user_id.active'
  • date_from Date
    args: 'From'
  • date_to Date
    args: 'To'
  • is_enabled Boolean
    compute='_compute_is_enabled' args: 'Enabled'
  • role_id Many2one → res.users.role
    comodel_name='res.users.role' ondelete='cascade' required=True string='Role'
  • user_id Many2one → res.users
    comodel_name='res.users' domain=[('id', '!=', SUPERUSER_ID)] ondelete='cascade' required=True string='User'
Public methods (1)
  • unlink(self)

New fields (2)
  • assign_to_user Boolean
    default=True args: 'Assign to user'
  • name Char
    required=True
Public methods (1)
  • create_from_user(self)

New fields (1)
  • name Char
    help='Group groups into a role and specify a name for this role' required=True
Public methods (1)
  • create_role(self)
REPOSITORY
REPOSITORYOCA/server-backend
GIT
GIThttps://github.com/OCA/server-backend.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-backend/tree/15.0/base_user_role
VERSION
VERSION 0.4.2
CATEGORY
CATEGORYTools
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ABF OSIELL
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ABF OSIELL
COMMITTERS
COMMITTERSGitHub, Kiril Vangelovski, OCA Transbot, Víctor Martínez, Sébastien Alix, JordiMForgeFlow, Weblate, OCA-git-bot, SilvioC2C, oca-ci, Tatiana Deribina, Adam Heinz, GuillemCForgeFlow, Laurent Stukkens, Jérémy Didderen, ArnauCForgeFlow
WEBSITE
WEBSITEhttps://github.com/OCA/server-backend
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:43
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
group_groups_into_role_wiz_view wizard.groups.into.role.wiz.view wizard.groups.into.role form New
res_groups_view_form res.groups.form - base_user_role res.groups xpath Inherits base.view_groups_form
view_res_users_form_inherit res.users.form.inherit res.users xpath Inherits base.view_users_form
view_res_users_role_form res.users.role.form res.users.role form New
view_res_users_role_search res.users.role.search res.users.role search New
view_res_users_role_tree res.users.role.tree res.users.role tree New
view_res_users_search_inherit res.users.search.inherit res.users field Inherits base.view_users_search
view_res_users_tree_inherit res.users field Inherits base.view_users_tree
Models touched (5)

New fields (6)
  • parent_ids Many2many → res.groups
    help='Inverse relation for the Inherits field. The groups from which this group is inheriting' string='Parents' args: 'res.groups', 'res_groups_implied_rel', 'hid', 'gid'
  • role_count Integer
    compute='_compute_role_count' args: '# Roles'
  • role_id One2many → res.users.role
    comodel_name='res.users.role' help='Relation for the groups that represents a role' inverse_name='group_id'
  • role_ids Many2many → res.users.role
    comodel_name='res.users.role' compute='_compute_role_ids' help='Roles in which the group is involved' relation='res_groups_implied_roles_rel' string='Roles'
  • trans_parent_ids Many2many → res.groups
    comodel_name='res.groups' compute='_compute_trans_parent_ids' recursive=True string='Parent Groups'
  • view_access Many2many
    groups='base.group_system'
Public methods (1)
  • action_view_roles(self)

New fields (2)
  • role_ids One2many → res.users.role
    comodel_name='res.users.role' compute='_compute_role_ids' compute_sudo=True groups='base.group_erp_manager' string='Roles'
  • role_line_ids One2many → res.users.role.line
    comodel_name='res.users.role.line' default=<expr> groups='base.group_erp_manager' inverse_name='user_id' string='Role lines'
Public methods (3)
  • create(self, vals)
    @api.model
  • set_groups_from_roles(self, force=False)
    Set (replace) the groups following the roles defined on users. If no role is defined on the user, its groups are let untouched unless the `force` parameter is `True`.
  • write(self, vals)

New fields (8)
  • group_category_id Many2one
    default=<expr> help="Associated group's category" readonly=False related='group_id.category_id' string='Associated category'
  • group_id Many2one → res.groups
    comodel_name='res.groups' ondelete='cascade' readonly=True required=True string='Associated group'
  • line_ids One2many → res.users.role.line
    comodel_name='res.users.role.line' inverse_name='role_id' string='Role lines'
  • model_access_count Integer
    compute='_compute_model_access_ids'
  • model_access_ids Many2many → ir.model.access
    comodel_name='ir.model.access' compute='_compute_model_access_ids' required=False string='Access Rights'
  • rule_ids Many2many → ir.rule
    comodel_name='ir.rule' compute='_compute_rule_ids' required=False string='Record Rules'
  • rules_count Integer
    compute='_compute_rule_ids'
  • user_ids One2many → res.users
    comodel_name='res.users' compute='_compute_user_ids' string='Users list'
Public methods (9)
  • copy(self, default=None)
  • create(self, vals)
    @api.model
  • cron_update_users(self)
    @api.model
  • read(self, fields=None, load='_classic_read')
  • show_model_access_ids(self)
  • show_rule_ids(self)
  • unlink(self)
  • update_users(self)
    Update all the users concerned by the roles identified by `ids`.
  • write(self, vals)

New fields (6)
  • active Boolean
    related='user_id.active'
  • date_from Date
    args: 'From'
  • date_to Date
    args: 'To'
  • is_enabled Boolean
    compute='_compute_is_enabled' args: 'Enabled'
  • role_id Many2one → res.users.role
    comodel_name='res.users.role' ondelete='cascade' required=True string='Role'
  • user_id Many2one → res.users
    comodel_name='res.users' domain=[('id', '!=', SUPERUSER_ID)] ondelete='cascade' required=True string='User'
Public methods (1)
  • unlink(self)

New fields (1)
  • name Char
    help='Group groups into a role and specify a name for this role' required=True
Public methods (1)
  • create_role(self)
REPOSITORY
REPOSITORYOCA/server-backend
GIT
GIThttps://github.com/OCA/server-backend.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-backend/tree/14.0/base_user_role
VERSION
VERSION 2.5.3
CATEGORY
CATEGORYTools
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ABF OSIELL
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ABF OSIELL
COMMITTERS
COMMITTERSGitHub, Daniel Reis, Harald Panten, OCA Transbot, Sébastien Alix, JordiMForgeFlow, Jesús Alan Ramos Rodríguez, Sébastien BEAU, oca-travis, Weblate, OCA-git-bot, oca-ci, KevinKhao, GuillemCForgeFlow, Jérémy Didderen, Kev-Roche
WEBSITE
WEBSITEhttps://github.com/OCA/server-backend
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:41:12
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
res_groups_view_form res.groups.form - base_user_role res.groups xpath Inherits base.view_groups_form
view_res_users_form_inherit res.users.form.inherit res.users xpath Inherits base.view_users_form
view_res_users_role_form res.users.role.form res.users.role form New
view_res_users_role_search res.users.role.search res.users.role search New
view_res_users_role_tree res.users.role.tree res.users.role tree New
view_res_users_search_inherit res.users.search.inherit res.users field Inherits base.view_users_search
Models touched (4)

New fields (5)
  • parent_ids Many2many → res.groups
    help='Inverse relation for the Inherits field. The groups from which this group is inheriting' string='Parents' args: 'res.groups', 'res_groups_implied_rel', 'hid', 'gid'
  • role_count Integer
    compute='_compute_role_count' args: '# Roles'
  • role_id One2many → res.users.role
    comodel_name='res.users.role' help='Relation for the groups that represents a role' inverse_name='group_id'
  • role_ids Many2many → res.users.role
    comodel_name='res.users.role' compute='_compute_role_ids' help='Roles in which the group is involved' relation='res_groups_implied_roles_rel' string='Roles'
  • trans_parent_ids Many2many → res.groups
    comodel_name='res.groups' compute='_compute_trans_parent_ids' string='Parent Groups'
Public methods (1)
  • action_view_roles(self)

New fields (2)
  • role_ids One2many → res.users.role
    comodel_name='res.users.role' compute='_compute_role_ids' compute_sudo=True string='Roles'
  • role_line_ids One2many → res.users.role.line
    comodel_name='res.users.role.line' default=<expr> inverse_name='user_id' string='Role lines'
Public methods (3)
  • create(self, vals)
    @api.model
  • set_groups_from_roles(self, force=False)
    Set (replace) the groups following the roles defined on users. If no role is defined on the user, its groups are let untouched unless the `force` parameter is `True`.
  • write(self, vals)

New fields (8)
  • group_category_id Many2one
    default=<expr> help="Associated group's category" readonly=False related='group_id.category_id' string='Associated category'
  • group_id Many2one → res.groups
    comodel_name='res.groups' ondelete='cascade' readonly=True required=True string='Associated group'
  • line_ids One2many → res.users.role.line
    comodel_name='res.users.role.line' inverse_name='role_id' string='Role lines'
  • model_access_count Integer
    compute='_compute_model_access_ids'
  • model_access_ids Many2many → ir.model.access
    comodel_name='ir.model.access' compute='_compute_model_access_ids' required=False string='Access Rights'
  • rule_ids Many2many → ir.rule
    comodel_name='ir.rule' compute='_compute_rule_ids' required=False string='Record Rules'
  • rules_count Integer
    compute='_compute_rule_ids'
  • user_ids One2many → res.users
    comodel_name='res.users' compute='_compute_user_ids' string='Users list'
Public methods (9)
  • copy(self, default=None)
  • create(self, vals)
    @api.model
  • cron_update_users(self)
    @api.model
  • read(self, fields=None, load='_classic_read')
  • show_model_access_ids(self)
  • show_rule_ids(self)
  • unlink(self)
  • update_users(self)
    Update all the users concerned by the roles identified by `ids`.
  • write(self, vals)

New fields (6)
  • active Boolean
    related='user_id.active'
  • date_from Date
    args: 'From'
  • date_to Date
    args: 'To'
  • is_enabled Boolean
    compute='_compute_is_enabled' args: 'Enabled'
  • role_id Many2one → res.users.role
    comodel_name='res.users.role' ondelete='cascade' required=True string='Role'
  • user_id Many2one → res.users
    comodel_name='res.users' domain=[('id', '!=', SUPERUSER_ID)] ondelete='cascade' required=True string='User'
Public methods (1)
  • unlink(self)
REPOSITORY
REPOSITORYOCA/server-backend
GIT
GIThttps://github.com/OCA/server-backend.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-backend/tree/13.0/base_user_role
VERSION
VERSION 1.4.1
CATEGORY
CATEGORYTools
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ABF OSIELL
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ABF OSIELL
COMMITTERS
COMMITTERSsebalix, Harald Panten, OCA Transbot, JordiMForgeFlow, Ernesto Tejeda, oca-travis, Weblate, OCA-git-bot, GuillemCForgeFlow, Vincent Hatakeyama
WEBSITE
WEBSITEhttps://github.com/OCA/server-backend
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:20
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
res_groups_view_form res.groups.form - base_user_role res.groups xpath Inherits base.view_groups_form
view_res_users_form_inherit res.users.form.inherit res.users xpath Inherits base.view_users_form
view_res_users_role_form res.users.role.form res.users.role form New
view_res_users_role_search res.users.role.search res.users.role search New
view_res_users_role_tree res.users.role.tree res.users.role tree New
view_res_users_search_inherit res.users.search.inherit res.users field Inherits base.view_users_search
Models touched (4)

New fields (5)
  • parent_ids Many2many → res.groups
    help='Inverse relation for the Inherits field. The groups from which this group is inheriting' string='Parents' args: 'res.groups', 'res_groups_implied_rel', 'hid', 'gid'
  • role_count Integer
    compute='_compute_role_count' args: '# Roles'
  • role_id One2many → res.users.role
    comodel_name='res.users.role' help='Relation for the groups that represents a role' inverse_name='group_id'
  • role_ids Many2many → res.users.role
    comodel_name='res.users.role' compute='_compute_role_ids' help='Roles in which the group is involved' relation='res_groups_implied_roles_rel' string='Roles'
  • trans_parent_ids Many2many → res.groups
    comodel_name='res.groups' compute='_compute_trans_parent_ids' string='Parent Groups'
Public methods (1)
  • action_view_roles(self)

New fields (2)
  • role_ids One2many → res.users.role
    comodel_name='res.users.role' compute='_compute_role_ids' compute_sudo=True string='Roles'
  • role_line_ids One2many → res.users.role.line
    comodel_name='res.users.role.line' default=<expr> inverse_name='user_id' string='Role lines'
Public methods (3)
  • create(self, vals)
    @api.model
  • set_groups_from_roles(self, force=False)
    Set (replace) the groups following the roles defined on users. If no role is defined on the user, its groups are let untouched unless the `force` parameter is `True`.
  • write(self, vals)

New fields (5)
  • comment Html
    string='Internal Notes'
  • group_category_id Many2one
    default=<expr> help="Associated group's category" readonly=False related='group_id.category_id' string='Associated category'
  • group_id Many2one → res.groups
    comodel_name='res.groups' ondelete='cascade' readonly=True required=True string='Associated group'
  • line_ids One2many → res.users.role.line
    comodel_name='res.users.role.line' inverse_name='role_id' string='Role lines'
  • user_ids One2many → res.users
    comodel_name='res.users' compute='_compute_user_ids' string='Users list'
Public methods (5)
  • create(self, vals)
    @api.model
  • cron_update_users(self)
    @api.model
  • unlink(self)
  • update_users(self)
    Update all the users concerned by the roles identified by `ids`.
  • write(self, vals)

New fields (7)
  • active Boolean
    related='user_id.active'
  • company_id Many2one → res.company
    default=<expr> args: 'res.company', 'Company'
  • date_from Date
    args: 'From'
  • date_to Date
    args: 'To'
  • is_enabled Boolean
    compute='_compute_is_enabled' args: 'Enabled'
  • role_id Many2one → res.users.role
    comodel_name='res.users.role' ondelete='cascade' required=True string='Role'
  • user_id Many2one → res.users
    comodel_name='res.users' domain=[('id', '!=', SUPERUSER_ID)] ondelete='cascade' required=True string='User'
Public methods (1)
  • unlink(self)
REPOSITORY
REPOSITORYOCA/server-backend
GIT
GIThttps://github.com/OCA/server-backend.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-backend/tree/12.0/base_user_role
VERSION
VERSION 2.1.3
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ABF OSIELL
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ABF OSIELL
COMMITTERS
COMMITTERSPedro M. Baeza, Sylvain LE GAL, Jairo Llopis, Daniel Reis, Harald Panten, Andrius Laukavičius, OCA Transbot, oca-travis, Weblate, OCA-git-bot, ernesto, hveficent, Duc Dao, hugues de keyzer, Kevin Khao
WEBSITE
WEBSITEhttps://github.com/OCA/server-backend
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:25
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
view_res_users_form_inherit res.users.form.inherit res.users xpath Inherits base.view_users_form
view_res_users_role_form res.users.role.form res.users.role form New
view_res_users_role_search res.users.role.search res.users.role search New
view_res_users_role_tree res.users.role.tree res.users.role tree New
view_res_users_search_inherit res.users.search.inherit res.users field Inherits base.view_users_search
Models touched (3)

New fields (2)
  • role_ids One2many → res.users.role
    comodel_name='res.users.role' compute='_compute_role_ids' string='Roles'
  • role_line_ids One2many → res.users.role.line
    comodel_name='res.users.role.line' default=<expr> inverse_name='user_id' string='Role lines'
Public methods (3)
  • create(self, vals)
    @api.model
  • set_groups_from_roles(self, force=False)
    @api.multi
    Set (replace) the groups following the roles defined on users. If no role is defined on the user, its groups are let untouched unless the `force` parameter is `True`.
  • write(self, vals)
    @api.multi

New fields (5)
  • comment Html
    string='Internal Notes'
  • group_category_id Many2one → ir.module.category
    comodel_name='ir.module.category' related='group_id.category_id' string='Associated category'
  • group_id Many2one → res.groups
    comodel_name='res.groups' ondelete='cascade' readonly=True required=True string='Associated group'
  • line_ids One2many → res.users.role.line
    comodel_name='res.users.role.line' inverse_name='role_id' string='Role lines'
  • user_ids One2many → res.users
    comodel_name='res.users' compute='_compute_user_ids' string='Users list'
Public methods (5)
  • create(self, vals)
    @api.model
  • cron_update_users(self)
    @api.model
  • unlink(self)
    @api.multi
  • update_users(self)
    @api.multi
    Update all the users concerned by the roles identified by `ids`.
  • write(self, vals)
    @api.multi

New fields (6)
  • company_id Many2one → res.company
    default=<expr> args: 'res.company', 'Company'
  • date_from Date
    args: 'From'
  • date_to Date
    args: 'To'
  • is_enabled Boolean
    compute='_compute_is_enabled' args: 'Enabled'
  • role_id Many2one → res.users.role
    comodel_name='res.users.role' ondelete='cascade' string='Role'
  • user_id Many2one → res.users
    comodel_name='res.users' string='User'
Public methods (1)
  • unlink(self)
    @api.multi
REPOSITORY
REPOSITORYOCA/server-backend
GIT
GIThttps://github.com/OCA/server-backend.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-backend/tree/11.0/base_user_role
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ABF OSIELL
MAINTAINERS
MAINTAINERSABF OSIELL
COMMITTERS
COMMITTERSPedro M. Baeza, Stéphane Bidoul (ACSONE), Harald Panten, Jordi Ballester Alomar, OCA Transbot, oca-travis, Weblate, Benjamin Willig, Duc Dao
WEBSITE
WEBSITEhttp://www.osiell.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:24:02
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
view_res_users_form_inherit res.users.form.inherit res.users xpath Inherits base.view_users_form
view_res_users_role_form res.users.role.form res.users.role form New
view_res_users_role_search res.users.role.search res.users.role search New
view_res_users_role_tree res.users.role.tree res.users.role tree New
view_res_users_search_inherit res.users.search.inherit res.users field Inherits base.view_users_search
Models touched (3)

New fields (2)
  • role_ids One2many → res.users.role
    comodel_name='res.users.role' compute='_compute_role_ids' string='Roles'
  • role_line_ids One2many → res.users.role.line
    comodel_name='res.users.role.line' default=<expr> inverse_name='user_id' string='Role lines'
Public methods (3)
  • create(self, vals)
    @api.model
  • set_groups_from_roles(self, force=False)
    @api.multi
    Set (replace) the groups following the roles defined on users. If no role is defined on the user, its groups are let untouched unless the `force` parameter is `True`.
  • write(self, vals)
    @api.multi

New fields (5)
  • comment Html
    string='Internal Notes'
  • group_category_id Many2one
    default=<expr> related='group_id.category_id'
  • group_id Many2one → res.groups
    comodel_name='res.groups' ondelete='cascade' readonly=True required=True string='Associated group'
  • line_ids One2many → res.users.role.line
    comodel_name='res.users.role.line' inverse_name='role_id' string='Users'
  • user_ids One2many → res.users
    comodel_name='res.users' compute='_compute_user_ids' string='Users'
Public methods (5)
  • create(self, vals)
    @api.model
  • cron_update_users(self)
    @api.model
  • unlink(self)
    @api.multi
  • update_users(self)
    @api.multi
    Update all the users concerned by the roles identified by `ids`.
  • write(self, vals)
    @api.multi

New fields (5)
  • date_from Date
    args: 'From'
  • date_to Date
    args: 'To'
  • is_enabled Boolean
    compute='_compute_is_enabled' args: 'Enabled'
  • role_id Many2one → res.users.role
    comodel_name='res.users.role' ondelete='cascade' string='Role'
  • user_id Many2one → res.users
    comodel_name='res.users' string='User'
Public methods (1)
  • unlink(self)
    @api.multi
REPOSITORY
REPOSITORYOCA/server-tools
GIT
GIThttps://github.com/OCA/server-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-tools/tree/10.0/base_user_role
VERSION
VERSION 1.0.3
CATEGORY
CATEGORYTools
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ABF OSIELL
MAINTAINERS
MAINTAINERSABF OSIELL
COMMITTERS
COMMITTERSGitHub, Jairo Llopis, Stéphane Bidoul (ACSONE), OCA Transbot, Adrien Peiffer (ACSONE), Dave Lasley, oca-travis, Weblate, Pierrick Brun, elicoidal, Benjamin Willig
WEBSITE
WEBSITEhttp://www.osiell.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:20:00
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
view_res_users_form_inherit res.users.form.inherit res.users xpath Inherits base.view_users_form
view_res_users_role_form res.users.role.form res.users.role form New
view_res_users_role_search res.users.role.search res.users.role search New
view_res_users_role_tree res.users.role.tree res.users.role tree New
view_res_users_search_inherit res.users.search.inherit res.users field Inherits base.view_users_search
Models touched (3)

New fields (2)
  • role_ids One2many → res.users.role
    compute='_compute_role_ids' string='Roles' args: 'res.users.role'
  • role_line_ids One2many → res.users.role.line
    default=<expr> string='Role lines' args: 'res.users.role.line', 'user_id'
Public methods (3)
  • create(self, vals)
    @api.model
  • set_groups_from_roles(self)
    @api.multi
    Set (replace) the groups following the roles defined on users. If no role is defined on the user, its groups are let untouched.
  • write(self, vals)
    @api.multi

New fields (4)
  • group_category_id Many2one
    default=<expr> related='group_id.category_id'
  • group_id Many2one → res.groups
    ondelete='cascade' readonly=True required=True string='Associated group' args: 'res.groups'
  • line_ids One2many → res.users.role.line
    string='Users' args: 'res.users.role.line', 'role_id'
  • user_ids One2many → res.users
    compute='_compute_user_ids' string='Users' args: 'res.users'
Public methods (4)
  • create(self, vals)
    @api.model
  • cron_update_users(self)
    @api.model
  • update_users(self)
    @api.multi
    Update all the users concerned by the roles identified by `ids`.
  • write(self, vals)
    @api.multi

New fields (6)
  • company_id Many2one → res.company
    default=<expr> args: 'res.company', 'Company'
  • date_from Date
    args: 'From'
  • date_to Date
    args: 'To'
  • is_enabled Boolean
    compute='_compute_is_enabled' args: 'Enabled'
  • role_id Many2one → res.users.role
    ondelete='cascade' required=True string='Role' args: 'res.users.role'
  • user_id Many2one → res.users
    domain=[('id', '!=', SUPERUSER_ID)] ondelete='cascade' required=True string='User' args: 'res.users'
Public methods (1)
  • unlink(self)
    @api.multi
REPOSITORY
REPOSITORYOCA/server-tools
GIT
GIThttps://github.com/OCA/server-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-tools/tree/9.0/base_user_role
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYTools
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ABF OSIELL
MAINTAINERS
MAINTAINERSABF OSIELL
COMMITTERS
COMMITTERSsebalix, Stéphane Bidoul (ACSONE), OCA Transbot, darshan-serpent, oca-travis, Weblate, elicoidal
WEBSITE
WEBSITEhttp://www.osiell.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:15:22
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
view_res_users_form_inherit res.users.form.inherit res.users xpath Inherits base.view_users_form
view_res_users_role_form res.users.role.form res.users.role form New
view_res_users_role_search res.users.role.search res.users.role search New
view_res_users_role_tree res.users.role.tree res.users.role tree New
view_res_users_search_inherit res.users.search.inherit res.users field Inherits base.view_users_search
Models touched (3)

New fields (2)
  • role_ids One2many → res.users.role
    compute='_compute_role_ids' string='Roles' args: 'res.users.role'
  • role_line_ids One2many → res.users.role.line
    string='Role lines' args: 'res.users.role.line', 'user_id'
Public methods (3)
  • create(self, vals)
    @api.model
  • set_groups_from_roles(self)
    @api.multi
    Set (replace) the groups following the roles defined on users. If no role is defined on the user, its groups are let untouched.
  • write(self, vals)
    @api.multi

New fields (4)
  • group_category_id Many2one
    default=<expr> related='group_id.category_id'
  • group_id Many2one → res.groups
    ondelete='cascade' readonly=True required=True string='Associated group' args: 'res.groups'
  • line_ids One2many → res.users.role.line
    string='Users' args: 'res.users.role.line', 'role_id'
  • user_ids One2many → res.users
    compute='_compute_user_ids' string='Users' args: 'res.users'
Public methods (4)
  • create(self, vals)
    @api.model
  • cron_update_users(self)
    @api.model
  • update_users(self)
    @api.multi
    Update all the users concerned by the roles identified by `ids`.
  • write(self, vals)
    @api.multi

New fields (5)
  • date_from Date
    args: 'From'
  • date_to Date
    args: 'To'
  • is_enabled Boolean
    compute='_compute_is_enabled' args: 'Enabled'
  • role_id Many2one → res.users.role
    ondelete='cascade' string='Role' args: 'res.users.role'
  • user_id Many2one → res.users
    string='User' args: 'res.users'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/server-tools
GIT
GIThttps://github.com/OCA/server-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-tools/tree/8.0/base_user_role
VERSION
VERSION 1.2.0
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ABF OSIELL
MAINTAINERS
MAINTAINERSABF OSIELL
COMMITTERS
COMMITTERSStefan Rijnhart, GitHub, sebalix, Stéphane Bidoul (ACSONE), OCA Transbot, Dave Lasley, oca-travis, Weblate, Mourad EL HADJ MIMOUNE
WEBSITE
WEBSITEhttp://www.osiell.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:11:25
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
view_res_users_form_inherit res.users.form.inherit res.users xpath Inherits base.view_users_form
view_res_users_role_form res.users.role.form res.users.role form New
view_res_users_role_search res.users.role.search res.users.role search New
view_res_users_role_tree res.users.role.tree res.users.role tree New
view_res_users_search_inherit res.users.search.inherit res.users field Inherits base.view_users_search
Models touched (4)

New fields (0)

No new fields.

Public methods (1)
  • update_user_groups_view(self)
    @api.model
    Make group selection and checkboxes appear readonly when there are roles on the user

New fields (2)
  • role_ids One2many → res.users.role
    compute='_compute_role_ids' string='Roles' args: 'res.users.role'
  • role_line_ids One2many → res.users.role.line
    string='Role lines' args: 'res.users.role.line', 'user_id'
Public methods (3)
  • create(self, vals)
    @api.model
  • set_groups_from_roles(self, force=False)
    @api.multi
    Set (replace) the groups following the roles defined on users. If no role is defined on the user, its groups are let untouched unless the `force` parameter is `True`.
  • write(self, vals)
    @api.multi

New fields (3)
  • group_id Many2one → res.groups
    ondelete='cascade' readonly=True required=True string='Associated group' args: 'res.groups'
  • line_ids One2many → res.users.role.line
    string='Users' args: 'res.users.role.line', 'role_id'
  • user_ids One2many → res.users
    compute='_compute_user_ids' string='Users' args: 'res.users'
Public methods (5)
  • create(self, vals)
    @api.model
  • cron_update_users(self)
    @api.model
  • unlink(self)
    @api.multi
  • update_users(self)
    @api.multi
    Update all the users concerned by the roles identified by `ids`.
  • write(self, vals)
    @api.multi

New fields (5)
  • date_from Date
    args: 'From'
  • date_to Date
    args: 'To'
  • is_enabled Boolean
    compute='_compute_is_enabled' args: 'Enabled'
  • role_id Many2one → res.users.role
    ondelete='cascade' string='Role' args: 'res.users.role'
  • user_id Many2one → res.users
    string='User' args: 'res.users'
Public methods (1)
  • unlink(self)
    @api.multi