CMS Form

cms_form
REPOSITORY
REPOSITORYOCA/website-cms
GIT
GIThttps://github.com/OCA/website-cms.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/website-cms/tree/16.0/cms_form
VERSION
VERSION 1.3.0
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, Simone Orsi, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/website-cms
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:54:00
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/website-cms:
    - cms_info
    - cms_status_message
odoo/odoo:
    - base
    - web
    - portal
    - web_editor
    - bus
    - http_routing
    - mail
    - base_setup
    - web_tour
    - auth_signup
    - base_sparse_field
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (39)
XML IDNameModelTypeStatus
base_form CMS form template ir.ui.view qweb New
base_form_buttons CMS base form buttons ir.ui.view qweb New
base_form_field_error_block CMS form field error block ir.ui.view qweb New
base_form_field_help_block CMS form field help block ir.ui.view qweb New
base_form_fields CMS form fields ir.ui.view qweb New
field_widget_boolean CMS form boolean field widget ir.ui.view qweb New
field_widget_char CMS form text field widget ir.ui.view qweb New
field_widget_date CMS form date field widget ir.ui.view qweb New
field_widget_file CMS form image field widget ir.ui.view qweb New
field_widget_hidden CMS form hidden field ir.ui.view qweb New
field_widget_image CMS form image field widget ir.ui.view qweb New
field_widget_m2o CMS form m2o field widget ir.ui.view qweb New
field_widget_m2o_multi CMS form m2o multi select field widget ir.ui.view qweb Inherits field_widget_x2m
field_widget_numeric CMS form numeric field widget ir.ui.view qweb Inherits cms_form.field_widget_char
field_widget_radio_selection CMS form selection field radio widget ir.ui.view qweb New
field_widget_selection CMS form selection field widget ir.ui.view qweb Inherits cms_form.field_widget_m2o
field_widget_text CMS form text field widget ir.ui.view qweb New
field_widget_x2m CMS form x2m field widget ir.ui.view qweb New
fieldsets_as_tabs CMS form fieldsets as tabs ir.ui.view qweb New
form_field_label_after_wrapper CMS form field wrapper with label after ir.ui.view qweb New
form_horizontal_field_wrapper CMS form field wrapper horiz form ir.ui.view qweb New
form_vertical_field_wrapper CMS form field wrapper vertical form ir.ui.view qweb New
form_wrapper CMS form wrapper ir.ui.view qweb New
no_search_results CMS form no search results ir.ui.view qweb New
portal_form_wrapper CMS portal form wrapper ir.ui.view qweb New
portal_search_form_wrapper CMS search portal form wrapper ir.ui.view qweb New
portal_search_form_wrapper CMS search portal form wrapper ir.ui.view qweb New
portal_wizard_form_wrapper CMS wizard portal form wrapper ir.ui.view qweb New
portal_wizard_form_wrapper CMS wizard portal form wrapper ir.ui.view qweb New
search_form_buttons CMS search form buttons ir.ui.view qweb Inherits cms_form.base_form_buttons
search_form_wrapper CMS search form wrapper ir.ui.view qweb Inherits cms_form.form_wrapper
search_results CMS form search results ir.ui.view qweb New
search_results_pager CMS form pager ir.ui.view qweb Inherits portal.pager
single_field CMS form single field ir.ui.view qweb New
single_fieldset CMS form single fieldset ir.ui.view qweb New
wizard_form_buttons CMS wizard form buttons ir.ui.view qweb Inherits cms_form.base_form_buttons
wizard_form_confirm_modal CMS wizard form confirm modal ir.ui.view qweb New
wizard_form_wrapper CMS wizard form wrapper ir.ui.view qweb Inherits cms_form.form_wrapper
wizard_progress_bar CMS Wizard progress bar ir.ui.view qweb New
Models touched (25)

New fields (3)
  • form_redirect Boolean
    default=False form_tech=True
  • form_success Boolean
    default=False form_tech=True
  • form_title Char
    compute='_compute_form_title' form_tech=True
Public methods (13)
  • add_status_message(self, msg, **kw)
  • form_after_create_or_update(self, values, extra_values)
    Post create/update hook.
  • form_before_create_or_update(self, values, extra_values)
    Pre create/update hook.
  • form_cancel_url(self, main_object=None)
    URL to redirect to after click on "cancel" button.
  • form_check_empty_value(self, fname, field, value, **req_values)
    Return True if passed field value is really empty.
  • form_create_or_update(self)
    Prepare values and create or update main_object.
  • form_get_validator(self, fname, field)
    Retrieve field validator.
  • form_msg_error_missing(self)
    @property
  • form_msg_success_created(self)
    @property
  • form_msg_success_updated(self)
    @property
  • form_next_url(self, main_object=None)
    URL to redirect to after successful form submission.
  • form_process_POST(self, render_values)
    Process POST requests.
  • form_validate(self, request_values=None)
    Validate submitted values.

New fields (26)
  • form_action Char
    default='' form_tech=True
  • form_ajax Boolean
    default=False form_tech=True
  • form_ajax_onchange Boolean
    default=False form_tech=True
  • form_buttons_template Char
    default='cms_form.base_form_buttons' form_tech=True
  • form_confirm_submit Boolean
    default='' form_tech=True
  • form_content_selector Char
    default='.form_content' form_tech=True
  • form_description Char
    default='' form_tech=True
  • form_display_mode Selection
    default='horizontal' form_tech=True selection=[('horizontal', 'Horizontal'), ('vertical', 'Vertical')]
  • form_extra_css_klass Char
    default='' form_tech=True
  • form_extract_value_mode Selection
    default='write' form_tech=True selection=[('write', 'Write'), ('read', 'Read')]
  • form_fields_template Char
    default='cms_form.base_form_fields' form_tech=True
  • form_fields_wrapper_template Char
    compute='_compute_form_fields_wrapper_template' form_tech=True readonly=False
  • form_fieldsets_display Selection
    default='vertical' form_tech=True selection=[('tabs', 'Tabs'), ('vertical', 'Vertical')]
  • form_fname_pattern Char
    default='' form_tech=True
  • form_method Char
    default='POST' form_tech=True
  • form_mode Char
    compute='_compute_form_mode' default='' form_tech=True readonly=False
  • form_model_name Char
    default='' form_tech=True
  • form_render_values Binary
    compute='_compute_form_render_values' form_tech=True store=False
  • form_template Char
    default='cms_form.base_form' form_tech=True
  • form_title Char
    default='' form_tech=True
  • form_wrapper_extra_css_klass Char
    default='' form_tech=True
  • form_wrapper_template Char
    default='' form_tech=True
  • id Id
    automatic=True
  • main_object Binary
    default=None form_tech=True store=False
  • o_request Binary
    form_tech=True store=False
  • request Binary
    form_tech=True store=False
Public methods (26)
  • fields_get(self, allfields=None, attributes=None)
    @api.model
  • form_check_permission(self, raise_exception=True)
    Check permission on current model and main object if any.
  • form_css_klass(self)
    @property
    Return `<form />` element css klasses. By default you can provide extra klasses via `form_extra_css_klass`.
  • form_extract_values(self, **request_values)
    Extract values from request form.
  • form_fields_get(self, hidden=None)
    Retrieve form fields. :param hidden: whether to include or not hidden inputs. Options: * None, default: include all fields, hidden or not * True: include only hidden fields * False: include all fields but those hidden.
  • form_fieldsets_get(self)
  • form_fieldsets_wrapper_klass(self)
    @property
  • form_file_fields(self)
    @property
    File fields.
  • form_get_current_widget(self, fname)
  • form_get_extractor(self, fname, field, value=None, **req_values)
    Retrieve form value extractor. :param fname: field name :param field: field description as `fields_get` :param value: current field value if any :param req_values: custom request valuess
  • form_get_field_wrapper_template(self, fname, field)
  • form_get_loader(self, fname, field, main_object=None, value=None, **req_values)
    Retrieve form value loader. :param fname: field name :param field: field description as `fields_get` :param main_object: current main object if any :param value: current field value if any :param req_values: custom request valuess
  • form_get_request_values(self)
    Retrieve fields values from current request.
  • form_get_widget(self, fname, field, **kw)
    Retrieve and initialize widget.
  • form_init(self, request, main_object=None, **kw)
    Initalize a form instance. @param request: an odoo-wrapped werkeug request @param main_object: current model instance if any @param kw: pass any override for `_form_` attributes ie: `fields_attributes` -> `form_fields_attributes`
  • form_json_info(self)
  • form_load_defaults(self, main_object=None, request_values=None)
    Load default values. Values lookup order: 1. `main_object` fields' values (if an existing main_object is passed) 2. request parameters (only parameters matching form fields names)
  • form_make_field_wrapper_klass(self, fname, field, **kw)
    Return specific CSS klass for the field wrapper.
  • form_model(self)
    @property
  • form_msg_confirm_submit(self)
    @property
  • form_process(self, **kw)
    Process current request. :param kw: inject custom / extra rendering values. Lookup correct request handler by request method and call it with rendering values. The handler can perform any action (like creating objects) and then return final rendering form values and store them into `form_render_values`.
  • form_process_GET(self, render_values)
    Process GET requests.
  • form_process_POST(self, render_values)
    Process POST requests.
  • form_render(self, **kw)
    Renders form template declared in `form_template`. To render the form simply do: <t t-out="form.form_render()" />
  • form_update_fields_attributes(self, _fields)
    Manipulate fields attributes.
  • form_wrapper_css_klass(self)
    @property
    Return form wrapper css klass. By default the form markup is wrapped into a `cms_form_wrapper` element. You can use this set of klasses to customize form styles. Included by default: * `cms_form_wrapper` marker * form model name normalized (res.partner -> res_partner) * `form_wrapper_extra_css_klass` extra klasses from form attribute * `mode_` + form mode (ie: 'mode_write')

