Mass Editing

server_action_mass_edit
REPOSITORY
REPOSITORYOCA/server-ux
GIT
GIThttps://github.com/OCA/server-ux.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-ux/tree/19.0/server_action_mass_edit
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), GRAP, Serpent Consulting Services Pvt. Ltd., Iván Todorovich
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), GRAP, Serpent Consulting Services Pvt. Ltd., Iván Todorovich
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, eduezerouali-tecnativa
WEBSITE
WEBSITEhttps://github.com/OCA/server-ux
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:40:49
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows to edit several records at the same time in any Odoo model.

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
view_mass_editing_wizard_form mass.editing.wizard form New
view_server_action_form ir.actions.server sheet Inherits base.view_server_action_form
Models touched (4)

New fields (4)
  • mass_edit_apply_domain_in_lines Boolean
    compute='_compute_mass_edit_apply_domain_in_lines' string='Apply domain in lines'
  • mass_edit_line_ids One2many → ir.actions.server.mass.edit.line
    args: 'ir.actions.server.mass.edit.line', 'server_action_id'
  • mass_edit_message Text
    help='If set, this message will be displayed in the wizard.' string='Message'
  • state Selection
    ondelete={'mass_edit': 'cascade'} selection_add=[('mass_edit', 'Mass Edit Records')]
Public methods (0)

No public methods.

New fields (8)
  • apply_domain Boolean
    default=False help='Apply default domain related to field'
  • field_domain Char
    help='Optional domain to filter the selectable values for this relational field in the mass edit wizard.' string='Domain'
  • field_id Many2one → ir.model.fields
    domain=<expr> ondelete='cascade' required=True string='Field' args: 'ir.model.fields'
  • field_relation Char
    related='field_id.relation'
  • model_id Many2one → ir.model
    related='server_action_id.model_id' args: 'ir.model'
  • sequence Integer
  • server_action_id Many2one → ir.actions.server
    ondelete='cascade' required=True string='Server Action' args: 'ir.actions.server'
  • widget_option Char
    help="Add widget text that will be used to display the field in the wizard.\nExample: 'many2many_tags', 'selection', 'image'"
Public methods (0)

No public methods.

New fields (1)
  • mass_server_action_id Many2one → ir.actions.server
    args: 'ir.actions.server'
Public methods (0)

No public methods.

New fields (6)
  • message Text
    readonly=True
  • operation_description_danger Text
    readonly=True
  • operation_description_info Text
    readonly=True
  • operation_description_warning Text
    readonly=True
  • remaining_item_qty Integer
    readonly=True
  • selected_item_qty Integer
    readonly=True
Public methods (8)
  • button_apply(self)
  • create(self, vals_list)
    @api.model_create_multi
  • default_get(self, fields)
    @api.model
  • fields_get(self, allfields=None, attributes=None)
    @api.model
  • get_view(self, view_id=None, view_type='form', **options)
    @api.model
  • get_views(self, views, options=None)
    @api.model
  • onchange(self, values, field_names, fields_spec)
  • read(self, fields=None, load='_classic_read')
    Without this call, dynamic fields build by fields_view_get() generate a log warning, i.e.: odoo.models:mass.editing.wizard.read() with unknown field 'myfield' odoo.models:mass.editing.wizard.read() with unknown field 'selection__myfield'
REPOSITORY
REPOSITORYOCA/server-ux
GIT
GIThttps://github.com/OCA/server-ux.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-ux/tree/18.0/server_action_mass_edit
VERSION
VERSION 1.1.3
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), GRAP, Serpent Consulting Services Pvt. Ltd., Iván Todorovich
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), GRAP, Serpent Consulting Services Pvt. Ltd., Iván Todorovich
COMMITTERS
COMMITTERSSylvain LE GAL, GitHub, Weblate, OCA-git-bot, oca-ci, trisdoan, A.David-TSC
WEBSITE
WEBSITEhttps://github.com/OCA/server-ux
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:16
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows to edit several records at the same time in any Odoo model.

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
view_mass_editing_wizard_form mass.editing.wizard form New
view_server_action_form ir.actions.server sheet Inherits base.view_server_action_form
Models touched (4)

