Add custom filters in standard filters and group by dropdowns

base_custom_filter
REPOSITORY
REPOSITORYOCA/server-ux
GIT
GIThttps://github.com/OCA/server-ux.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-ux/tree/18.0/base_custom_filter
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYUsability
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ForgeFlow, Ashish Hirpara
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ForgeFlow, Ashish Hirpara
COMMITTERS
COMMITTERSOCA-git-bot, oca-ci, kobros-tech
WEBSITE
WEBSITEhttps://github.com/OCA/server-ux
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:16
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - web
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module enables the definition of bespoke searches within a model's
search view, in addition to permitting the creation of custom filters
that will be displayed beneath the standard filters, as well as within
the group-by menus of a model's search view.

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
ir_filters_view_form ir.filters.form - base_custom_filter ir.filters field Inherits base.ir_filters_view_form
ir_filters_view_tree ir.filters.list - base_custom_filter ir.filters field Inherits base.ir_filters_view_tree
ir_filters_view_tree_custom ir.filters.list.custom ir.filters list New
search_ir_filters_group search.ir.filters.group ir.filters.group search New
view_ir_filters_group_form ir.filters.group.form ir.filters.group form New
view_ir_filters_group_tree ir.filters.group.list ir.filters.group list New
Models touched (3)

New fields (0)

No new fields.

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

New fields (7)
  • filter_domain Text
    help="Enter a filter domain expression if necessary.\n Example: [('default_code', 'ilike', self)]"
  • group_id Many2one → ir.filters.group
    comodel_name='ir.filters.group' string='Filter Group'
  • group_ids Many2many → res.groups
    string='User Groups' args: 'res.groups'
  • groupby_field Many2one → ir.model.fields
    comodel_name='ir.model.fields' ondelete='cascade' string='Group By Field'
  • search_field_id Many2one → ir.model.fields
    comodel_name='ir.model.fields' ondelete='cascade'
  • sequence Integer
  • type Selection
    default='favorite' required=True selection='_selection_type'
Public methods (2)
  • get_filters(self, model, action_id=None, embedded_action_id=None, embedded_parent_res_id=None)
    @api.model
    We need to inject a context to obtain only the records of favorite type.
  • search(self, domain, offset=0, limit=None, order=None)
    @api.model@api.returns('self')

New fields (5)
  • filter_ids One2many → ir.filters
    comodel_name='ir.filters' inverse_name='group_id' string='Filters'
  • model_id Selection
    required=True selection='_list_all_models' string='Model'
  • name Char
    required=True translate=True
  • sequence Integer
  • type Selection
    default='filter' required=True selection='_selection_type'
Public methods (1)
  • unlink(self)
REPOSITORY
REPOSITORYOCA/server-ux
GIT
GIThttps://github.com/OCA/server-ux.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-ux/tree/16.0/base_custom_filter
VERSION
VERSION 1.1.1
CATEGORY
CATEGORYUsability
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ForgeFlow, Ashish Hirpara
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ForgeFlow, Ashish Hirpara
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, Aungkokolin1997
WEBSITE
WEBSITEhttps://github.com/OCA/server-ux
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:53
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - web
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
ir_filters_view_form ir.filters.form - base_custom_filter ir.filters field Inherits base.ir_filters_view_form
ir_filters_view_tree ir.filters.tree - base_custom_filter ir.filters field Inherits base.ir_filters_view_tree
ir_filters_view_tree_custom ir.filters.tree.custom ir.filters tree New
search_ir_filters_group search.ir.filters.group ir.filters.group search New
view_ir_filters_group_form ir.filters.group.form ir.filters.group form New
view_ir_filters_group_tree ir.filters.group.tree ir.filters.group tree New
Models touched (3)

New fields (0)

No new fields.

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

New fields (7)
  • filter_domain Text
    help="Enter a filter domain expression if necessary.\n Example: [('default_code', 'ilike', self)]"
  • group_id Many2one → ir.filters.group
    comodel_name='ir.filters.group' string='Filter Group'
  • group_ids Many2many → res.groups
    string='User Groups' args: 'res.groups'
  • groupby_field Many2one → ir.model.fields
    comodel_name='ir.model.fields' ondelete='cascade' string='Group By Field'
  • search_field_id Many2one → ir.model.fields
    comodel_name='ir.model.fields' ondelete='cascade'
  • sequence Integer
  • type Selection
    default='favorite' required=True selection='_selection_type'
Public methods (2)
  • get_filters(self, model, action_id=None)
    @api.model
    We need to inject a context to obtain only the records of favorite type.
  • search(self, args, offset=0, limit=None, order=None, count=False)
    @api.model

New fields (5)
  • filter_ids One2many → ir.filters
    comodel_name='ir.filters' inverse_name='group_id' string='Filters'
  • model_id Selection
    required=True selection='_list_all_models' string='Model'
  • name Char
    required=True translate=True
  • sequence Integer
  • type Selection
    default='filter' required=True selection='_selection_type'
Public methods (1)
  • unlink(self)