New fields (15)
  • form_buttons_template Char
    default='cms_form.search_form_buttons' form_tech=True
  • form_extract_value_mode Char
    default='read' form_tech=True
  • form_method Char
    default='GET' form_tech=True
  • form_mode Char
    default='search' form_tech=True
  • form_no_result_msg Char
    compute='_compute_form_no_result_msg' form_tech=True
  • form_no_search_results_template Char
    default='cms_form.no_search_results' form_tech=True
  • form_results_orderby Char
    default='' form_tech=True
  • form_results_per_page Integer
    default=10 form_tech=True
  • form_search_domain_rules Binary
    default={} form_tech=True store=False
  • form_search_results Binary
    default={} form_tech=True store=False
  • form_search_results_template Char
    default='cms_form.search_results' form_tech=True
  • form_show_results_no_submit Boolean
    default=True form_tech=True
  • form_show_search_form Boolean
    default=True form_tech=True
  • form_show_search_form Boolean
    default=True form_tech=True
  • form_title Char
    compute='_compute_form_title' form_tech=True
Public methods (6)
  • form_check_permission(self)
    Just searching, nothing to check here.
  • form_process_GET(self, render_values)
  • form_search(self, render_values)
    Produce search results.
  • form_search_domain(self, search_values)
    Build search domain.
  • form_update_fields_attributes(self, _fields)
    No field should be mandatory.
  • pager(self, **kw)

New fields (1)
  • w_template Char
    default='cms_form.field_widget_file'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • form_to_binary(self, value, **req_values)
  • w_check_empty_value(self, value, **req_values)
  • w_extract(self, **req_values)

New fields (4)
  • w_field_value Boolean
  • w_template Char
    default='cms_form.field_widget_boolean'
  • w_wrapper_css_klass Char
    default='form-check'
  • w_wrapper_template Char
    default='cms_form.form_field_label_after_wrapper'
Public methods (2)
  • w_extract(self, **req_values)
  • widget_init(self, form, fname, field, **kw)

New fields (0)

No new fields.

Public methods (1)
  • html_value(self)
    @property

New fields (3)
  • w_input_type Char
    default='text'
  • w_template Char
    default='cms_form.field_widget_char'
  • w_valid_pattern Char
    help='Used to validate inputs with `pattern` attr'
Public methods (0)

No public methods.

New fields (5)
  • w_date_format Char
    default=''
  • w_default_today Boolean
    default=True
  • w_field_value Date
    default=None
  • w_placeholder Char
    default=''
  • w_template Char
    default='cms_form.field_widget_date'
Public methods (3)
  • form_to_date(self, value, **req_values)
  • w_extract(self, **req_values)
  • widget_init(self, form, fname, field, **kw)

New fields (0)

No new fields.

Public methods (1)
  • w_extract(self, **req_values)

New fields (1)
  • w_template Char
    default='cms_form.field_widget_hidden'
Public methods (1)
  • html_fname(self)
    @property
    Field name for final HTML markup.

New fields (1)
  • w_template Char
    default='cms_form.field_widget_image'
Public methods (1)
  • w_load(self, **req_values)

New fields (0)

No new fields.

Public methods (1)
  • w_extract(self, **req_values)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • w_field_value Integer
  • w_template Char
    default='cms_form.field_widget_m2o'
Public methods (5)
  • form_to_m2o(self, value, **req_values)
  • m2o_to_form(self, value, **req_values)
  • w_extract(self, **req_values)
  • w_load(self, **req_values)
  • w_option_items(self)
    @property

New fields (2)
  • w_display_field Char
    default='display_name'
  • w_template Char
    default='cms_form.field_widget_m2o_multi'
Public methods (2)
  • form_to_m2o(self, value, **req_values)
  • m2o_to_form(self, value, **req_values)

New fields (12)
  • id Id
    automatic=True
  • w_css_klass Char
    default=''
  • w_field Binary
    store=False
  • w_field_value Char
  • w_fname Char
    default=''
  • w_form Binary
    store=False
  • w_readonly Boolean
  • w_record Binary
    store=False
  • w_subfields Binary
    default={} store=False
  • w_template Char
    default=''
  • w_wrapper_css_klass Char
    default=''
  • w_wrapper_template Char
    default=''
Public methods (13)
  • html_fname(self)
    @property
  • html_readonly(self)
    @property
  • html_value(self)
    @property
  • render(self)
  • w_check_empty_value(self, value, **req_values)
  • w_data_json(self)
  • w_extract(self, **req_values)
    Extract value from form submit.
  • w_form_model(self)
    @property
  • w_form_values(self)
    @property
  • w_ids_from_input(value)
    @staticmethod
    Convert list of ids from form input.
  • w_load(self, **req_values)
    Load value for current field in current request.
  • w_subfields_by_value(self, value='_all')
  • widget_init(self, form, fname, field, data=None, subfields=None, **kw)

New fields (4)
  • w_input_max Char
    default=''
  • w_input_min Char
    default=''
  • w_input_type Char
    default='number'
  • w_template Char
    default='cms_form.field_widget_numeric'
Public methods (2)
  • html_input_max(self)
    @property
  • html_input_min(self)
    @property

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • w_template Char
    default='cms_form.field_widget_radio_selection'
Public methods (1)
  • widget_init(self, form, fname, field, **kw)

New fields (2)
  • w_comodel_name Char
    default=''
  • w_display_field Char
    default='display_name'
Public methods (2)
  • w_comodel(self)
    @property
  • widget_init(self, form, fname, field, **kw)

New fields (1)
  • w_template Char
    default='cms_form.field_widget_selection'
Public methods (4)
  • cast_field_value(self, value)
  • is_option_selected(self, opt_item)
  • w_extract(self, **req_values)
  • w_option_items(self)
    @property

New fields (2)
  • w_maxlength Integer
  • w_template Char
    default='cms_form.field_widget_text'
Public methods (2)
  • html_value(self)
    @property
  • widget_init(self, form, fname, field, **kw)

New fields (1)
  • w_template Char
    default='cms_form.field_widget_x2m'
Public methods (4)
  • form_to_x2many(self, value, **req_values)
  • w_extract(self, **req_values)
  • w_load(self, **req_values)
  • x2many_to_form(self, value, **req_values)

New fields (4)
  • form_buttons_template Char
    default='cms_form.wizard_form_buttons' form_tech=True
  • form_reset Boolean
    default=False form_tech=True
  • form_show_progress_bar Boolean
    default=True form_tech=True
  • form_step_store_all_fields Boolean
    default=True form_tech=True
Public methods (18)
  • form_after_create_or_update(self, values, extra_values)
  • form_init(self, request, main_object=None, page=1, wizard=None, **kw)
  • form_load_defaults(self, main_object=None, request_values=None)
  • form_next_url(self, main_object=None)
  • form_wrapper_css_klass(self)
    @property
  • is_final_step_process(self)
  • wiz_configure_steps(self)
    Configure wizard steps. Each step can use a different form, for instance: return { 1: { 'form_model': 'form.a', 'title': 'Step 1', 'description': 'Preliminary info', }, 2: { 'form_model': 'form.b', 'title': 'Step 2', }, 3: { 'form_model': 'form.c', 'title': 'Step 3', 'description': 'Foo', }, }
  • wiz_current_step(self)
  • wiz_get_step_info(self, step)
  • wiz_init(self, page=1, **kw)
  • wiz_load_step(self, step=None)
  • wiz_load_steps(self, steps=None)
    Load all steps data merged together.
  • wiz_next_step(self)
  • wiz_prev_step(self)
  • wiz_save_step(self, values, step=None)
  • wiz_steps(self)
    @property
  • wiz_storage_get(self)
  • wiz_storage_set(self, storage)
REPOSITORY
REPOSITORYOCA/website-cms
GIT
GIThttps://github.com/OCA/website-cms.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/website-cms/tree/14.0/cms_form
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSSimone Orsi
WEBSITE
WEBSITEhttps://github.com/OCA/website-cms
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:41:13
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/website-cms:
    - cms_info
    - cms_status_message