New fields (4)
  • mass_edit_apply_domain_in_lines Boolean
    compute='_compute_mass_edit_apply_domain_in_lines' string='Apply domain in lines'
  • mass_edit_line_ids One2many → ir.actions.server.mass.edit.line
    args: 'ir.actions.server.mass.edit.line', 'server_action_id'
  • mass_edit_message Text
    help='If set, this message will be displayed in the wizard.' string='Message'
  • state Selection
    ondelete={'mass_edit': 'cascade'} selection_add=[('mass_edit', 'Mass Edit Records')]
Public methods (0)

No public methods.

New fields (6)
  • apply_domain Boolean
    default=False help='Apply default domain related to field'
  • field_id Many2one → ir.model.fields
    domain=<expr> ondelete='cascade' required=True string='Field' args: 'ir.model.fields'
  • model_id Many2one → ir.model
    related='server_action_id.model_id' args: 'ir.model'
  • sequence Integer
  • server_action_id Many2one → ir.actions.server
    ondelete='cascade' required=True string='Server Action' args: 'ir.actions.server'
  • widget_option Char
    help="Add widget text that will be used to display the field in the wizard.\nExample: 'many2many_tags', 'selection', 'image'"
Public methods (0)

No public methods.

New fields (1)
  • mass_server_action_id Many2one → ir.actions.server
    args: 'ir.actions.server'
Public methods (0)

No public methods.

New fields (6)
  • message Text
    readonly=True
  • operation_description_danger Text
    readonly=True
  • operation_description_info Text
    readonly=True
  • operation_description_warning Text
    readonly=True
  • remaining_item_qty Integer
    readonly=True
  • selected_item_qty Integer
    readonly=True
Public methods (8)
  • button_apply(self)
  • create(self, vals_list)
    @api.model_create_multi
  • default_get(self, fields)
    @api.model
  • fields_get(self, allfields=None, attributes=None)
    @api.model
  • get_view(self, view_id=None, view_type='form', **options)
    @api.model
  • get_views(self, views, options=None)
    @api.model
  • onchange(self, values, field_names, fields_spec)
  • read(self, fields=None, load='_classic_read')
    Without this call, dynamic fields build by fields_view_get() generate a log warning, i.e.: odoo.models:mass.editing.wizard.read() with unknown field 'myfield' odoo.models:mass.editing.wizard.read() with unknown field 'selection__myfield'
REPOSITORY
REPOSITORYOCA/server-ux
GIT
GIThttps://github.com/OCA/server-ux.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-ux/tree/17.0/server_action_mass_edit
VERSION
VERSION 1.0.2
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), GRAP, Serpent Consulting Services Pvt. Ltd., Iván Todorovich
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), GRAP, Serpent Consulting Services Pvt. Ltd., Iván Todorovich
COMMITTERS
COMMITTERSGitHub, Weblate, OCA-git-bot, Cyril VINH-TUNG, oca-ci, Christopher Rogos, Vang - Nguyen Phu
WEBSITE
WEBSITEhttps://github.com/OCA/server-ux
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:08
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows to edit several records at the same time in any Odoo model.

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
view_mass_editing_wizard_form mass.editing.wizard form New
view_server_action_form ir.actions.server sheet Inherits base.view_server_action_form
Models touched (4)

New fields (4)
  • mass_edit_apply_domain_in_lines Boolean
    compute='_compute_mass_edit_apply_domain_in_lines' string='Apply domain in lines'
  • mass_edit_line_ids One2many → ir.actions.server.mass.edit.line
    args: 'ir.actions.server.mass.edit.line', 'server_action_id'
  • mass_edit_message Text
    help='If set, this message will be displayed in the wizard.' string='Message'
  • state Selection
    ondelete={'mass_edit': 'cascade'} selection_add=[('mass_edit', 'Mass Edit Records')]
Public methods (0)

No public methods.

New fields (6)
  • apply_domain Boolean
    default=False help='Apply default domain related to field'
  • field_id Many2one → ir.model.fields
    domain=<expr> ondelete='cascade' required=True string='Field' args: 'ir.model.fields'
  • model_id Many2one → ir.model
    related='server_action_id.model_id' args: 'ir.model'
  • sequence Integer
  • server_action_id Many2one → ir.actions.server
    ondelete='cascade' required=True string='Server Action' args: 'ir.actions.server'
  • widget_option Char
    help="Add widget text that will be used to display the field in the wizard.\nExample: 'many2many_tags', 'selection', 'image'"
Public methods (0)

No public methods.

New fields (1)
  • mass_server_action_id Many2one → ir.actions.server
    args: 'ir.actions.server'