REPOSITORY
REPOSITORYOCA/server-ux
GIT
GIThttps://github.com/OCA/server-ux.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-ux/tree/15.0/base_custom_filter
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYUsability
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ForgeFlow, Ashish Hirpara
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ForgeFlow, Ashish Hirpara
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, Aungkokolin1997
WEBSITE
WEBSITEhttps://github.com/OCA/server-ux
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:39
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - web
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
ir_filters_view_form ir.filters.form - base_custom_filter ir.filters field Inherits base.ir_filters_view_form
ir_filters_view_tree ir.filters.tree - base_custom_filter ir.filters field Inherits base.ir_filters_view_tree
ir_filters_view_tree_custom ir.filters.tree.custom ir.filters tree New
search_ir_filters_group search.ir.filters.group ir.filters.group search New
view_ir_filters_group_form ir.filters.group.form ir.filters.group form New
view_ir_filters_group_tree ir.filters.group.tree ir.filters.group tree New
Models touched (3)

New fields (0)

No new fields.

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

New fields (4)
  • group_id Many2one → ir.filters.group
    comodel_name='ir.filters.group' string='Filter Group'
  • groupby_field Many2one → ir.model.fields
    comodel_name='ir.model.fields' ondelete='cascade' string='Group By Field'
  • sequence Integer
  • type Selection
    default='favorite' required=True selection='_selection_type'
Public methods (2)
  • get_filters(self, model, action_id=None)
    @api.model
    We need to inject a context to obtain only the records of favorite type.
  • search(self, args, offset=0, limit=None, order=None, count=False)
    @api.model

New fields (5)
  • filter_ids One2many → ir.filters
    comodel_name='ir.filters' inverse_name='group_id' string='Filters'
  • model_id Selection
    required=True selection='_list_all_models' string='Model'
  • name Char
    required=True translate=True
  • sequence Integer
  • type Selection
    default='filter' required=True selection='_selection_type'
Public methods (1)
  • unlink(self)
REPOSITORY
REPOSITORYOCA/server-ux
GIT
GIThttps://github.com/OCA/server-ux.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-ux/tree/14.0/base_custom_filter
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYUsability
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ForgeFlow, Ashish Hirpara
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ForgeFlow, Ashish Hirpara
COMMITTERS
COMMITTERSOCA Transbot, Víctor Martínez, oca-travis, Weblate, OCA-git-bot, Ashish Hirpara
WEBSITE
WEBSITEhttps://github.com/OCA/server-ux
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:41:07
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - web
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
ir_filters_view_form ir.filters.form - base_custom_filter ir.filters field Inherits base.ir_filters_view_form
ir_filters_view_tree ir.filters.tree - base_custom_filter ir.filters field Inherits base.ir_filters_view_tree
ir_filters_view_tree_custom ir.filters.tree.custom ir.filters tree New
search_ir_filters_group search.ir.filters.group ir.filters.group search New
view_ir_filters_group_form ir.filters.group.form ir.filters.group form New
view_ir_filters_group_tree ir.filters.group.tree ir.filters.group tree New
Models touched (3)

New fields (0)

No new fields.

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

New fields (4)
  • group_id Many2one → ir.filters.group
    comodel_name='ir.filters.group' string='Filter Group'
  • groupby_field Many2one → ir.model.fields
    comodel_name='ir.model.fields' ondelete='cascade' string='Group By Field'
  • sequence Integer
  • type Selection
    default='favorite' required=True selection='_selection_type' string='Type'
Public methods (2)
  • get_filters(self, model, action_id=None)
    @api.model
    We need to inject a context to obtain only the records of favorite type.
  • search(self, args, offset=0, limit=None, order=None, count=False)
    @api.model

New fields (5)
  • filter_ids One2many → ir.filters
    comodel_name='ir.filters' inverse_name='group_id' string='Filters'
  • model_id Selection
    required=True selection='_list_all_models' string='Model'
  • name Char
    required=True translate=True
  • sequence Integer
  • type Selection
    default='filter' required=True selection='_selection_type' string='Type'
Public methods (1)
  • unlink(self)
REPOSITORY
REPOSITORYOCA/server-ux
GIT
GIThttps://github.com/OCA/server-ux.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-ux/tree/13.0/base_custom_filter
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYUsability
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ForgeFlow
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ForgeFlow
COMMITTERS
COMMITTERSJordiMForgeFlow, oca-travis, OCA-git-bot
WEBSITE
WEBSITEhttps://github.com/OCA/server-ux
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:17
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - web
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
ir_filters_view_form ir.filters.form - base_custom_filter ir.filters field Inherits base.ir_filters_view_form
ir_filters_view_tree ir.filters.tree - base_custom_filter ir.filters field Inherits base.ir_filters_view_tree
ir_filters_view_tree_custom ir.filters.tree.custom ir.filters tree New
view_ir_filters_group_form ir.filters.group.form ir.filters.group form New
view_ir_filters_group_tree ir.filters.group.tree ir.filters.group tree New
Models touched (3)

New fields (0)

No new fields.

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

New fields (4)
  • group_id Many2one → ir.filters.group
    comodel_name='ir.filters.group' string='Filter Group'
  • groupby_field Many2one → ir.model.fields
    comodel_name='ir.model.fields' ondelete='cascade' string='Group By Field'
  • sequence Integer
  • type Selection
    default='favorite' required=True selection='_selection_type' string='Type'
Public methods (0)

No public methods.

New fields (5)
  • filter_ids One2many → ir.filters
    comodel_name='ir.filters' inverse_name='group_id' string='Filters'
  • model_id Selection
    required=True selection='_list_all_models' string='Model'
  • name Char
    required=True translate=True
  • sequence Integer
  • type Selection
    default='filter' required=True selection='_selection_type' string='Type'
Public methods (0)

No public methods.