odoo/odoo:
    - website
    - digest
    - mail
    - base
    - base_setup
    - web
    - bus
    - web_tour
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - resource
    - social_media
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (30)
XML IDNameModelTypeStatus
assets_frontend CMS Form frontend assets ir.ui.view qweb Inherits website.assets_frontend
base_form CMS form template ir.ui.view qweb New
base_form_buttons CMS base form buttons ir.ui.view qweb New
base_form_field_error_block CMS form field error block ir.ui.view qweb New
base_form_field_help_block CMS form field help block ir.ui.view qweb New
base_form_fields CMS form fields ir.ui.view qweb New
field_widget_boolean CMS form boolean field widget ir.ui.view qweb New
field_widget_char CMS form text field widget ir.ui.view qweb New
field_widget_date CMS form date field widget ir.ui.view qweb New
field_widget_hidden CMS form hidden field ir.ui.view qweb New
field_widget_image CMS form image field widget ir.ui.view qweb New
field_widget_m2o CMS form m2o field widget ir.ui.view qweb New
field_widget_m2o_multi CMS form m2o multi select field widget ir.ui.view qweb Inherits field_widget_x2m
field_widget_radio_selection CMS form selection field radio widget ir.ui.view qweb New
field_widget_selection CMS form selection field widget ir.ui.view qweb Inherits cms_form.field_widget_m2o
field_widget_text CMS form text field widget ir.ui.view qweb New
field_widget_x2m CMS form x2m field widget ir.ui.view qweb New
fieldsets_as_tabs CMS form fieldsets as tabs ir.ui.view qweb New
form_horizontal_field_wrapper CMS form field wrapper horiz form ir.ui.view qweb New
form_vertical_field_wrapper CMS form field wrapper vertical form ir.ui.view qweb New
form_wrapper CMS form wrapper ir.ui.view qweb New
search_form_buttons CMS search form buttons ir.ui.view qweb Inherits cms_form.base_form_buttons
search_form_wrapper CMS search form wrapper ir.ui.view qweb Inherits cms_form.form_wrapper
search_results CMS form search results ir.ui.view qweb New
search_results_pager CMS form pager ir.ui.view qweb Inherits website.pager
single_field CMS form single field ir.ui.view qweb New
single_fieldset CMS form single fieldset ir.ui.view qweb New
wizard_form_buttons CMS wizard form buttons ir.ui.view qweb Inherits cms_form.base_form_buttons
wizard_form_wrapper CMS wizard form wrapper ir.ui.view qweb Inherits cms_form.form_wrapper
wizard_progress_bar CMS Wizard progress bar ir.ui.view qweb New
Models touched (21)

New fields (0)

No new fields.

Public methods (17)
  • form_after_create_or_update(self, values, extra_values)
    Post create/update hook.
  • form_before_create_or_update(self, values, extra_values)
    Pre create/update hook.
  • form_cancel_url(self, main_object=None)
    URL to redirect to after click on "cancel" button.
  • form_check_empty_value(self, fname, field, value, **req_values)
    Return True if passed field value is really empty.
  • form_create_or_update(self)
    Prepare values and create or update main_object.
  • form_get_validator(self, fname, field)
    Retrieve field validator.
  • form_msg_error_missing(self)
    @property
  • form_msg_success_created(self)
    @property
  • form_msg_success_updated(self)
    @property
  • form_next_url(self, main_object=None)
    URL to redirect to after successful form submission.
  • form_process_POST(self, render_values)
    Process POST requests.
  • form_redirect(self)
    @property
  • form_redirect(self, value)
    @form_redirect.setter
  • form_success(self)
    @property
  • form_success(self, value)
    @form_success.setter
  • form_title(self)
    @property
  • form_validate(self, request_values=None)
    Validate submitted values.

New fields (0)

No new fields.

Public methods (31)
  • form_check_permission(self, raise_exception=True)
    Check permission on current model and main object if any.
  • form_css_klass(self)
    @property
    Return `<form />` element css klasses. By default you can provide extra klasses via `_form_extra_css_klass`.
  • form_description(self)
    @property
  • form_extract_values(self, **request_values)
    Extract values from request form.
  • form_fields(self, hidden=None)
    Retrieve form fields. :param hidden: whether to include or not hidden inputs. Options: * None, default: include all fields, hidden or not * True: include only hidden fields * False: include all fields but those hidden.
  • form_fieldsets(self)
  • form_fieldsets_wrapper_klass(self)
    @property
  • form_file_fields(self)
    @property
    File fields.
  • form_get_extractor(self, fname, field, value=None, **req_values)
    Retrieve form value extractor. :param fname: field name :param field: field description as `fields_get` :param value: current field value if any :param req_values: custom request valuess
  • form_get_loader(self, fname, field, main_object=None, value=None, **req_values)
    Retrieve form value loader. :param fname: field name :param field: field description as `fields_get` :param main_object: current main object if any :param value: current field value if any :param req_values: custom request valuess
  • form_get_request_values(self)
    Retrieve fields values from current request.
  • form_get_widget(self, fname, field, **kw)
    Retrieve and initialize widget.
  • form_get_widget_model(self, fname, field)
    Retrieve widget model name.
  • form_init(self, request, main_object=None, **kw)
    Initalize a form instance. @param request: an odoo-wrapped werkeug request @param main_object: current model instance if any @param kw: pass any override for `_form_` attributes ie: `fields_attributes` -> `_form_fields_attributes`
  • form_json_info(self)
  • form_load_defaults(self, main_object=None, request_values=None)
    Load default values. Values lookup order: 1. `main_object` fields' values (if an existing main_object is passed) 2. request parameters (only parameters matching form fields names)
  • form_make_field_wrapper_klass(self, fname, field, **kw)
    Return specific CSS klass for the field wrapper.
  • form_mode(self)
    @property
  • form_model(self)
    @property
  • form_process(self, **kw)
    Process current request. :param kw: inject custom / extra rendering values. Lookup correct request handler by request method and call it with rendering values. The handler can perform any action (like creating objects) and then return final rendering form values and store them into `form_render_values`.
  • form_process_GET(self, render_values)
    Process GET requests.
  • form_process_POST(self, render_values)
    Process POST requests.
  • form_render(self, **kw)
    Renders form template declared in `form_template`. To render the form simply do: <t t-raw="form.form_render()" />
  • form_render_values(self)
    @property
    Values used to render the form.
  • form_render_values(self, value)
    @form_render_values.setter
  • form_title(self)
    @property
  • form_update_fields_attributes(self, _fields)
    Manipulate fields attributes.
  • form_widgets(self)
    @property
    Return a mapping between field name and widget model.
  • form_wrapper_css_klass(self)
    @property
    Return form wrapper css klass. By default the form markup is wrapped into a `cms_form_wrapper` element. You can use this set of klasses to customize form styles. Included by default: * `cms_form_wrapper` marker * form model name normalized (res.partner -> res_partner) * `_form_wrapper_extra_css_klass` extra klasses from form attribute * `mode_` + form mode (ie: 'mode_write')
  • main_object(self)
    @property
    Current main object.
  • main_object(self, value)
    @main_object.setter
    Current main object setter.

New fields (0)

No new fields.

Public methods (10)
  • form_check_permission(self)
    Just searching, nothing to check here.
  • form_get_widget_model(self, fname, field)
    Search via related field needs a simple char widget.
  • form_process_GET(self, render_values)
  • form_search(self, render_values)
    Produce search results.
  • form_search_domain(self, search_values)
    Build search domain.
  • form_search_results(self)
    @property
    Return search results.
  • form_search_results(self, value)
    @form_search_results.setter
  • form_title(self)
    @property
  • form_update_fields_attributes(self, _fields)
    No field should be mandatory.
  • pager(self, **kw)

New fields (0)

No new fields.

Public methods (5)
  • binary_to_form(self, value, **req_values)
  • form_to_binary(self, value, **req_values)
  • w_check_empty_value(self, value, **req_values)
  • w_extract(self, **req_values)
  • w_load(self, **req_values)

New fields (0)

No new fields.

Public methods (2)
  • w_extract(self, **req_values)
  • widget_init(self, form, fname, field, **kw)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • form_to_date(self, value, **req_values)
  • w_extract(self, **req_values)
  • widget_init(self, form, fname, field, **kw)

New fields (0)

No new fields.

Public methods (1)
  • w_extract(self, **req_values)

New fields (0)

No new fields.

Public methods (1)
  • w_html_fname(self)
    @property
    Field name for final HTML markup.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • w_extract(self, **req_values)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (6)
  • form_to_m2o(self, value, **req_values)
  • m2o_to_form(self, value, **req_values)
  • w_extract(self, **req_values)
  • w_load(self, **req_values)
  • w_option_items(self)
    @property
  • widget_init(self, form, fname, field, **kw)

New fields (0)

No new fields.

Public methods (2)
  • form_to_m2o(self, value, **req_values)
  • m2o_to_form(self, value, **req_values)

New fields (0)

No new fields.