Public methods (0)

No public methods.

New fields (6)
  • message Text
    readonly=True
  • operation_description_danger Text
    readonly=True
  • operation_description_info Text
    readonly=True
  • operation_description_warning Text
    readonly=True
  • remaining_item_qty Integer
    readonly=True
  • selected_item_qty Integer
    readonly=True
Public methods (8)
  • button_apply(self)
  • create(self, vals_list)
    @api.model_create_multi
  • default_get(self, fields)
    @api.model
  • fields_get(self, allfields=None, attributes=None)
    @api.model
  • get_view(self, view_id=None, view_type='form', **options)
    @api.model
  • get_views(self, views, options=None)
    @api.model
  • onchange(self, values, field_names, fields_spec)
  • read(self, fields=None, load='_classic_read')
    Without this call, dynamic fields build by fields_view_get() generate a log warning, i.e.: odoo.models:mass.editing.wizard.read() with unknown field 'myfield' odoo.models:mass.editing.wizard.read() with unknown field 'selection__myfield'
REPOSITORY
REPOSITORYOCA/server-ux
GIT
GIThttps://github.com/OCA/server-ux.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-ux/tree/16.0/server_action_mass_edit
VERSION
VERSION 2.1.1
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), GRAP, Serpent Consulting Services Pvt. Ltd., Iván Todorovich
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), GRAP, Serpent Consulting Services Pvt. Ltd., Iván Todorovich
COMMITTERS
COMMITTERSHolger Brunn, Carlos Dauden, Víctor Martínez, Weblate, OCA-git-bot, oca-ci, David Ramia, Christopher Rogos
WEBSITE
WEBSITEhttps://github.com/OCA/server-ux
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:53
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 (2)
XML IDNameModelTypeStatus
view_mass_editing_wizard_form mass.editing.wizard form New
view_server_action_form ir.actions.server page Inherits base.view_server_action_form
Models touched (3)

New fields (4)
  • mass_edit_apply_domain_in_lines Boolean
    compute='_compute_mass_edit_apply_domain_in_lines' string='Apply domain in lines'
  • mass_edit_line_ids One2many → ir.actions.server.mass.edit.line
    args: 'ir.actions.server.mass.edit.line', 'server_action_id'
  • mass_edit_message Text
    help='If set, this message will be displayed in the wizard.' string='Message'
  • state Selection
    ondelete={'mass_edit': 'cascade'} selection_add=[('mass_edit', 'Mass Edit Records')]
Public methods (0)

No public methods.

New fields (6)
  • apply_domain Boolean
    default=False help='Apply default domain related to field'
  • field_id Many2one → ir.model.fields
    domain=<expr> ondelete='cascade' required=True string='Field' args: 'ir.model.fields'
  • model_id Many2one → ir.model
    related='server_action_id.model_id' args: 'ir.model'
  • sequence Integer
  • server_action_id Many2one → ir.actions.server
    ondelete='cascade' required=True string='Server Action' args: 'ir.actions.server'
  • widget_option Char
    help="Add widget text that will be used to display the field in the wizard.\nExample: 'many2many_tags', 'selection', 'image'"
Public methods (0)

No public methods.

New fields (7)
  • message Text
    readonly=True
  • operation_description_danger Text
    readonly=True
  • operation_description_info Text
    readonly=True
  • operation_description_warning Text
    readonly=True
  • remaining_item_qty Integer
    readonly=True
  • selected_item_qty Integer
    readonly=True
  • write_record_by_record Boolean
    help='This option will write the records one by one, instead of all at once.\nThis is useful when you are editing a lot of records and one of the records raises an error. \n With this option, the error message will be more specific to facillitate the undertanding of the error.'
Public methods (7)
  • button_apply(self)
  • create(self, vals_list)
    @api.model_create_multi
  • default_get(self, fields, active_ids=None)
    @api.model
  • fields_get(self, allfields=None, attributes=None)
    @api.model
  • get_view(self, view_id=None, view_type='form', **options)
    @api.model
  • onchange(self, values, field_name, field_onchange)
  • read(self, fields=None, load='_classic_read')
    Without this call, dynamic fields build by fields_view_get() generate a log warning, i.e.: odoo.models:mass.editing.wizard.read() with unknown field 'myfield' odoo.models:mass.editing.wizard.read() with unknown field 'selection__myfield'