Public methods (10)
  • render(self)
  • w_check_empty_value(self, value, **req_values)
  • w_css_klass(self)
    @property
  • w_data_json(self)
  • w_extract(self, **req_values)
    Extract value from form submit.
  • w_ids_from_input(value)
    @staticmethod
    Convert list of ids from form input.
  • w_load(self, **req_values)
    Load value for current field in current request.
  • w_subfields_by_value(self, value='_all')
  • w_template(self)
    @property
  • widget_init(self, form, fname, field, data=None, subfields=None, template='', css_klass='', **kw)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • widget_init(self, form, fname, field, **kw)

New fields (0)

No new fields.

Public methods (2)
  • w_extract(self, **req_values)
  • w_option_items(self)
    @property

New fields (0)

No new fields.

Public methods (1)
  • widget_init(self, form, fname, field, **kw)

New fields (0)

No new fields.

Public methods (5)
  • form_to_x2many(self, value, **req_values)
  • w_extract(self, **req_values)
  • w_load(self, **req_values)
  • widget_init(self, form, fname, field, **kw)
  • x2many_to_form(self, value, **req_values)

New fields (0)

No new fields.

Public methods (14)
  • form_after_create_or_update(self, values, extra_values)
  • form_init(self, request, main_object=None, page=1, wizard=None, **kw)
  • form_next_url(self, main_object=None)
  • form_wrapper_css_klass(self)
    @property
  • wiz_configure_steps(self)
    Configure wizard steps. Each step can use a different form, for instance: return { 1: { 'form_model': 'form.a', 'title': 'Step 1', 'description': 'Preliminary info', }, 2: { 'form_model': 'form.b', 'title': 'Step 2', }, 3: { 'form_model': 'form.c', 'title': 'Step 3', 'description': 'Foo', }, }
  • wiz_current_step(self)
  • wiz_get_step_info(self, step)
  • wiz_init(self, page=1, **kw)
  • wiz_load_step(self, step=None)
  • wiz_next_step(self)
  • wiz_prev_step(self)
  • wiz_save_step(self, values, step=None)
  • wiz_steps(self)
    @property
  • wiz_storage_get(self)
REPOSITORY
REPOSITORYOCA/website-cms
GIT
GIThttps://github.com/OCA/website-cms.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/website-cms/tree/13.0/cms_form
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSOCA Transbot, oca-travis, Weblate, OCA-git-bot, Simone Orsi
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:21
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/website-cms:
    - cms_info
    - cms_status_message
odoo/odoo:
    - website
    - web
    - base
    - web_editor
    - http_routing
    - portal
    - mail
    - base_setup
    - bus
    - web_tour
    - auth_signup
    - social_media
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (30)
XML IDNameModelTypeStatus
assets_frontend CMS Form frontend assets ir.ui.view qweb Inherits website.assets_frontend
base_form CMS form template ir.ui.view qweb New
base_form_buttons CMS base form buttons ir.ui.view qweb New
base_form_field_error_block CMS form field error block ir.ui.view qweb New
base_form_field_help_block CMS form field help block ir.ui.view qweb New
base_form_fields CMS form fields ir.ui.view qweb New
field_widget_boolean CMS form boolean field widget ir.ui.view qweb New
field_widget_char CMS form text field widget ir.ui.view qweb New
field_widget_date CMS form date field widget ir.ui.view qweb New
field_widget_hidden CMS form hidden field ir.ui.view qweb New
field_widget_image CMS form image field widget ir.ui.view qweb New
field_widget_m2o CMS form m2o field widget ir.ui.view qweb New
field_widget_m2o_multi CMS form m2o multi select field widget ir.ui.view qweb Inherits field_widget_x2m
field_widget_radio_selection CMS form selection field radio widget ir.ui.view qweb New
field_widget_selection CMS form selection field widget ir.ui.view qweb Inherits cms_form.field_widget_m2o
field_widget_text CMS form text field widget ir.ui.view qweb New
field_widget_x2m CMS form x2m field widget ir.ui.view qweb New
fieldsets_as_tabs CMS form fieldsets as tabs ir.ui.view qweb New
form_horizontal_field_wrapper CMS form field wrapper horiz form ir.ui.view qweb New
form_vertical_field_wrapper CMS form field wrapper vertical form ir.ui.view qweb New
form_wrapper CMS form wrapper ir.ui.view qweb New
search_form_buttons CMS search form buttons ir.ui.view qweb Inherits cms_form.base_form_buttons
search_form_wrapper CMS search form wrapper ir.ui.view qweb Inherits cms_form.form_wrapper
search_results CMS form search results ir.ui.view qweb New
search_results_pager CMS form pager ir.ui.view qweb Inherits website.pager
single_field CMS form single field ir.ui.view qweb New
single_fieldset CMS form single fieldset ir.ui.view qweb New
wizard_form_buttons CMS wizard form buttons ir.ui.view qweb Inherits cms_form.base_form_buttons
wizard_form_wrapper CMS wizard form wrapper ir.ui.view qweb Inherits cms_form.form_wrapper
wizard_progress_bar CMS Wizard progress bar ir.ui.view qweb New
Models touched (21)

New fields (0)

No new fields.

Public methods (17)
  • form_after_create_or_update(self, values, extra_values)
    Post create/update hook.
  • form_before_create_or_update(self, values, extra_values)
    Pre create/update hook.
  • form_cancel_url(self, main_object=None)
    URL to redirect to after click on "cancel" button.
  • form_check_empty_value(self, fname, field, value, **req_values)
    Return True if passed field value is really empty.
  • form_create_or_update(self)
    Prepare values and create or update main_object.
  • form_get_validator(self, fname, field)
    Retrieve field validator.
  • form_msg_error_missing(self)
    @property
  • form_msg_success_created(self)
    @property
  • form_msg_success_updated(self)
    @property
  • form_next_url(self, main_object=None)
    URL to redirect to after successful form submission.
  • form_process_POST(self, render_values)
    Process POST requests.
  • form_redirect(self)
    @property
  • form_redirect(self, value)
    @form_redirect.setter
  • form_success(self)
    @property
  • form_success(self, value)
    @form_success.setter
  • form_title(self)
    @property
  • form_validate(self, request_values=None)
    Validate submitted values.

New fields (0)

No new fields.

Public methods (31)
  • form_check_permission(self, raise_exception=True)
    Check permission on current model and main object if any.
  • form_css_klass(self)
    @property
    Return `<form />` element css klasses. By default you can provide extra klasses via `_form_extra_css_klass`.
  • form_description(self)
    @property
  • form_extract_values(self, **request_values)
    Extract values from request form.
  • form_fields(self, hidden=None)
    Retrieve form fields. :param hidden: whether to include or not hidden inputs. Options: * None, default: include all fields, hidden or not * True: include only hidden fields * False: include all fields but those hidden.
  • form_fieldsets(self)
  • form_fieldsets_wrapper_klass(self)
    @property
  • form_file_fields(self)
    @property
    File fields.
  • form_get_extractor(self, fname, field, value=None, **req_values)
    Retrieve form value extractor. :param fname: field name :param field: field description as `fields_get` :param value: current field value if any :param req_values: custom request valuess
  • form_get_loader(self, fname, field, main_object=None, value=None, **req_values)
    Retrieve form value loader. :param fname: field name :param field: field description as `fields_get` :param main_object: current main object if any :param value: current field value if any :param req_values: custom request valuess
  • form_get_request_values(self)
    Retrieve fields values from current request.
  • form_get_widget(self, fname, field, **kw)
    Retrieve and initialize widget.
  • form_get_widget_model(self, fname, field)
    Retrieve widget model name.
  • form_init(self, request, main_object=None, **kw)
    Initalize a form instance. @param request: an odoo-wrapped werkeug request @param main_object: current model instance if any @param kw: pass any override for `_form_` attributes ie: `fields_attributes` -> `_form_fields_attributes`
  • form_json_info(self)
  • form_load_defaults(self, main_object=None, request_values=None)
    Load default values. Values lookup order: 1. `main_object` fields' values (if an existing main_object is passed) 2. request parameters (only parameters matching form fields names)
  • form_make_field_wrapper_klass(self, fname, field, **kw)
    Return specific CSS klass for the field wrapper.
  • form_mode(self)
    @property
  • form_model(self)
    @property
  • form_process(self, **kw)
    Process current request. :param kw: inject custom / extra rendering values. Lookup correct request handler by request method and call it with rendering values. The handler can perform any action (like creating objects) and then return final rendering form values and store them into `form_render_values`.
  • form_process_GET(self, render_values)
    Process GET requests.
  • form_process_POST(self, render_values)
    Process POST requests.
  • form_render(self, **kw)
    Renders form template declared in `form_template`. To render the form simply do: <t t-raw="form.form_render()" />
  • form_render_values(self)
    @property
    Values used to render the form.
  • form_render_values(self, value)
    @form_render_values.setter
  • form_title(self)
    @property
  • form_update_fields_attributes(self, _fields)
    Manipulate fields attributes.
  • form_widgets(self)
    @property
    Return a mapping between field name and widget model.
  • form_wrapper_css_klass(self)
    @property
    Return form wrapper css klass. By default the form markup is wrapped into a `cms_form_wrapper` element. You can use this set of klasses to customize form styles. Included by default: * `cms_form_wrapper` marker * form model name normalized (res.partner -> res_partner) * `_form_wrapper_extra_css_klass` extra klasses from form attribute * `mode_` + form mode (ie: 'mode_write')
  • main_object(self)
    @property
    Current main object.
  • main_object(self, value)
    @main_object.setter
    Current main object setter.

New fields (0)

No new fields.

Public methods (10)
  • form_check_permission(self)
    Just searching, nothing to check here.
  • form_get_widget_model(self, fname, field)
    Search via related field needs a simple char widget.
  • form_process_GET(self, render_values)
  • form_search(self, render_values)
    Produce search results.
  • form_search_domain(self, search_values)
    Build search domain.
  • form_search_results(self)
    @property
    Return search results.
  • form_search_results(self, value)
    @form_search_results.setter
  • form_title(self)
    @property
  • form_update_fields_attributes(self, _fields)
    No field should be mandatory.
  • pager(self, **kw)

New fields (0)

No new fields.

Public methods (5)
  • binary_to_form(self, value, **req_values)
  • form_to_binary(self, value, **req_values)
  • w_check_empty_value(self, value, **req_values)
  • w_extract(self, **req_values)
  • w_load(self, **req_values)

New fields (0)

No new fields.

Public methods (2)
  • w_extract(self, **req_values)
  • widget_init(self, form, fname, field, **kw)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • form_to_date(self, value, **req_values)
  • w_extract(self, **req_values)
  • widget_init(self, form, fname, field, **kw)

New fields (0)

No new fields.

Public methods (1)
  • w_extract(self, **req_values)

New fields (0)

No new fields.

Public methods (1)
  • w_html_fname(self)
    @property
    Field name for final HTML markup.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • w_extract(self, **req_values)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (6)
  • form_to_m2o(self, value, **req_values)
  • m2o_to_form(self, value, **req_values)
  • w_extract(self, **req_values)
  • w_load(self, **req_values)
  • w_option_items(self)
    @property
  • widget_init(self, form, fname, field, **kw)

New fields (0)

No new fields.

Public methods (2)
  • form_to_m2o(self, value, **req_values)
  • m2o_to_form(self, value, **req_values)

New fields (0)

No new fields.

Public methods (10)
  • render(self)
  • w_check_empty_value(self, value, **req_values)
  • w_css_klass(self)
    @property
  • w_data_json(self)
  • w_extract(self, **req_values)
    Extract value from form submit.
  • w_ids_from_input(value)
    @staticmethod
    Convert list of ids from form input.
  • w_load(self, **req_values)
    Load value for current field in current request.
  • w_subfields_by_value(self, value='_all')
  • w_template(self)
    @property
  • widget_init(self, form, fname, field, data=None, subfields=None, template='', css_klass='', **kw)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • widget_init(self, form, fname, field, **kw)

New fields (0)

No new fields.

Public methods (2)
  • w_extract(self, **req_values)
  • w_option_items(self)
    @property

New fields (0)

No new fields.

Public methods (1)
  • widget_init(self, form, fname, field, **kw)

New fields (0)

No new fields.

Public methods (5)
  • form_to_x2many(self, value, **req_values)
  • w_extract(self, **req_values)
  • w_load(self, **req_values)
  • widget_init(self, form, fname, field, **kw)
  • x2many_to_form(self, value, **req_values)

New fields (0)

No new fields.

Public methods (14)
  • form_after_create_or_update(self, values, extra_values)
  • form_init(self, request, main_object=None, page=1, wizard=None, **kw)
  • form_next_url(self, main_object=None)
  • form_wrapper_css_klass(self)
    @property
  • wiz_configure_steps(self)
    Configure wizard steps. Each step can use a different form, for instance: return { 1: { 'form_model': 'form.a', 'title': 'Step 1', 'description': 'Preliminary info', }, 2: { 'form_model': 'form.b', 'title': 'Step 2', }, 3: { 'form_model': 'form.c', 'title': 'Step 3', 'description': 'Foo', }, }
  • wiz_current_step(self)
  • wiz_get_step_info(self, step)
  • wiz_init(self, page=1, **kw)
  • wiz_load_step(self, step=None)
  • wiz_next_step(self)
  • wiz_prev_step(self)
  • wiz_save_step(self, values, step=None)
  • wiz_steps(self)
    @property
  • wiz_storage_get(self)
REPOSITORY
REPOSITORYOCA/website-cms
GIT
GIThttps://github.com/OCA/website-cms.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/website-cms/tree/11.0/cms_form
VERSION
VERSION 1.7.2
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSRonald Portier, GitHub, Akim Juillerat, OCA Transbot, oca-travis, OCA-git-bot, Simone Orsi
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:24:02
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/website-cms:
    - cms_info
    - cms_delete_content
    - cms_status_message
odoo/odoo:
    - website
    - web
    - base
    - web_editor
    - web_planner
    - http_routing
    - portal
    - mail
    - base_setup
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (30)
XML IDNameModelTypeStatus
assets_frontend CMS Form frontend assets ir.ui.view qweb Inherits website.assets_frontend
base_form CMS form template ir.ui.view qweb New
base_form_buttons CMS base form buttons ir.ui.view qweb New
base_form_field_error_block CMS form field error block ir.ui.view qweb New
base_form_field_help_block CMS form field help block ir.ui.view qweb New
base_form_fields CMS form fields ir.ui.view qweb New
field_widget_boolean CMS form boolean field widget ir.ui.view qweb New
field_widget_char CMS form text field widget ir.ui.view qweb New
field_widget_date CMS form date field widget ir.ui.view qweb New
field_widget_hidden CMS form hidden field ir.ui.view qweb New
field_widget_image CMS form image field widget ir.ui.view qweb New
field_widget_m2o CMS form m2o field widget ir.ui.view qweb New
field_widget_m2o_multi CMS form m2o multi select field widget ir.ui.view qweb Inherits field_widget_x2m
field_widget_radio_selection CMS form selection field radio widget ir.ui.view qweb New
field_widget_selection CMS form selection field widget ir.ui.view qweb Inherits cms_form.field_widget_m2o
field_widget_text CMS form text field widget ir.ui.view qweb New
field_widget_x2m CMS form x2m field widget ir.ui.view qweb New
fieldsets_as_tabs CMS form fieldsets as tabs ir.ui.view qweb New
form_horizontal_field_wrapper CMS form field wrapper horiz form ir.ui.view qweb New
form_vertical_field_wrapper CMS form field wrapper vertical form ir.ui.view qweb New
form_wrapper CMS form wrapper ir.ui.view qweb New
search_form_buttons CMS search form buttons ir.ui.view qweb Inherits cms_form.base_form_buttons
search_form_wrapper CMS search form wrapper ir.ui.view qweb Inherits cms_form.form_wrapper
search_results CMS form search results ir.ui.view qweb New
search_results_pager CMS form pager ir.ui.view qweb Inherits website.pager
single_field CMS form single field ir.ui.view qweb New
single_fieldset CMS form single fieldset ir.ui.view qweb New
wizard_form_buttons CMS wizard form buttons ir.ui.view qweb Inherits cms_form.base_form_buttons
wizard_form_wrapper CMS wizard form wrapper ir.ui.view qweb Inherits cms_form.form_wrapper
wizard_progress_bar CMS Wizard progress bar ir.ui.view qweb New
Models touched (21)

New fields (0)

No new fields.

Public methods (17)
  • form_after_create_or_update(self, values, extra_values)
    Post create/update hook.
  • form_before_create_or_update(self, values, extra_values)
    Pre create/update hook.
  • form_cancel_url(self, main_object=None)
    URL to redirect to after click on "cancel" button.
  • form_check_empty_value(self, fname, field, value, **req_values)
    Return True if passed field value is really empty.
  • form_create_or_update(self)
    Prepare values and create or update main_object.
  • form_get_validator(self, fname, field)
    Retrieve field validator.
  • form_msg_error_missing(self)
    @property
  • form_msg_success_created(self)
    @property
  • form_msg_success_updated(self)
    @property
  • form_next_url(self, main_object=None)
    URL to redirect to after successful form submission.
  • form_process_POST(self, render_values)
    Process POST requests.
  • form_redirect(self)
    @property
  • form_redirect(self, value)
    @form_redirect.setter
  • form_success(self)
    @property
  • form_success(self, value)
    @form_success.setter
  • form_title(self)
    @property
  • form_validate(self, request_values=None)
    Validate submitted values.

New fields (0)

No new fields.

Public methods (31)
  • form_check_permission(self, raise_exception=True)
    Check permission on current model and main object if any.
  • form_css_klass(self)
    @property
    Return `<form />` element css klasses. By default you can provide extra klasses via `_form_extra_css_klass`.
  • form_description(self)
    @property
  • form_extract_values(self, **request_values)
    Extract values from request form.
  • form_fields(self, hidden=None)
    Retrieve form fields. :param hidden: whether to include or not hidden inputs. Options: * None, default: include all fields, hidden or not * True: include only hidden fields * False: include all fields but those hidden.
  • form_fieldsets(self)
  • form_fieldsets_wrapper_klass(self)
    @property
  • form_file_fields(self)
    @property
    File fields.
  • form_get_extractor(self, fname, field, value=None, **req_values)
    Retrieve form value extractor. :param fname: field name :param field: field description as `fields_get` :param value: current field value if any :param req_values: custom request valuess
  • form_get_loader(self, fname, field, main_object=None, value=None, **req_values)
    Retrieve form value loader. :param fname: field name :param field: field description as `fields_get` :param main_object: current main object if any :param value: current field value if any :param req_values: custom request valuess
  • form_get_request_values(self)
    Retrieve fields values from current request.
  • form_get_widget(self, fname, field, **kw)
    Retrieve and initialize widget.
  • form_get_widget_model(self, fname, field)
    Retrieve widget model name.
  • form_init(self, request, main_object=None, **kw)
    Initalize a form instance. @param request: an odoo-wrapped werkeug request @param main_object: current model instance if any @param kw: pass any override for `_form_` attributes ie: `fields_attributes` -> `_form_fields_attributes`
  • form_json_info(self)
  • form_load_defaults(self, main_object=None, request_values=None)
    Load default values. Values lookup order: 1. `main_object` fields' values (if an existing main_object is passed) 2. request parameters (only parameters matching form fields names)
  • form_make_field_wrapper_klass(self, fname, field, **kw)
    Return specific CSS klass for the field wrapper.
  • form_mode(self)
    @property
  • form_model(self)
    @property
  • form_process(self, **kw)
    Process current request. :param kw: inject custom / extra rendering values. Lookup correct request handler by request method and call it with rendering values. The handler can perform any action (like creating objects) and then return final rendering form values and store them into `form_render_values`.
  • form_process_GET(self, render_values)
    Process GET requests.
  • form_process_POST(self, render_values)
    Process POST requests.
  • form_render(self, **kw)
    Renders form template declared in `form_template`. To render the form simply do: <t t-raw="form.form_render()" />
  • form_render_values(self)
    @property
    Values used to render the form.
  • form_render_values(self, value)
    @form_render_values.setter
  • form_title(self)
    @property
  • form_update_fields_attributes(self, _fields)
    Manipulate fields attributes.
  • form_widgets(self)
    @property
    Return a mapping between field name and widget model.
  • form_wrapper_css_klass(self)
    @property
    Return form wrapper css klass. By default the form markup is wrapped into a `cms_form_wrapper` element. You can use this set of klasses to customize form styles. Included by default: * `cms_form_wrapper` marker * form model name normalized (res.partner -> res_partner) * `_form_wrapper_extra_css_klass` extra klasses from form attribute * `mode_` + form mode (ie: 'mode_write')
  • main_object(self)
    @property
    Current main object.
  • main_object(self, value)
    @main_object.setter
    Current main object setter.

New fields (0)

No new fields.

Public methods (10)
  • form_check_permission(self)
    Just searching, nothing to check here.
  • form_get_widget_model(self, fname, field)
    Search via related field needs a simple char widget.
  • form_process_GET(self, render_values)
  • form_search(self, render_values)
    Produce search results.
  • form_search_domain(self, search_values)
    Build search domain.
  • form_search_results(self)
    @property
    Return search results.
  • form_search_results(self, value)
    @form_search_results.setter
  • form_title(self)
    @property
  • form_update_fields_attributes(self, _fields)
    No field should be mandatory.
  • pager(self, **kw)

New fields (0)

No new fields.

Public methods (5)
  • binary_to_form(self, value, **req_values)
  • form_to_binary(self, value, **req_values)
  • w_check_empty_value(self, value, **req_values)
  • w_extract(self, **req_values)
  • w_load(self, **req_values)

New fields (0)

No new fields.

Public methods (2)
  • w_extract(self, **req_values)
  • widget_init(self, form, fname, field, **kw)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • form_to_date(self, value, **req_values)
  • w_extract(self, **req_values)
  • widget_init(self, form, fname, field, **kw)

New fields (0)

No new fields.

Public methods (1)
  • w_extract(self, **req_values)

New fields (0)

No new fields.

Public methods (1)
  • w_html_fname(self)
    @property
    Field name for final HTML markup.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • w_extract(self, **req_values)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (6)
  • form_to_m2o(self, value, **req_values)
  • m2o_to_form(self, value, **req_values)
  • w_extract(self, **req_values)
  • w_load(self, **req_values)
  • w_option_items(self)
    @property
  • widget_init(self, form, fname, field, **kw)

New fields (0)

No new fields.

Public methods (2)
  • form_to_m2o(self, value, **req_values)
  • m2o_to_form(self, value, **req_values)

New fields (0)

No new fields.

Public methods (10)
  • render(self)
  • w_check_empty_value(self, value, **req_values)
  • w_css_klass(self)
    @property
  • w_data_json(self)
  • w_extract(self, **req_values)
    Extract value from form submit.
  • w_ids_from_input(value)
    @staticmethod
    Convert list of ids from form input.
  • w_load(self, **req_values)
    Load value for current field in current request.
  • w_subfields_by_value(self, value='_all')
  • w_template(self)
    @property
  • widget_init(self, form, fname, field, data=None, subfields=None, template='', css_klass='', **kw)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • widget_init(self, form, fname, field, **kw)

New fields (0)

No new fields.

Public methods (2)
  • w_extract(self, **req_values)
  • w_option_items(self)
    @property

New fields (0)

No new fields.

Public methods (1)
  • widget_init(self, form, fname, field, **kw)

New fields (0)

No new fields.

Public methods (5)
  • form_to_x2many(self, value, **req_values)
  • w_extract(self, **req_values)
  • w_load(self, **req_values)
  • widget_init(self, form, fname, field, **kw)
  • x2many_to_form(self, value, **req_values)

New fields (0)

No new fields.

Public methods (14)
  • form_after_create_or_update(self, values, extra_values)
  • form_init(self, request, main_object=None, page=1, wizard=None, **kw)
  • form_next_url(self, main_object=None)
  • form_wrapper_css_klass(self)
    @property
  • wiz_configure_steps(self)
    Configure wizard steps. Each step can use a different form, for instance: return { 1: { 'form_model': 'form.a', 'title': 'Step 1', 'description': 'Preliminary info', }, 2: { 'form_model': 'form.b', 'title': 'Step 2', }, 3: { 'form_model': 'form.c', 'title': 'Step 3', 'description': 'Foo', }, }
  • wiz_current_step(self)
  • wiz_get_step_info(self, step)
  • wiz_init(self, page=1, **kw)
  • wiz_load_step(self, step=None)
  • wiz_next_step(self)
  • wiz_prev_step(self)
  • wiz_save_step(self, values, step=None)
  • wiz_steps(self)
    @property
  • wiz_storage_get(self)
REPOSITORY
REPOSITORYOCA/website-cms
GIT
GIThttps://github.com/OCA/website-cms.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/website-cms/tree/10.0/cms_form
VERSION
VERSION 1.4.4
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSGitHub, Akim Juillerat, OCA Transbot, oca-travis, OCA-git-bot, Simone Orsi
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:20:03
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/website-cms:
    - cms_info
    - cms_delete_content
    - cms_status_message
odoo/odoo:
    - website
    - web
    - base
    - web_editor
    - web_planner
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (28)
XML IDNameModelTypeStatus
assets_frontend CMS Form frontend assets ir.ui.view qweb Inherits website.assets_frontend
base_form CMS form template ir.ui.view qweb New
base_form_buttons CMS base form buttons ir.ui.view qweb New
base_form_field_error_block CMS form field error block ir.ui.view qweb New
base_form_field_help_block CMS form field help block ir.ui.view qweb New
base_form_fields CMS form fields ir.ui.view qweb New
field_widget_boolean CMS form boolean field widget ir.ui.view qweb New
field_widget_char CMS form text field widget ir.ui.view qweb New
field_widget_date CMS form date field widget ir.ui.view qweb New
field_widget_image CMS form image field widget ir.ui.view qweb New
field_widget_m2o CMS form m2o field widget ir.ui.view qweb New
field_widget_m2o_multi CMS form m2o multi select field widget ir.ui.view qweb Inherits field_widget_x2m
field_widget_radio_selection CMS form selection field radio widget ir.ui.view qweb New
field_widget_selection CMS form selection field widget ir.ui.view qweb Inherits cms_form.field_widget_m2o
field_widget_text CMS form text field widget ir.ui.view qweb New
field_widget_x2m CMS form x2m field widget ir.ui.view qweb New
fieldsets_as_tabs CMS form fieldsets as tabs ir.ui.view qweb New
form_horizontal_field_wrapper CMS form field wrapper horiz form ir.ui.view qweb New
form_vertical_field_wrapper CMS form field wrapper vertical form ir.ui.view qweb New
form_wrapper CMS form wrapper ir.ui.view qweb New
search_form_buttons CMS search form buttons ir.ui.view qweb Inherits cms_form.base_form_buttons
search_form_wrapper CMS search form wrapper ir.ui.view qweb Inherits cms_form.form_wrapper
search_results CMS form search results ir.ui.view qweb New
single_field CMS form single field ir.ui.view qweb New
single_fieldset CMS form single fieldset ir.ui.view qweb New
wizard_form_buttons CMS wizard form buttons ir.ui.view qweb Inherits cms_form.base_form_buttons
wizard_form_wrapper CMS wizard form wrapper ir.ui.view qweb Inherits cms_form.form_wrapper
wizard_progress_bar CMS Wizard progress bar ir.ui.view qweb New
Models touched (24)

New fields (0)

No new fields.

Public methods (17)
  • form_after_create_or_update(self, values, extra_values)
    Post create/update hook.
  • form_before_create_or_update(self, values, extra_values)
    Pre create/update hook.
  • form_cancel_url(self, main_object=None)
    URL to redirect to after click on "cancel" button.
  • form_check_empty_field(self, fname, field, value, **req_values)
    Return True if passed field value is really empty.
  • form_create_or_update(self)
    Prepare values and create or update main_object.
  • form_get_validator(self, fname, field)
    Retrieve field validator.
  • form_msg_error_missing(self)
    @property
  • form_msg_success_created(self)
    @property
  • form_msg_success_updated(self)
    @property
  • form_next_url(self, main_object=None)
    URL to redirect to after successful form submission.
  • form_process_POST(self, render_values)
    Process POST requests.
  • form_redirect(self)
    @property
  • form_redirect(self, value)
    @form_redirect.setter
  • form_success(self)
    @property
  • form_success(self, value)
    @form_success.setter
  • form_title(self)
    @property
  • form_validate(self, request_values=None)
    Validate submitted values.

New fields (0)

No new fields.

Public methods (31)
  • form_check_permission(self, raise_exception=True)
    Check permission on current model and main object if any.
  • form_css_klass(self)
    @property
    Return `<form />` element css klasses. By default you can provide extra klasses via `_form_extra_css_klass`.
  • form_description(self)
    @property
  • form_extract_values(self, **request_values)
    Extract values from request form.
  • form_fields(self)
  • form_fieldsets(self)
  • form_fieldsets_wrapper_klass(self)
    @property
  • form_file_fields(self)
    @property
    File fields.
  • form_get_extractor(self, fname, field, value=None, **req_values)
    Retrieve form value extractor. :param fname: field name :param field: field description as `fields_get` :param value: current field value if any :param req_values: custom request valuess
  • form_get_loader(self, fname, field, main_object=None, value=None, **req_values)
    Retrieve form value loader. :param fname: field name :param field: field description as `fields_get` :param main_object: current main object if any :param value: current field value if any :param req_values: custom request valuess
  • form_get_request_values(self)
    Retrieve fields values from current request.
  • form_get_widget(self, fname, field, **kw)
    Retrieve and initialize widget.
  • form_get_widget_model(self, fname, field)
    Retrieve widget model name.
  • form_init(self, request, main_object=None, **kw)
    Initalize a form instance. @param request: an odoo-wrapped werkeug request @param main_object: current model instance if any @param kw: pass any override for `_form_` attributes ie: `fields_attributes` -> `_form_fields_attributes`
  • form_json_info(self)
  • form_load_defaults(self, main_object=None, request_values=None)
    Load default values. Values lookup order: 1. `main_object` fields' values (if an existing main_object is passed) 2. request parameters (only parameters matching form fields names)
  • form_make_field_wrapper_klass(self, fname, field, **kw)
    Return specific CSS klass for the field wrapper.
  • form_mode(self)
    @property
  • form_model(self)
    @property
  • form_process(self, **kw)
    Process current request. :param kw: inject custom / extra rendering values. Lookup correct request handler by request method and call it with rendering values. The handler can perform any action (like creating objects) and then return final rendering form values and store them into `form_render_values`.
  • form_process_GET(self, render_values)
    Process GET requests.
  • form_process_POST(self, render_values)
    Process POST requests.
  • form_render(self, **kw)
    Renders form template declared in `form_template`. To render the form simply do: <t t-raw="form.form_render()" />
  • form_render_values(self)
    @property
    Values used to render the form.
  • form_render_values(self, value)
    @form_render_values.setter
  • form_title(self)
    @property
  • form_update_fields_attributes(self, _fields)
    Manipulate fields attributes.
  • form_widgets(self)
    @property
    Return a mapping between field name and widget model.
  • form_wrapper_css_klass(self)
    @property
    Return form wrapper css klass. By default the form markup is wrapped into a `cms_form_wrapper` element. You can use this set of klasses to customize form styles. Included by default: * `cms_form_wrapper` marker * form model name normalized (res.partner -> res_partner) * `_form_wrapper_extra_css_klass` extra klasses from form attribute * `mode_` + form mode (ie: 'mode_write')
  • main_object(self)
    @property
    Current main object.
  • main_object(self, value)
    @main_object.setter
    Current main object setter.

New fields (1)
  • custom Char
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (10)
  • form_check_permission(self)
    Just searching, nothing to check here.
  • form_get_widget_model(self, fname, field)
    Search via related field needs a simple char widget.
  • form_process_GET(self, render_values)
  • form_search(self, render_values)
    Produce search results.
  • form_search_domain(self, search_values)
    Build search domain.
  • form_search_results(self)
    @property
    Return search results.
  • form_search_results(self, value)
    @form_search_results.setter
  • form_title(self)
    @property
  • form_update_fields_attributes(self, _fields)
    No field should be mandatory.
  • pager(self, **kw)

New fields (0)

No new fields.

Public methods (1)
  • form_search_domain(self, search_values)
    Force domain to include only test-created records.

New fields (6)
  • a_char Char
  • a_float Float
  • a_many2many Char
  • a_many2one Char
  • a_number Integer
  • a_one2many Char
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (4)
  • binary_to_form(self, value, **req_values)
  • form_to_binary(self, value, **req_values)
  • w_extract(self, **req_values)
  • w_load(self, **req_values)

New fields (0)

No new fields.

Public methods (2)
  • w_extract(self, **req_values)
  • widget_init(self, form, fname, field, **kw)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • form_to_date(self, value, **req_values)
  • w_extract(self, **req_values)
  • widget_init(self, form, fname, field, **kw)

New fields (0)

No new fields.

Public methods (1)
  • w_extract(self, **req_values)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • w_extract(self, **req_values)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (6)
  • form_to_m2o(self, value, **req_values)
  • m2o_to_form(self, value, **req_values)
  • w_extract(self, **req_values)
  • w_load(self, **req_values)
  • w_option_items(self)
    @property
  • widget_init(self, form, fname, field, **kw)

New fields (0)

No new fields.

Public methods (2)
  • form_to_m2o(self, value, **req_values)
  • m2o_to_form(self, value, **req_values)

New fields (0)

No new fields.

Public methods (9)
  • render(self)
  • w_css_klass(self)
    @property
  • w_data_json(self)
  • w_extract(self, **req_values)
    Extract value from form submit.
  • w_ids_from_input(self, value)
    Convert list of ids from form input.
  • w_load(self, **req_values)
    Load value for current field in current request.
  • w_subfields_by_value(self, value='_all')
  • w_template(self)
    @property
  • widget_init(self, form, fname, field, data=None, subfields=None, template='', css_klass='')

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • w_option_items(self)
    @property

New fields (0)

No new fields.

Public methods (1)
  • widget_init(self, form, fname, field, **kw)

New fields (0)

No new fields.

Public methods (5)
  • form_to_x2many(self, value, **req_values)
  • w_extract(self, **req_values)
  • w_load(self, **req_values)
  • widget_init(self, form, fname, field, **kw)
  • x2many_to_form(self, value, **req_values)

New fields (0)

No new fields.

Public methods (14)
  • form_after_create_or_update(self, values, extra_values)
  • form_init(self, request, main_object=None, page=1, wizard=None, **kw)
  • form_next_url(self, main_object=None)
  • form_wrapper_css_klass(self)
    @property
  • wiz_configure_steps(self)
    Configure wizard steps. Each step can use a different form, for instance: return { 1: { 'form_model': 'form.a', 'title': 'Step 1', 'description': 'Preliminary info', }, 2: { 'form_model': 'form.b', 'title': 'Step 2', }, 3: { 'form_model': 'form.c', 'title': 'Step 3', 'description': 'Foo', }, }
  • wiz_current_step(self)
  • wiz_get_step_info(self, step)
  • wiz_init(self, page=1, **kw)
  • wiz_load_step(self, step=None)
  • wiz_next_step(self)
  • wiz_prev_step(self)
  • wiz_save_step(self, values, step=None)
  • wiz_steps(self)
    @property
  • wiz_storage_get(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • cms_edit_url Char
    compute='_compute_cms_edit_url' readonly=True string='CMS edit URL'
Public methods (2)
  • cms_add_url(self)
    @property
  • cms_search_url(self)
    @property
REPOSITORY
REPOSITORYOCA/website-cms
GIT
GIThttps://github.com/OCA/website-cms.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/website-cms/tree/9.0/cms_form
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp SA
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp SA
COMMITTERS
COMMITTERSPedro M. Baeza, GitHub, OCA Transbot, Simone Orsi
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:15:25
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/website-cms:
    - cms_status_message
odoo/odoo:
    - website
    - web
    - base
    - web_editor
    - web_planner
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (19)
XML IDNameModelTypeStatus
assets_frontend CMS Form frontend assets ir.ui.view qweb Inherits website.assets_frontend
base_form CMS form template ir.ui.view qweb New
base_form_buttons CMS base form buttons ir.ui.view qweb New
base_form_field_help_block CMS form field help block ir.ui.view qweb New
base_form_fields CMS form fields ir.ui.view qweb New
field_widget_boolean CMS form boolean field widget ir.ui.view qweb New
field_widget_char CMS form text field widget ir.ui.view qweb New
field_widget_date CMS form date field widget ir.ui.view qweb New
field_widget_image CMS form image field widget ir.ui.view qweb New
field_widget_m2o CMS form m2o field widget ir.ui.view qweb New
field_widget_radio_selection CMS form selection field radio widget ir.ui.view qweb New
field_widget_selection CMS form selection field widget ir.ui.view qweb Inherits cms_form.field_widget_m2o
field_widget_text CMS form text field widget ir.ui.view qweb New
field_widget_x2m CMS form x2m field widget ir.ui.view qweb New
form_horizontal_field_wrapper CMS form field wrapper horiz form ir.ui.view qweb New
form_wrapper CMS form wrapper ir.ui.view qweb New
search_form_buttons CMS search form buttons ir.ui.view qweb Inherits cms_form.base_form_buttons
search_form_wrapper CMS search form wrapper ir.ui.view qweb Inherits cms_form.form_wrapper
search_results CMS form search results ir.ui.view qweb New
Models touched (21)

New fields (0)

No new fields.

Public methods (17)
  • form_after_create_or_update(self, values, extra_values)
    Post create/update hook.
  • form_before_create_or_update(self, values, extra_values)
    Pre create/update hook.
  • form_cancel_url(self, main_object=None)
    URL to redirect to after click on "cancel" button.
  • form_check_empty_field(self, fname, field, value, **req_values)
    Return True if passed field value is really empty.
  • form_create_or_update(self)
    Prepare values and create or update main_object.
  • form_get_validator(self, fname, field)
    Retrieve field validator.
  • form_msg_error_missing(self)
    @property
  • form_msg_success_created(self)
    @property
  • form_msg_success_updated(self)
    @property
  • form_next_url(self, main_object=None)
    URL to redirect to after successful form submission.
  • form_process_POST(self, render_values)
    Process POST requests.
  • form_redirect(self)
    @property
  • form_redirect(self, value)
    @form_redirect.setter
  • form_success(self)
    @property
  • form_success(self, value)
    @form_success.setter
  • form_title(self)
    @property
  • form_validate(self, request_values=None)
    Validate submitted values.

New fields (0)

No new fields.

Public methods (27)
  • form_css_klass(self)
    @property
    Return `<form />` element css klasses. By default you can provide extra klasses via `_form_extra_css_klass`.
  • form_description(self)
    @property
  • form_extract_values(self, **request_values)
    Extract values from request form.
  • form_fields(self)
  • form_file_fields(self)
    @property
    File fields.
  • form_get_extractor(self, fname, field, value=None, **req_values)
    Retrieve form value extractor. :param fname: field name :param field: field description as `fields_get` :param value: current field value if any :param req_values: custom request valuess
  • form_get_loader(self, fname, field, main_object=None, value=None, **req_values)
    Retrieve form value loader. :param fname: field name :param field: field description as `fields_get` :param main_object: current main object if any :param value: current field value if any :param req_values: custom request valuess
  • form_get_request_values(self)
    Retrieve fields values from current request.
  • form_get_widget(self, fname, field)
    Retrieve and initialize widget.
  • form_get_widget_model(self, fname, field)
    Retrieve widget model name.
  • form_init(self, request, main_object=None, **kw)
    Initalize a form instance. @param request: an odoo-wrapped werkeug request @param main_object: current model instance if any @param kw: pass any override for `_form_` attributes ie: `fields_attributes` -> `_form_fields_attributes`
  • form_json_info(self)
  • form_load_defaults(self, main_object=None, request_values=None)
    Load default values. Values lookup order: 1. `main_object` fields' values (if an existing main_object is passed) 2. request parameters (only parameters matching form fields names)
  • form_mode(self)
    @property
  • form_model(self)
    @property
  • form_process(self, **kw)
    Process current request. :param kw: inject custom / extra rendering values. Lookup correct request handler by request method and call it with rendering values. The handler can perform any action (like creating objects) and then return final rendering form values and store them into `form_render_values`.
  • form_process_GET(self, render_values)
    Process GET requests.
  • form_process_POST(self, render_values)
    Process POST requests.
  • form_render(self, **kw)
    Renders form template declared in `form_template`. To render the form simply do: <t t-raw="form.form_render()" />
  • form_render_values(self)
    @property
    Values used to render the form.
  • form_render_values(self, value)
    @form_render_values.setter
  • form_title(self)
    @property
  • form_update_fields_attributes(self, _fields)
    Manipulate fields attributes.
  • form_widgets(self)
    @property
    Return a mapping between field name and widget model.
  • form_wrapper_css_klass(self)
    @property
    Return form wrapper css klass. By default the form markup is wrapped into a `cms_form_wrapper` element. You can use this set of klasses to customize form styles. Included by default: * `cms_form_wrapper` marker * form model name normalized (res.partner -> res_partner) * `_form_wrapper_extra_css_klass` extra klasses from form attribute * `mode_` + form mode (ie: 'mode_write')
  • main_object(self)
    @property
    Current main object.
  • main_object(self, value)
    @main_object.setter
    Current main object setter.

New fields (1)
  • custom Char
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (8)
  • form_process_GET(self, render_values)
  • form_search(self, render_values)
    Produce search results.
  • form_search_domain(self, search_values)
    Build search domain.
  • form_search_results(self)
    @property
    Return search results.
  • form_search_results(self, value)
    @form_search_results.setter
  • form_title(self)
    @property
  • form_update_fields_attributes(self, _fields)
    No field should be mandatory.
  • pager(self, **kw)

New fields (0)

No new fields.

Public methods (1)
  • form_search_domain(self, search_values)
    Force domain to include only test-created records.

New fields (6)
  • a_char Char
  • a_float Float
  • a_many2many Char
  • a_many2one Char
  • a_number Integer
  • a_one2many Char
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (4)
  • binary_to_form(self, value, **req_values)
  • form_to_binary(self, value, **req_values)
  • w_extract(self, **req_values)
  • w_load(self, **req_values)

New fields (0)

No new fields.

Public methods (2)
  • w_extract(self, **req_values)
  • widget_init(self, form, fname, field, **kw)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • form_to_date(self, value, **req_values)
  • w_extract(self, **req_values)

New fields (0)

No new fields.

Public methods (1)
  • w_extract(self, **req_values)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • w_extract(self, **req_values)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (6)
  • form_to_m2o(self, value, **req_values)
  • m2o_to_form(self, value)
  • w_extract(self, **req_values)
  • w_load(self, **req_values)
  • w_option_items(self)
    @property
  • widget_init(self, form, fname, field, **kw)

New fields (0)

No new fields.

Public methods (8)
  • render(self)
  • w_css_klass(self)
    @property
  • w_extract(self, **req_values)
    Extract value from form submit.
  • w_ids_from_input(self, value)
    Convert list of ids from form input.
  • w_load(self, **req_values)
    Load value for current field in current request.
  • w_subfields_by_value(self, value='_all')
  • w_template(self)
    @property
  • widget_init(self, form, fname, field, data=None, subfields=None, template='', css_klass='')

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • w_option_items(self)
    @property

New fields (0)

No new fields.

Public methods (1)
  • widget_init(self, form, fname, field, **kw)

New fields (0)

No new fields.

Public methods (5)
  • form_to_x2many(self, value, **req_values)
  • w_extract(self, **req_values)
  • w_load(self, **req_values)
  • widget_init(self, form, fname, field, **kw)
  • x2many_to_form(self, value, **req_values)

New fields (1)
  • cms_edit_url Char
    compute='_compute_cms_edit_url' readonly=True string='CMS edit URL'
Public methods (2)
  • cms_add_url(self)
    @property
  • cms_search_url(self)
    @property