Web Editor

web_editor
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/18.0/web_editor
VERSION
VERSION 0.1.0
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, David Monjoie, Xavier Morel, Nicolas Lempereur, Géry Debongnie, Aaron Bohy, qsm-odoo, Odoo Online, Romain Derie, Laurent Smet, Jorge Pinna Puissant, Lucas Perais, Julien Castiaux, Xavier-Do, Romeo Fragomeli, Julien Mougenot, Anh Thao Pham (pta), std-odoo, Achraf (abz), Nasreddin Boulif (bon), Tiffany Chang (tic), Pierre Rousseau, Gorash, Mathieu Duckerts-Antoine, Pierre Paridans, abd-msyukyu-odoo, Romain Estievenart, Benjamin Vray, Benoit Socias, Florian Vranckx, Antoine Guenet, Arthur Detroux (ard), Abdelouahab (abla), Nicolas Bayet, Jinjiu Liu, Hubert Van De Walle, Mathieu Walravens, luvi, Renaud Thiry, Julien Banken, Vincent Larcin, bve-odoo, Louis Wicket (wil), tsm-odoo, David, Victor Piryns (pivi), Julien (jula), Mahamadasif Ansari, Soukéina Bojabza, Robin Lejeune (role), xO-Tx, Louis (loco), Levi Siuzdak (sile), Maruan Aguerdouh (magm), Dylan Kiss (dyki), Sébastien Geelen (sge), Antoine (ande), FrancoisGe, Michael (mcm), Chong Wang (cwg), Thomas Josse (thjo), Xavier Bol (xbo), Brieuc-brd, divy-odoo, Mahdi Cheikh Rouhou (macr), Walid (wasa), maad-odoo, Deependra Solanki, visp-odoo, stefanorigano (SRI), Mehdi Outagant (MOU), Guillaume-gdi, Serge Bayet (seba), Lucas Thomassin (luth), reka-odoo, Julien Carion (juca), dhba, kcv-odoo, Chrysanthe (chgo), Adnan Saiyed, Rodolpho Lima, aath-odoo, shsa-odoo, vishal padhiyar, utag-odoo, adch-odoo, Louis (wil), Mohammed Basioni (basm), mano-odoo, Sanjay Sharma, thle-odoo, Xavier Luyckx (xlu), guce, Antoine (anso), Manushi Shah, Rahil Ghanchi, paru-odoo, Pierre Pulinckx (PIPU), Denis Rygaert, luve-odoo, sben-odoo, gvar-odoo, Pierre Pulinckx (pipu), Bastien PIERRE, Thomas Josse (THJO), Christopher Rogos, Armin-FalDiS, ruja-odoo, bikh-odoo, defl, bhna-odoo, mojem, ksbh-odoo, aans-odoo, rusp-odoo, alap-odoo, Patrick Stooks, chdh-odoo, dtda-odoo, Augustin (duau), romo, ptpu-odoo, Serhii Rubanskyi, Benoit Socias (bso), Sébastien Geelen, Serge Bayet, saurabh, Rudra Patel, sbbh-odoo, vega-odoo, Ian (iacio), Parth Vyas
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:26:00
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - bus
    - base
    - web
    - html_editor
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Odoo Web Editor widget.
==========================

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
s_hr Separator ir.ui.view qweb New
snippet_options snippet_options ir.ui.view qweb New
snippet_options_background_color_widget snippet_options_background_color_widget ir.ui.view qweb New
snippet_options_background_options snippet_options_background_options ir.ui.view qweb New
snippet_options_image_optimization_widgets snippet_options_image_optimization_widgets ir.ui.view qweb New
snippet_options_version_control snippet_options_version_control ir.ui.view qweb New
snippets snippets ir.ui.view qweb New
web_editor.colorpicker Color-Picker ir.ui.view qweb New
web_editor.tests web_editor.tests ir.ui.view qweb New
Models touched (26)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • web_update_field_translations(self, fname, translations)

New fields (2)
  • html_field_history Json
    prefetch=False args: 'History data'
  • html_field_history_metadata Json
    compute='_compute_metadata' args: 'History metadata'
Public methods (4)
  • create(self, vals_list)
    @api.model_create_multi
  • html_field_history_get_comparison_at_revision(self, field_name, revision_id)
    For the requested field, Get a comparison between the current content of the field and the content restored at the requested revision_id. :param str field_name: the name of the field :param int revision_id: id of the last revision to compare :return: string: the comparison
  • html_field_history_get_content_at_revision(self, field_name, revision_id)
    Get the requested field content restored at the revision_id. :param str field_name: the name of the field :param int revision_id: id of the last revision to restore :return: string: the restored content
  • write(self, vals)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model
  • value_from_string(self, value)

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • get_record_to_html(self, ids, options=None)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values=None)
    @api.model
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (3)
  • from_html(self, model, field, element)
    @api.model
  • load_local_url(self, url)
  • load_remote_url(self, url)

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (13)
  • delete_snippet(self, view_id, template_key)
    @api.model
  • extract_embedded_fields(self, arch)
    @api.model
  • extract_oe_structures(self, arch)
    @api.model
  • get_default_lang_code(self)
    @api.model
  • get_related_views(self, key, bundles=False)
    @api.model
    Get inherit view's informations of the template ``key``. returns templates info (which can be active or not) ``bundles=True`` returns also the asset bundles
  • rename_snippet(self, name, view_id, template_key)
    @api.model
  • replace_arch_section(self, section_xpath, replacement, replace_tail=False)
  • save(self, value, xpath=None)
    Update a view section. The view section may embed fields to write Note that `self` record might not exist when saving an embed field :param str xpath: valid xpath to the tag to replace
  • save_embedded_field(self, el)
    @api.model
  • save_oe_structure(self, el)
  • save_snippet(self, name, arch, template_key, snippet_key, thumbnail_url)
    @api.model
    Saves a new snippet arch so that it appears with the given name when using the given snippets template. :param name: the name of the snippet to save :param arch: the html structure of the snippet to save :param template_key: the key of the view regrouping all snippets in which the snippet to save is meant to appear :param snippet_key: the key (without module part) to identify the snippet from which the snippet to save originates :param thumbnail_url: the url of the thumbnail to use when displaying the snippet to save
  • to_empty_oe_structure(self, el)
    @api.model
  • to_field_ref(self, el)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • reset_asset(self, url, bundle)
    @api.model
    Delete the potential customizations made to a given (original) asset. Params: url (str): the URL of the original asset (scss / js) file bundle (str): the name of the bundle in which the customizations to delete were made
  • save_asset(self, url, bundle, content, file_type)
    @api.model
    Customize the content of a given asset (scss / js). Params: url (src): the URL of the original asset to customize (whether or not the asset was already customized) bundle (src): the name of the bundle in which the customizations will take effect content (src): the new content of the asset (scss / js) file_type (src): either 'scss' or 'js' according to the file being customized

New fields (11)
  • binary Binary
    attachment=False
  • char Char
  • date Date
  • datetime Datetime
  • float Float
  • html Html
  • integer Integer
  • many2one Many2one → web_editor.converter.test.sub
    args: 'web_editor.converter.test.sub'
  • numeric Float
    digits=(16, 2)
  • selection_str Selection
    string="Lorsqu'un pancake prend l'avion à destination de Toronto et qu'il fait une escale technique à St Claude, on dit:" args: [('A', "Qu'il n'est pas arrivé à Toronto"), ('B', "Qu'il était supposé arriver à Toronto"), ('C', "Qu'est-ce qu'il fout ce maudit pancake, tabernacle ?"), ('D', 'La réponse D')]
  • text Text
Public methods (0)

No public methods.

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

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/17.0/web_editor
VERSION
VERSION 0.1.0
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Thibault Delavallée, David Monjoie, Xavier Morel, Nicolas Lempereur, Géry Debongnie, Aaron Bohy, Jeremy Kersten, GitHub, Damien Bouvy, qsm-odoo, Odoo Online, Romain Derie, Adrien Dieudonne, Jorge Pinna Puissant, Lucas Perais, Aurélien Warnon, Xavier-Do, Romeo Fragomeli, Adrien Dieudonné, Joseph Caburnay, Julien Mougenot, Anh Thao Pham (pta), Samuel Degueldre, Achraf (abz), David Beguin, Tiffany Chang (tic), Rémy Voet (ryv), Pierre Rousseau, Gorash, Younn Olivier, Pierre Paridans, Hiral Bhavsar, abd-msyukyu-odoo, Romain Estievenart, Benjamin Vray, Benoit Socias, Guillaume (gdi), Krzysztof Magusiak, Florian Vranckx, Antoine Guenet, Arthur Detroux (ard), Florian Charlier, Nshimiyimana Séna, Walid HANNICHE (waha), Abdelouahab (abla), Nicolas Bayet, Jinjiu Liu, Hubert Van De Walle, Mathieu Walravens, luvi, Renaud Thiry, Julien Banken, Stanislas Gueniffey, bve-odoo, Louis Wicket (wil), David, Victor Piryns (pivi), Julien (jula), Mahamadasif Ansari, Simon Genin (ges), Saurabh Mishra, Chintan Panchal (can), Soukéina Bojabza, Robin Lejeune (role), xO-Tx, Louis (loco), Maruan Aguerdouh (magm), Dylan Kiss (dyki), Sébastien Geelen (sge), Sanket Brahmbhatt, Mahdi cheikh rouhou (macr), Bruno Boi, Antoine (ande), Maitri Patel, Pedro Manuel Calheiros Lima de Sousa (peso), FrancoisGe, Michael (mcm), Preksha Chouhan, Chong Wang (cwg), Odoo, Adrien Schoffeniels, Thomas Josse (thjo), Xavier Bol (xbo), Brieuc-brd, Aurélien MARIE, mega-odoo, Ivan Rasputin, micheledic, divy-odoo, Mahdi Cheikh Rouhou (macr), Andrzej(pian), Walid (wasa), maad-odoo, Deependra Solanki, dhba-odoo, visp-odoo, Ethan Vincent, Mehdi Outagant (MOU), Rodopho Cammarosano de Lima (rcdl), Guillaume-gdi, Serge Bayet (seba), reka-odoo, Jérémy Hennecart (jeh), Julien Carion (juca), dhba, kcv-odoo, Chrysanthe (chgo), Adnan Saiyed, Rodolpho Lima, aath-odoo, hmai, shsa-odoo, vishal padhiyar, utag-odoo, adch-odoo, Louis (wil), Sanjay Sharma, Mathieu (mano), thle-odoo, Antoine (anso), Rahil Ghanchi, panv-odoo, paru-odoo, Denis Rygaert, gvar-odoo, Morgane (morm), Pierre Pulinckx (pipu), Bastien PIERRE, Thomas Josse (THJO), Armin-FalDiS, Jason Au Yeung, ruja-odoo, Pulinckx Pierre (PIPU), Maeva De Keyser (MDEK), bikh-odoo, bhna-odoo, ksbh-odoo, aans-odoo, rusp-odoo, alap-odoo, Patrick Stooks, chdh-odoo, dtda-odoo, romo, ptpu-odoo, Serhii Rubanskyi, Benoit Socias (bso), Sébastien Geelen, Serge Bayet, Rodolpho, Lou (loha)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:02:11
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - bus
    - base
    - web
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Odoo Web Editor widget.
==========================

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
s_hr Separator ir.ui.view qweb New
snippet_options snippet_options ir.ui.view qweb New
snippet_options_background_color_widget snippet_options_background_color_widget ir.ui.view qweb New
snippet_options_background_options snippet_options_background_options ir.ui.view qweb New
snippet_options_image_optimization_widgets snippet_options_image_optimization_widgets ir.ui.view qweb New
snippets snippets ir.ui.view qweb New
web_editor.colorpicker Color-Picker ir.ui.view qweb New
web_editor.tests web_editor.tests ir.ui.view qweb New
Models touched (27)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • update_field_translations_sha(self, fname, translations)

New fields (2)
  • html_field_history Json
    prefetch=False args: 'History data'
  • html_field_history_metadata Json
    compute='_compute_metadata' args: 'History metadata'
Public methods (4)
  • create(self, vals_list)
    @api.model_create_multi
  • html_field_history_get_comparison_at_revision(self, field_name, revision_id)
    For the requested field, Get a comparison between the current content of the field and the content restored at the requested revision_id. :param str field_name: the name of the field :param int revision_id: id of the last revision to compare :return: string: the comparison
  • html_field_history_get_content_at_revision(self, field_name, revision_id)
    Get the requested field content restored at the revision_id. :param str field_name: the name of the field :param int revision_id: id of the last revision to restore :return: string: the restored content
  • write(self, vals)

New fields (5)
  • image_height Integer
    compute='_compute_image_size'
  • image_src Char
    compute='_compute_image_src'
  • image_width Integer
    compute='_compute_image_size'
  • local_url Char
    compute='_compute_local_url' args: 'Attachment URL'
  • original_id Many2one → ir.attachment
    string='Original (unoptimized, unresized) attachment' args: 'ir.attachment'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model
  • value_from_string(self, value)

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • get_record_to_html(self, ids, options=None)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values=None)
    @api.model
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (3)
  • from_html(self, model, field, element)
    @api.model
  • load_local_url(self, url)
  • load_remote_url(self, url)

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (13)
  • delete_snippet(self, view_id, template_key)
    @api.model
  • extract_embedded_fields(self, arch)
    @api.model
  • extract_oe_structures(self, arch)
    @api.model
  • get_default_lang_code(self)
    @api.model
  • get_related_views(self, key, bundles=False)
    @api.model
    Get inherit view's informations of the template ``key``. returns templates info (which can be active or not) ``bundles=True`` returns also the asset bundles
  • rename_snippet(self, name, view_id, template_key)
    @api.model
  • replace_arch_section(self, section_xpath, replacement, replace_tail=False)
  • save(self, value, xpath=None)
    Update a view section. The view section may embed fields to write Note that `self` record might not exist when saving an embed field :param str xpath: valid xpath to the tag to replace
  • save_embedded_field(self, el)
    @api.model
  • save_oe_structure(self, el)
  • save_snippet(self, name, arch, template_key, snippet_key, thumbnail_url)
    @api.model
    Saves a new snippet arch so that it appears with the given name when using the given snippets template. :param name: the name of the snippet to save :param arch: the html structure of the snippet to save :param template_key: the key of the view regrouping all snippets in which the snippet to save is meant to appear :param snippet_key: the key (without module part) to identify the snippet from which the snippet to save originates :param thumbnail_url: the url of the thumbnail to use when displaying the snippet to save
  • to_empty_oe_structure(self, el)
    @api.model
  • to_field_ref(self, el)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • reset_asset(self, url, bundle)
    @api.model
    Delete the potential customizations made to a given (original) asset. Params: url (str): the URL of the original asset (scss / js) file bundle (str): the name of the bundle in which the customizations to delete were made
  • save_asset(self, url, bundle, content, file_type)
    @api.model
    Customize the content of a given asset (scss / js). Params: url (src): the URL of the original asset to customize (whether or not the asset was already customized) bundle (src): the name of the bundle in which the customizations will take effect content (src): the new content of the asset (scss / js) file_type (src): either 'scss' or 'js' according to the file being customized

New fields (11)
  • binary Binary
    attachment=False
  • char Char
  • date Date
  • datetime Datetime
  • float Float
  • html Html
  • integer Integer
  • many2one Many2one → web_editor.converter.test.sub
    args: 'web_editor.converter.test.sub'
  • numeric Float
    digits=(16, 2)
  • selection_str Selection
    string="Lorsqu'un pancake prend l'avion à destination de Toronto et qu'il fait une escale technique à St Claude, on dit:" args: [('A', "Qu'il n'est pas arrivé à Toronto"), ('B', "Qu'il était supposé arriver à Toronto"), ('C', "Qu'est-ce qu'il fout ce maudit pancake, tabernacle ?"), ('D', 'La réponse D')]
  • text Text
Public methods (0)

No public methods.

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

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/16.0/web_editor
VERSION
VERSION 0.1.0
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Fabien Pinckaers, Thibault Delavallée, Denis Ledoux, David Monjoie, Xavier Morel, Mohammed Shekha, Nicolas Lempereur, Géry Debongnie, Aaron Bohy, GitHub, Damien Bouvy, Barad Mahendra, Yannick Tivisse, qsm-odoo, Romain Derie, Adrien Dieudonne, Jorge Pinna Puissant, Lucas Perais, Julien Castiaux, Xavier-Do, Romeo Fragomeli, Sébastien Theys, Joseph Caburnay, Anh Thao Pham (pta), Achraf (abz), David Beguin, Nasreddin Boulif (bon), Tiffany Chang (tic), Gorash, Younn Olivier, Pierre Paridans, Hiral Bhavsar, abd-msyukyu-odoo, Romain Estievenart, Benjamin Vray, Kishan Gajjar, Benoit Socias, Hubert Van de Walle (huvw), Laurent Desausoi (lade), Guillaume (gdi), Merlin (megu), Krzysztof Magusiak, Sébastien Mottet (oms), Antoine Guenet, Arthur Detroux (ard), Florian Charlier, Nshimiyimana Séna, Walid HANNICHE (waha), Nicolas Bayet, Thibault Libioulle, Jinjiu Liu, Hubert Van De Walle, Mathieu Walravens, Federico (fega), luvi, Roy Le, Renaud Thiry, Julien Banken, Ipsita Borisagar, Stanislas Gueniffey, bve-odoo, Louis Wicket (wil), tsm-odoo, David, Julien (jula), Tom De Caluwé, Simon Genin (ges), Saurabh Mishra, Soukéina Bojabza, Robin Lejeune (role), xO-Tx, Louis (loco), Maruan Aguerdouh (magm), Dylan Kiss (dyki), Sébastien Geelen (sge), Sanket Brahmbhatt, Mahdi cheikh rouhou (macr), Bruno Boi, Antoine (ande), Maitri Patel, Pedro Manuel Calheiros Lima de Sousa (peso), FrancoisGe, imanie383, Michael (mcm), Preksha Chouhan, Chong Wang (cwg), Odoo, Brieuc-brd, Aurélien MARIE, mega-odoo, Ivan Rasputin, divy-odoo, Mahdi Cheikh Rouhou (macr), Andrzej(pian), frc-odoo, Walid (wasa), maad-odoo, Deependra Solanki, dhba-odoo, visp-odoo, stefanorigano (SRI), Ethan Vincent, Mehdi Outagant (MOU), Rodopho Cammarosano de Lima (rcdl), Guillaume-gdi, Serge Bayet (seba), reka-odoo, Jérémy Hennecart (jeh), Carlos Roca, dhba, Martin Trigaux (mat), Chrysanthe (chgo), Adnan Saiyed, Rodolpho Lima, aath-odoo, hmai, shsa-odoo, vishal padhiyar, utag-odoo, adch-odoo, xlu-odoo, Sanjay Sharma, Mathieu (mano), thle-odoo, Rahil Ghanchi, panv-odoo, paru-odoo, Denis Rygaert, Armin-FalDiS, Dmytro Lazariev, Jason Au Yeung, ruja-odoo
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:55
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - bus
    - base
    - web
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Odoo Web Editor widget.
==========================

Code Analysis

Views touched (10)
XML IDNameModelTypeStatus
assets_edit_html_field Wysiwyg Editor Assets for html field (style-inline) ir.ui.view qweb New
s_hr Separator ir.ui.view qweb New
snippet_options snippet_options ir.ui.view qweb New
snippet_options_background_color_widget snippet_options_background_color_widget ir.ui.view qweb New
snippet_options_background_options snippet_options_background_options ir.ui.view qweb New
snippet_options_image_optimization_widgets snippet_options_image_optimization_widgets ir.ui.view qweb New
snippets snippets ir.ui.view qweb New
web_editor.colorpicker Color-Picker ir.ui.view qweb New
web_editor.tests web_editor.tests ir.ui.view qweb New
wysiwyg_iframe_editor_assets Editor assets for wysiwyg iframe content ir.ui.view qweb New
Models touched (25)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • update_field_translations_sha(self, fname, translations)

New fields (5)
  • image_height Integer
    compute='_compute_image_size'
  • image_src Char
    compute='_compute_image_src'
  • image_width Integer
    compute='_compute_image_size'
  • local_url Char
    compute='_compute_local_url' args: 'Attachment URL'
  • original_id Many2one → ir.attachment
    string='Original (unoptimized, unresized) attachment' args: 'ir.attachment'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model
  • value_from_string(self, value)

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • get_record_to_html(self, ids, options=None)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values=None)
    @api.model
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (3)
  • from_html(self, model, field, element)
    @api.model
  • load_local_url(self, url)
  • load_remote_url(self, url)

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (13)
  • delete_snippet(self, view_id, template_key)
    @api.model
  • extract_embedded_fields(self, arch)
    @api.model
  • extract_oe_structures(self, arch)
    @api.model
  • get_default_lang_code(self)
    @api.model
  • get_related_views(self, key, bundles=False)
    @api.model
    Get inherit view's informations of the template ``key``. returns templates info (which can be active or not) ``bundles=True`` returns also the asset bundles
  • rename_snippet(self, name, view_id, template_key)
    @api.model
  • replace_arch_section(self, section_xpath, replacement, replace_tail=False)
  • save(self, value, xpath=None)
    Update a view section. The view section may embed fields to write Note that `self` record might not exist when saving an embed field :param str xpath: valid xpath to the tag to replace
  • save_embedded_field(self, el)
    @api.model
  • save_oe_structure(self, el)
  • save_snippet(self, name, arch, template_key, snippet_key, thumbnail_url)
    @api.model
    Saves a new snippet arch so that it appears with the given name when using the given snippets template. :param name: the name of the snippet to save :param arch: the html structure of the snippet to save :param template_key: the key of the view regrouping all snippets in which the snippet to save is meant to appear :param snippet_key: the key (without module part) to identify the snippet from which the snippet to save originates :param thumbnail_url: the url of the thumbnail to use when displaying the snippet to save
  • to_empty_oe_structure(self, el)
    @api.model
  • to_field_ref(self, el)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • reset_asset(self, url, bundle)
    @api.model
    Delete the potential customizations made to a given (original) asset. Params: url (str): the URL of the original asset (scss / js) file bundle (str): the name of the bundle in which the customizations to delete were made
  • save_asset(self, url, bundle, content, file_type)
    @api.model
    Customize the content of a given asset (scss / js). Params: url (src): the URL of the original asset to customize (whether or not the asset was already customized) bundle (src): the name of the bundle in which the customizations will take effect content (src): the new content of the asset (scss / js) file_type (src): either 'scss' or 'js' according to the file being customized

New fields (11)
  • binary Binary
    attachment=False
  • char Char
  • date Date
  • datetime Datetime
  • float Float
  • html Html
  • integer Integer
  • many2one Many2one → web_editor.converter.test.sub
    args: 'web_editor.converter.test.sub'
  • numeric Float
    digits=(16, 2)
  • selection_str Selection
    string="Lorsqu'un pancake prend l'avion à destination de Toronto et qu'il fait une escale technique à St Claude, on dit:" args: [('A', "Qu'il n'est pas arrivé à Toronto"), ('B', "Qu'il était supposé arriver à Toronto"), ('C', "Qu'est-ce qu'il fout ce maudit pancake, tabernacle ?"), ('D', 'La réponse D')]
  • text Text
Public methods (0)

No public methods.

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

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/15.0/web_editor
VERSION
VERSION 0.1.0
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Olivier Dony, David Monjoie, Xavier Morel, Mohammed Shekha, Nicolas Lempereur, Aaron Bohy, Jeremy Kersten, Lucas Perais (lpe), Barad Mahendra, qsm-odoo, Romain Derie, Christophe Monniez, Jorge Pinna Puissant, Julien Castiaux, Xavier-Do, Sébastien Theys, Nasreddin (bon), Julien Mougenot, Anh Thao Pham (pta), Samuel Degueldre, Achraf (abz), Ivan Yelizariev, Nasreddin Boulif (bon), Tiffany Chang (tic), IEL, Thanh Dodeur, Gorash, Younn Olivier, Pierre Paridans, Kamen Zhekov, Hiral Bhavsar, abd-msyukyu-odoo, Benjamin Vray, Kishan Gajjar, Benoit Socias, Hubert Van de Walle (huvw), Laurent Desausoi (lade), Guillaume (gdi), Merlin (megu), jpr-odoo, Sébastien Mottet (oms), Antoine Guenet, Arthur Detroux (ard), Nshimiyimana Séna, Walid HANNICHE (waha), Nicolas Bayet, Thibault Libioulle, Jinjiu Liu, Laurent Stukkens (LTU), Hubert Van De Walle, Michael Mattiello (mcm), Federico (fega), Renaud Thiry, Ipsita Borisagar, Stanislas Gueniffey, bve-odoo, Francois (fge), Julien (jula), Tom De Caluwé, Simon Genin (ges), Soukéina Bojabza, Robin Lejeune (role), xO-Tx, Louis (loco), Maruan Aguerdouh (magm), Dylan Kiss (dyki), Sébastien Geelen (sge), Sanket Brahmbhatt, Bruno Boi, Antoine (ande), Maitri Patel, Preksha Chouhan, Odoo, Brieuc-brd, Aurélien MARIE, mega-odoo, Ivan Rasputin, jlzhou, divy-odoo, Mahdi Cheikh Rouhou (macr), frc-odoo, maad-odoo, Damien (abd), Deependra Solanki, dhba-odoo, visp-odoo, stefanorigano (SRI), Astik Singh, Mehdi Outagant (MOU), Rodopho Cammarosano de Lima (rcdl), Guillaume-gdi, Emilien Durieu (edu), reka-odoo, dhba, Chrysanthe (chgo), Adnan Saiyed, Rodolpho Lima, aath-odoo, hmai, shsa-odoo, vishal padhiyar, utag-odoo, adch-odoo, xlu-odoo
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:25:30
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - web
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Odoo Web Editor widget.
==========================

Code Analysis

Views touched (10)
XML IDNameModelTypeStatus
assets_edit_html_field Wysiwyg Editor Assets for html field (style-inline) ir.ui.view qweb New
compiled_assets_wysiwyg Wysiwyg Editor ir.ui.view qweb New
s_hr Separator ir.ui.view qweb New
snippet_options snippet_options ir.ui.view qweb New
snippet_options_background_color_widget snippet_options_background_color_widget ir.ui.view qweb New
snippet_options_background_options snippet_options_background_options ir.ui.view qweb New
snippet_options_image_optimization_widgets snippet_options_image_optimization_widgets ir.ui.view qweb New
snippets snippets ir.ui.view qweb New
web_editor.colorpicker Color-Picker ir.ui.view qweb New
wysiwyg_iframe_editor_assets Editor assets for wysiwyg iframe content ir.ui.view qweb New
Models touched (23)

New fields (5)
  • image_height Integer
    compute='_compute_image_size'
  • image_src Char
    compute='_compute_image_src'
  • image_width Integer
    compute='_compute_image_size'
  • local_url Char
    compute='_compute_local_url' args: 'Attachment URL'
  • original_id Many2one → ir.attachment
    index=True string='Original (unoptimized, unresized) attachment' args: 'ir.attachment'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model
  • value_from_string(self, value)

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • get_record_to_html(self, ids, options=None)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values=None)
    @api.model
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (3)
  • from_html(self, model, field, element)
    @api.model
  • load_local_url(self, url)
  • load_remote_url(self, url)

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • save_html(self, value)
    Convert the HTML fragment ``value`` to XML if necessary, and write it as the value of translation ``self``.

New fields (0)

No new fields.

Public methods (13)
  • delete_snippet(self, view_id, template_key)
    @api.model
  • extract_embedded_fields(self, arch)
    @api.model
  • extract_oe_structures(self, arch)
    @api.model
  • get_default_lang_code(self)
    @api.model
  • get_related_views(self, key, bundles=False)
    @api.model
    Get inherit view's informations of the template ``key``. returns templates info (which can be active or not) ``bundles=True`` returns also the asset bundles
  • rename_snippet(self, name, view_id, template_key)
    @api.model
  • replace_arch_section(self, section_xpath, replacement, replace_tail=False)
  • save(self, value, xpath=None)
    Update a view section. The view section may embed fields to write Note that `self` record might not exist when saving an embed field :param str xpath: valid xpath to the tag to replace
  • save_embedded_field(self, el)
    @api.model
  • save_oe_structure(self, el)
  • save_snippet(self, name, arch, template_key, snippet_key, thumbnail_url)
    @api.model
    Saves a new snippet arch so that it appears with the given name when using the given snippets template. :param name: the name of the snippet to save :param arch: the html structure of the snippet to save :param template_key: the key of the view regrouping all snippets in which the snippet to save is meant to appear :param snippet_key: the key (without module part) to identify the snippet from which the snippet to save originates :param thumbnail_url: the url of the thumbnail to use when displaying the snippet to save
  • to_empty_oe_structure(self, el)
    @api.model
  • to_field_ref(self, el)
    @api.model

New fields (0)

No new fields.

Public methods (6)
  • get_all_custom_attachments(self, urls)
    Fetch all the ir.attachment records related to given URLs. Params: urls (str[]): list of urls Returns: ir.attachment(): attachment records related to the given URLs.
  • get_asset_content(self, url, url_info=None, custom_attachments=None)
    Fetch the content of an asset (scss / js) file. That content is either the one of the related file on the disk or the one of the corresponding custom ir.attachment record. Params: url (str): the URL of the asset (scss / js) file/ir.attachment url_info (dict, optional): the related url info (see get_asset_info) (allows to optimize some code which already have the info and do not want this function to re-get it) custom_attachments (ir.attachment(), optional): the related custom ir.attachment records the function might need to search into (allows to optimize some code which already have that info and do not want this function to re-get it) Returns: utf-8 encoded content of the asset (scss / js)
  • get_asset_info(self, url)
    Return information about an asset (scss / js) file/ir.attachment just by looking at its URL. Params: url (str): the url of the asset (scss / js) file/ir.attachment Returns: dict: module (str): the original asset's related app resource_path (str): the relative path to the original asset from the related app customized (bool): whether the asset is a customized one or not bundle (str): the name of the bundle the asset customizes (False if this is not a customized asset)
  • make_custom_asset_file_url(self, url, bundle_xmlid)
    Return the customized version of an asset URL, that is the URL the asset would have if it was customized. Params: url (str): the original asset's url bundle_xmlid (str): the name of the bundle the asset would customize Returns: str: the URL the given asset would have if it was customized in the given bundle
  • reset_asset(self, url, bundle)
    Delete the potential customizations made to a given (original) asset. Params: url (str): the URL of the original asset (scss / js) file bundle (str): the name of the bundle in which the customizations to delete were made
  • save_asset(self, url, bundle, content, file_type)
    Customize the content of a given asset (scss / js). Params: url (src): the URL of the original asset to customize (whether or not the asset was already customized) bundle (src): the name of the bundle in which the customizations will take effect content (src): the new content of the asset (scss / js) file_type (src): either 'scss' or 'js' according to the file being customized

New fields (11)
  • binary Binary
    attachment=False
  • char Char
  • date Date
  • datetime Datetime
  • float Float
  • html Html
  • integer Integer
  • many2one Many2one → web_editor.converter.test.sub
    args: 'web_editor.converter.test.sub'
  • numeric Float
    digits=(16, 2)
  • selection_str Selection
    string="Lorsqu'un pancake prend l'avion à destination de Toronto et qu'il fait une escale technique à St Claude, on dit:" args: [('A', "Qu'il n'est pas arrivé à Toronto"), ('B', "Qu'il était supposé arriver à Toronto"), ('C', "Qu'est-ce qu'il fout ce maudit pancake, tabernacle ?"), ('D', 'La réponse D')]
  • text Text
Public methods (0)

No public methods.

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

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/14.0/web_editor
VERSION
VERSION 0.1.0
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Olivier Dony, Thibault Delavallée, Christophe Simonis, David Monjoie, Xavier Morel, Mohammed Shekha, Nicolas Lempereur, Aaron Bohy, Jeremy Kersten, Damien Bouvy, Yannick Tivisse, qsm-odoo, Romain Derie, Adrien Dieudonne, Julien Castiaux, Antoine Prieels, Xavier-Do, jvm-odoo, Andrea Grazioso (agr-odoo), Nasreddin (bon), alt-odoo, Julien Mougenot, Jason Van Malder, Vincent Schippefilt, fw-bot, Anh Thao Pham (pta), Samuel Degueldre, Achraf (abz), Ivan Yelizariev, Jérémy Hennecart, Nasreddin Boulif (bon), Tiffany Chang (tic), IEL, Thanh Dodeur, fja-odoo, Younn Olivier, Kamen Zhekov, Romain Estievenart, Kevin Baptiste, Benjamin Vray, Kishan Gajjar, Stefan-Calin Crainiciuc (stcc), Benoit Socias, Laurent Desausoi (lade), Guillaume (gdi), jpr-odoo, Sébastien Mottet (oms), Huy Le, Antoine Guenet, Arthur Detroux (ard), Goaman, Laurent Stukkens (LTU), Renaud Thiry, bve-odoo, Tom De Caluwé, Soukéina Bojabza, Robin Lejeune (role), xO-Tx, Louis (loco), Sanket Brahmbhatt, Brieuc-brd, Aurélien MARIE, mega-odoo
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:14:31
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - web
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Odoo Web Editor widget.
==========================

Code Analysis

Views touched (22)
XML IDNameModelTypeStatus
_assets_13_0_color_system_support_primary_variables _assets_13_0_color_system_support_primary_variables ir.ui.view qweb Inherits web_editor._assets_primary_variables
_assets_backend_helpers _assets_backend_helpers ir.ui.view qweb Inherits web._assets_backend_helpers
_assets_frontend_helpers _assets_frontend_helpers ir.ui.view qweb Inherits web._assets_frontend_helpers
_assets_frontend_minimal_js _assets_frontend_minimal_js ir.ui.view qweb Inherits web._assets_frontend_minimal_js
_assets_primary_variables _assets_primary_variables ir.ui.view qweb Inherits web._assets_primary_variables
_assets_secondary_variables _assets_secondary_variables ir.ui.view qweb Inherits web._assets_secondary_variables
assets_backend Web Editor Backend Assets (used in backend interface) ir.ui.view qweb Inherits web.assets_backend
assets_common Web Editor Common Assets (used in backend interface and website) ir.ui.view qweb Inherits web.assets_common
assets_edit_html_field Wysiwyg Editor Assets for html field (style-inline) ir.ui.view qweb New
assets_frontend Web Editor Frontend Assets (used in public odoo) ir.ui.view qweb Inherits web.assets_frontend
assets_summernote Summernote ir.ui.view qweb New
compiled_assets_wysiwyg Wysiwyg Editor ir.ui.view qweb New
qunit_suite qunit_suite ir.ui.view qweb Inherits web.qunit_suite_tests
s_hr Separator ir.ui.view qweb New
snippet_options snippet_options ir.ui.view qweb New
snippet_options_background_color_widget snippet_options_background_color_widget ir.ui.view qweb New
snippet_options_background_options snippet_options_background_options ir.ui.view qweb New
snippet_options_image_optimization_widgets snippet_options_image_optimization_widgets ir.ui.view qweb New
snippets snippets ir.ui.view qweb New
web_editor.assets_wysiwyg Wysiwyg Editor Assets ir.ui.view qweb New
web_editor.colorpicker Color-Picker ir.ui.view qweb New
wysiwyg_iframe_editor_assets Editor assets for wysiwyg iframe content ir.ui.view qweb New
Models touched (23)

New fields (5)
  • image_height Integer
    compute='_compute_image_size'
  • image_src Char
    compute='_compute_image_src'
  • image_width Integer
    compute='_compute_image_size'
  • local_url Char
    compute='_compute_local_url' args: 'Attachment URL'
  • original_id Many2one → ir.attachment
    index=True string='Original (unoptimized, unresized) attachment' args: 'ir.attachment'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model
  • value_from_string(self, value)

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • get_record_to_html(self, ids, options=None)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values=None)
    @api.model
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (3)
  • from_html(self, model, field, element)
    @api.model
  • load_local_url(self, url)
  • load_remote_url(self, url)

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • save_html(self, value)
    Convert the HTML fragment ``value`` to XML if necessary, and write it as the value of translation ``self``.

New fields (0)

No new fields.

Public methods (13)
  • delete_snippet(self, view_id, template_key)
    @api.model
  • extract_embedded_fields(self, arch)
    @api.model
  • extract_oe_structures(self, arch)
    @api.model
  • get_default_lang_code(self)
    @api.model
  • get_related_views(self, key, bundles=False)
    @api.model
    Get inherit view's informations of the template ``key``. returns templates info (which can be active or not) ``bundles=True`` returns also the asset bundles
  • read_template(self, xml_id)
    @api.model
    This method is deprecated
  • replace_arch_section(self, section_xpath, replacement, replace_tail=False)
  • save(self, value, xpath=None)
    Update a view section. The view section may embed fields to write Note that `self` record might not exist when saving an embed field :param str xpath: valid xpath to the tag to replace
  • save_embedded_field(self, el)
    @api.model
  • save_oe_structure(self, el)
  • save_snippet(self, name, arch, template_key, snippet_key, thumbnail_url)
    @api.model
    Saves a new snippet arch so that it appears with the given name when using the given snippets template. :param name: the name of the snippet to save :param arch: the html structure of the snippet to save :param template_key: the key of the view regrouping all snippets in which the snippet to save is meant to appear :param snippet_key: the key (without module part) to identify the snippet from which the snippet to save originates :param thumbnail_url: the url of the thumbnail to use when displaying the snippet to save
  • to_empty_oe_structure(self, el)
    @api.model
  • to_field_ref(self, el)
    @api.model

New fields (0)

No new fields.

Public methods (6)
  • get_all_custom_attachments(self, urls)
    Fetch all the ir.attachment records related to given URLs. Params: urls (str[]): list of urls Returns: ir.attachment(): attachment records related to the given URLs.
  • get_asset_content(self, url, url_info=None, custom_attachments=None)
    Fetch the content of an asset (scss / js) file. That content is either the one of the related file on the disk or the one of the corresponding custom ir.attachment record. Params: url (str): the URL of the asset (scss / js) file/ir.attachment url_info (dict, optional): the related url info (see get_asset_info) (allows to optimize some code which already have the info and do not want this function to re-get it) custom_attachments (ir.attachment(), optional): the related custom ir.attachment records the function might need to search into (allows to optimize some code which already have that info and do not want this function to re-get it) Returns: utf-8 encoded content of the asset (scss / js)
  • get_asset_info(self, url)
    Return information about an asset (scss / js) file/ir.attachment just by looking at its URL. Params: url (str): the url of the asset (scss / js) file/ir.attachment Returns: dict: module (str): the original asset's related app resource_path (str): the relative path to the original asset from the related app customized (bool): whether the asset is a customized one or not bundle (str): the name of the bundle the asset customizes (False if this is not a customized asset)
  • make_custom_asset_file_url(self, url, bundle_xmlid)
    Return the customized version of an asset URL, that is the URL the asset would have if it was customized. Params: url (str): the original asset's url bundle_xmlid (str): the name of the bundle the asset would customize Returns: str: the URL the given asset would have if it was customized in the given bundle
  • reset_asset(self, url, bundle_xmlid)
    Delete the potential customizations made to a given (original) asset. Params: url (str): the URL of the original asset (scss / js) file bundle_xmlid (str): the name of the bundle in which the customizations to delete were made
  • save_asset(self, url, bundle_xmlid, content, file_type)
    Customize the content of a given asset (scss / js). Params: url (src): the URL of the original asset to customize (whether or not the asset was already customized) bundle_xmlid (src): the name of the bundle in which the customizations will take effect content (src): the new content of the asset (scss / js) file_type (src): either 'scss' or 'js' according to the file being customized

New fields (11)
  • binary Binary
    attachment=False
  • char Char
  • date Date
  • datetime Datetime
  • float Float
  • html Html
  • integer Integer
  • many2one Many2one → web_editor.converter.test.sub
    args: 'web_editor.converter.test.sub'
  • numeric Float
    digits=(16, 2)
  • selection_str Selection
    string="Lorsqu'un pancake prend l'avion à destination de Toronto et qu'il fait une escale technique à St Claude, on dit:" args: [('A', "Qu'il n'est pas arrivé à Toronto"), ('B', "Qu'il était supposé arriver à Toronto"), ('C', "Qu'est-ce qu'il fout ce maudit pancake, tabernacle ?"), ('D', 'La réponse D')]
  • text Text
Public methods (0)

No public methods.

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

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/13.0/web_editor
VERSION
VERSION 0.1.0
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Christophe Matthieu, Martin Trigaux, Olivier Dony, Denis Ledoux, Christophe Simonis, David Monjoie, Xavier Morel, Nicolas Martinelli, Nicolas Lempereur, Géry Debongnie, Aaron Bohy, Jeremy Kersten, Yannick Tivisse, qsm-odoo, Martin Geubelle, Odoo Online, Romain Derie, Adrien Dieudonne, RomainLibert, Jorge Pinna Puissant, Jairo Llopis, Adrian Torres, Antoine Prieels, Xavier-Do, jvm-odoo, Victor Feyens, Andrea Grazioso (agr-odoo), Sébastien Theys, Nasreddin (bon), alt-odoo, Jason Van Malder, Vincent Schippefilt, fw-bot, Anh Thao Pham (pta), Samuel Degueldre, Nasreddin Boulif (bon), IEL, Thanh Dodeur, Gorash, fja-odoo, Younn Olivier, Pierre Paridans, Kamen Zhekov, Romain Estievenart, Benjamin Vray, Kishan Gajjar, Benoit Socias, Geoffroy Larue, Laurent Desausoi (lade), jpr-odoo, Antoine Guenet, Arthur Detroux (ard), Goaman
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:06:44
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - web
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Odoo Web Editor widget.
==========================

Code Analysis

Views touched (17)
XML IDNameModelTypeStatus
_assets_backend_helpers _assets_backend_helpers ir.ui.view qweb Inherits web._assets_backend_helpers
_assets_frontend_helpers _assets_frontend_helpers ir.ui.view qweb Inherits web._assets_frontend_helpers
_assets_frontend_minimal_js _assets_frontend_minimal_js ir.ui.view qweb Inherits web._assets_frontend_minimal_js
_assets_primary_variables _assets_primary_variables ir.ui.view qweb Inherits web._assets_primary_variables
_assets_secondary_variables _assets_secondary_variables ir.ui.view qweb Inherits web._assets_secondary_variables
assets_backend Web Editor Backend Assets (used in backend interface) ir.ui.view qweb Inherits web.assets_backend
assets_common Web Editor Common Assets (used in backend interface and website) ir.ui.view qweb Inherits web.assets_common
assets_frontend Web Editor Frontend Assets (used in public odoo) ir.ui.view qweb Inherits web.assets_frontend
assets_wysiwyg Wysiwyg Editor Assets ir.ui.view qweb New
compiled_assets_wysiwyg Wysiwyg Editor ir.ui.view qweb New
qunit_suite qunit_suite ir.ui.view qweb Inherits web.qunit_suite
s_hr Separator ir.ui.view qweb New
snippet_options snippet_options ir.ui.view qweb New
snippets snippets ir.ui.view qweb New
summernote Summernote ir.ui.view qweb New
web_editor.colorpicker Color-Picker ir.ui.view qweb New
wysiwyg_iframe_editor_assets Editor assets for wysiwyg iframe content ir.ui.view qweb New
Models touched (23)

New fields (4)
  • image_height Integer
    compute='_compute_image_size'
  • image_src Char
    compute='_compute_image_src'
  • image_width Integer
    compute='_compute_image_size'
  • local_url Char
    compute='_compute_local_url' args: 'Attachment URL'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model
  • value_from_string(self, value)

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • get_record_to_html(self, ids, options=None)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values=None)
    @api.model
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (3)
  • from_html(self, model, field, element)
    @api.model
  • load_local_url(self, url)
  • load_remote_url(self, url)

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • save_html(self, value)
    Convert the HTML fragment ``value`` to XML if necessary, and write it as the value of translation ``self``.

New fields (0)

No new fields.

Public methods (11)
  • extract_embedded_fields(self, arch)
    @api.model
  • extract_oe_structures(self, arch)
    @api.model
  • get_default_lang_code(self)
    @api.model
  • get_related_views(self, key, bundles=False)
    @api.model
    Get inherit view's informations of the template ``key``. returns templates info (which can be active or not) ``bundles=True`` returns also the asset bundles
  • render(self, values=None, engine='ir.qweb', minimal_qcontext=False)
  • replace_arch_section(self, section_xpath, replacement, replace_tail=False)
  • save(self, value, xpath=None)
    Update a view section. The view section may embed fields to write Note that `self` record might not exist when saving an embed field :param str xpath: valid xpath to the tag to replace
  • save_embedded_field(self, el)
    @api.model
  • save_oe_structure(self, el)
  • to_empty_oe_structure(self, el)
    @api.model
  • to_field_ref(self, el)
    @api.model

New fields (0)

No new fields.

Public methods (6)
  • get_all_custom_attachments(self, urls)
    Fetch all the ir.attachment records related to given URLs. Params: urls (str[]): list of urls Returns: ir.attachment(): attachment records related to the given URLs.
  • get_asset_content(self, url, url_info=None, custom_attachments=None)
    Fetch the content of an asset (scss / js) file. That content is either the one of the related file on the disk or the one of the corresponding custom ir.attachment record. Params: url (str): the URL of the asset (scss / js) file/ir.attachment url_info (dict, optional): the related url info (see get_asset_info) (allows to optimize some code which already have the info and do not want this function to re-get it) custom_attachments (ir.attachment(), optional): the related custom ir.attachment records the function might need to search into (allows to optimize some code which already have that info and do not want this function to re-get it) Returns: utf-8 encoded content of the asset (scss / js)
  • get_asset_info(self, url)
    Return information about an asset (scss / js) file/ir.attachment just by looking at its URL. Params: url (str): the url of the asset (scss / js) file/ir.attachment Returns: dict: module (str): the original asset's related app resource_path (str): the relative path to the original asset from the related app customized (bool): whether the asset is a customized one or not bundle (str): the name of the bundle the asset customizes (False if this is not a customized asset)
  • make_custom_asset_file_url(self, url, bundle_xmlid)
    Return the customized version of an asset URL, that is the URL the asset would have if it was customized. Params: url (str): the original asset's url bundle_xmlid (str): the name of the bundle the asset would customize Returns: str: the URL the given asset would have if it was customized in the given bundle
  • reset_asset(self, url, bundle_xmlid)
    Delete the potential customizations made to a given (original) asset. Params: url (str): the URL of the original asset (scss / js) file bundle_xmlid (str): the name of the bundle in which the customizations to delete were made
  • save_asset(self, url, bundle_xmlid, content, file_type)
    Customize the content of a given asset (scss / js). Params: url (src): the URL of the original asset to customize (whether or not the asset was already customized) bundle_xmlid (src): the name of the bundle in which the customizations will take effect content (src): the new content of the asset (scss / js) file_type (src): either 'scss' or 'js' according to the file being customized

New fields (11)
  • binary Binary
    attachment=False
  • char Char
  • date Date
  • datetime Datetime
  • float Float
  • html Html
  • integer Integer
  • many2one Many2one → web_editor.converter.test.sub
    args: 'web_editor.converter.test.sub'
  • numeric Float
    digits=(16, 2)
  • selection_str Selection
    string="Lorsqu'un pancake prend l'avion à destination de Toronto et qu'il fait une escale technique à St Claude, on dit:" args: [('A', "Qu'il n'est pas arrivé à Toronto"), ('B', "Qu'il était supposé arriver à Toronto"), ('C', "Qu'est-ce qu'il fout ce maudit pancake, tabernacle ?"), ('D', 'La réponse D')]
  • text Text
Public methods (0)

No public methods.

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

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/12.0/web_editor
VERSION
VERSION 0.1.0
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Christophe Matthieu, Martin Trigaux, Olivier Dony, Thibault Delavallée, Denis Ledoux, Christophe Simonis, Xavier Morel, Nicolas Lempereur, Géry Debongnie, Aaron Bohy, Jeremy Kersten, GitHub, Lucas Perais (lpe), Yannick Tivisse, Alexandre Kühn, qsm-odoo, Romain Derie, Christophe Monniez, len-odoo, Jorge Pinna Puissant, Alexandre Kühn, Julien Castiaux, Antoine Prieels, Xavier-Do, jvm-odoo, Andrea Grazioso (agr-odoo), Nasreddin (bon), Jason Van Malder, Vincent Schippefilt, fw-bot, Samuel Degueldre, Quentin Smetz (qsm), Gorash, fja-odoo, Kamen Zhekov, Benjamin Vray, Kishan Gajjar
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:57:02
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - web
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Odoo Web Editor widget.
==========================

Code Analysis

Views touched (16)
XML IDNameModelTypeStatus
FieldTextHtml Editor HTML ir.ui.view qweb New
_assets_backend_helpers _assets_backend_helpers ir.ui.view qweb Inherits web._assets_backend_helpers
_assets_frontend_helpers _assets_frontend_helpers ir.ui.view qweb Inherits web._assets_frontend_helpers
_assets_primary_variables _assets_primary_variables ir.ui.view qweb Inherits web._assets_primary_variables
assets_backend Web Editor Backend Assets (used in backend interface) ir.ui.view qweb Inherits web.assets_backend
assets_common Web Editor Common Assets (used in backend interface and website) ir.ui.view qweb Inherits web.assets_common
assets_editor Web Editor Assets (used in private and public editor) ir.ui.view qweb New
assets_frontend Web Editor Frontend Assets (used in public odoo) ir.ui.view qweb Inherits web.assets_frontend
js_tests_assets js_tests_assets ir.ui.view qweb Inherits web.js_tests_assets
layout Editor layout ir.ui.view qweb New
qunit_suite qunit_suite ir.ui.view qweb Inherits web.qunit_suite
snippet_options snippet_options ir.ui.view qweb New
snippets snippets ir.ui.view qweb New
summernote Summernote ir.ui.view qweb New
web_editor.colorpicker Color-Picker ir.ui.view qweb New
webclient_bootstrap webclient_bootstrap ir.ui.view qweb Inherits web.webclient_bootstrap
Models touched (22)

New fields (1)
  • local_url Char
    compute='_compute_local_url' args: 'Attachment URL'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model
  • value_from_string(self, value)

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • get_record_to_html(self, ids, options=None)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (3)
  • from_html(self, model, field, element)
    @api.model
  • load_local_url(self, url)
  • load_remote_url(self, url)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • save_html(self, value)
    @api.multi
    Convert the HTML fragment ``value`` to XML if necessary, and write it as the value of translation ``self``.

New fields (0)

No new fields.

Public methods (11)
  • extract_embedded_fields(self, arch)
    @api.model
  • extract_oe_structures(self, arch)
    @api.model
  • get_default_lang_code(self)
    @api.model
  • get_related_views(self, key, bundles=False)
    @api.model
    Get inherit view's informations of the template ``key``. returns templates info (which can be active or not) ``bundles=True`` returns also the asset bundles
  • render(self, values=None, engine='ir.qweb', minimal_qcontext=False)
    @api.multi
  • replace_arch_section(self, section_xpath, replacement, replace_tail=False)
    @api.multi
  • save(self, value, xpath=None)
    @api.multi
    Update a view section. The view section may embed fields to write Note that `self` record might not exist when saving an embed field :param str xpath: valid xpath to the tag to replace
  • save_embedded_field(self, el)
    @api.model
  • save_oe_structure(self, el)
    @api.multi
  • to_empty_oe_structure(self, el)
    @api.model
  • to_field_ref(self, el)
    @api.model

New fields (12)
  • binary Binary
  • char Char
  • date Date
  • datetime Datetime
  • float Float
  • html Html
  • integer Integer
  • many2one Many2one → web_editor.converter.test.sub
    args: 'web_editor.converter.test.sub'
  • numeric Float
    digits=(16, 2)
  • selection Selection
    args: [(1, 'réponse A'), (2, 'réponse B'), (3, 'réponse C'), (4, 'réponse <D>')]
  • selection_str Selection
    string="Lorsqu'un pancake prend l'avion à destination de Toronto et qu'il fait une escale technique à St Claude, on dit:" args: [('A', "Qu'il n'est pas arrivé à Toronto"), ('B', "Qu'il était supposé arriver à Toronto"), ('C', "Qu'est-ce qu'il fout ce maudit pancake, tabernacle ?"), ('D', 'La réponse D')]
  • text Text
Public methods (0)

No public methods.

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

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/11.0/web_editor
VERSION
VERSION 0.1.0
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Christophe Matthieu, Martin Trigaux, Fabien Pinckaers, Olivier Dony, Thibault Delavallée, Christophe Simonis, Xavier Morel, Joren Van Onder, Mohammed Shekha, Nicolas Martinelli, Nicolas Lempereur, Géry Debongnie, Aaron Bohy, ged-odoo, Jeremy Kersten, GitHub, Lucas Perais (lpe), Yannick Tivisse, Alexandre Kühn, qsm-odoo, Martin Geubelle, Odoo Online, Romain Derie, fwi-odoo, Adrien Dieudonne, len-odoo, Julien (juc) Castiaux, Jorge Pinna Puissant, Lucas Perais, Moens Alexandre, Antoine Prieels, jvm-odoo, Samuel Degueldre
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:53:44
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - web
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Odoo Web Editor widget.
==========================

Code Analysis

Views touched (14)
XML IDNameModelTypeStatus
FieldTextHtml Editor HTML ir.ui.view qweb New
assets_backend Web Editor Backend Assets (used in backend interface) ir.ui.view qweb Inherits web.assets_backend
assets_common Web Editor Common Assets (used in backend interface and website) ir.ui.view qweb Inherits web.assets_common
assets_editor Web Editor Assets (used in private and public editor) ir.ui.view qweb New
assets_frontend Web Editor Frontend Assets (used in public odoo) ir.ui.view qweb Inherits web.assets_frontend
js_tests_assets js_tests_assets ir.ui.view qweb Inherits web.js_tests_assets
layout Editor layout ir.ui.view qweb New
less_helpers less_helpers ir.ui.view qweb Inherits web.less_helpers
qunit_suite qunit_suite ir.ui.view qweb Inherits web.qunit_suite
snippet_options snippet_options ir.ui.view qweb New
snippets snippets ir.ui.view qweb New
summernote Summernote ir.ui.view qweb New
web_editor.colorpicker Color-Picker ir.ui.view qweb New
webclient_bootstrap webclient_bootstrap ir.ui.view qweb Inherits web.webclient_bootstrap
Models touched (22)

New fields (1)
  • local_url Char
    compute='_compute_local_url' args: 'Attachment URL'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model
  • value_from_string(self, value)

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • get_record_to_html(self, ids, options=None)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (3)
  • from_html(self, model, field, element)
    @api.model
  • load_local_url(self, url)
  • load_remote_url(self, url)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • save_html(self, value)
    @api.multi
    Convert the HTML fragment ``value`` to XML if necessary, and write it as the value of translation ``self``.

New fields (0)

No new fields.

Public methods (8)
  • extract_embedded_fields(self, arch)
    @api.model
  • get_default_lang_code(self)
    @api.model
  • get_related_views(self, key, bundles=False)
    @api.model
    Get inherit view's informations of the template ``key``. returns templates info (which can be active or not) ``bundles=True`` returns also the asset bundles
  • render(self, values=None, engine='ir.qweb')
    @api.multi
  • replace_arch_section(self, section_xpath, replacement)
    @api.multi
  • save(self, value, xpath=None)
    @api.multi
    Update a view section. The view section may embed fields to write :param str xpath: valid xpath to the tag to replace
  • save_embedded_field(self, el)
    @api.model
  • to_field_ref(self, el)
    @api.model

New fields (12)
  • binary Binary
  • char Char
  • date Date
  • datetime Datetime
  • float Float
  • html Html
  • integer Integer
  • many2one Many2one → web_editor.converter.test.sub
    args: 'web_editor.converter.test.sub'
  • numeric Float
    digits=(16, 2)
  • selection Selection
    args: [(1, 'réponse A'), (2, 'réponse B'), (3, 'réponse C'), (4, 'réponse <D>')]
  • selection_str Selection
    string="Lorsqu'un pancake prend l'avion à destination de Toronto et qu'il fait une escale technique à St Claude, on dit:" args: [('A', "Qu'il n'est pas arrivé à Toronto"), ('B', "Qu'il était supposé arriver à Toronto"), ('C', "Qu'est-ce qu'il fout ce maudit pancake, tabernacle ?"), ('D', 'La réponse D')]
  • text Text
Public methods (0)

No public methods.

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

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/10.0/web_editor
VERSION
VERSION 0.1.0
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Christophe Matthieu, Martin Trigaux, Fabien Pinckaers, Olivier Dony, Thibault Delavallée, Denis Ledoux, Christophe Simonis, Goffin Simon, Simon Lejeune, Nicolas Martinelli, Nicolas Lempereur, Julien Legros, qdp-odoo, Géry Debongnie, ged-odoo, Jeremy Kersten, Lucas Perais (lpe), Yannick Tivisse, qsm-odoo, Martin Geubelle, Romain Derie, fwi-odoo, Priyanka Kakadiya
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:50:49
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - web
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Odoo Web Editor widget.
==========================

Code Analysis

Views touched (13)
XML IDNameModelTypeStatus
FieldTextHtml Editor HTML ir.ui.view qweb New
assets_backend web_editor assets for backend ir.ui.view qweb Inherits web.assets_backend
assets_common web_editor base assets_common ir.ui.view qweb Inherits web.assets_common
assets_editor Full web_editor assets ir.ui.view qweb New
assets_frontend assets_frontend ir.ui.view qweb Inherits web.assets_frontend
layout Editor layout ir.ui.view qweb New
less_helpers less_helpers ir.ui.view qweb Inherits web.less_helpers
qunit_suite qunit_suite ir.ui.view qweb Inherits web.qunit_suite
snippet_options snippet_options ir.ui.view qweb New
snippets snippets ir.ui.view qweb New
summernote Summernote ir.ui.view qweb New
web_editor.colorpicker Color-Picker ir.ui.view qweb New
webclient_bootstrap webclient_bootstrap ir.ui.view qweb Inherits web.webclient_bootstrap
Models touched (22)

New fields (1)
  • local_url Char
    compute='_compute_local_url' args: 'Attachment URL'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model
  • value_from_string(self, value)

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • get_record_to_html(self, ids, options=None)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (4)
  • from_html(self, model, field, element)
    @api.model
  • load_local_url(self, url)
  • load_remote_url(self, url)
  • record_to_html(self, record, field_name, options)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, record, field_name, options, values)
    @api.model
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, model, field, element)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • save_html(self, value)
    @api.multi
    Convert the HTML fragment ``value`` to XML if necessary, and write it as the value of translation ``self``.

New fields (0)

No new fields.

Public methods (8)
  • customize_template_get(self, key, full=False, bundles=False)
    @api.model
    Get inherit view's informations of the template ``key``. returns templates info (which can be active or not) ``bundles=True`` returns also the asset bundles
  • extract_embedded_fields(self, arch)
    @api.model
  • get_default_lang_code(self)
    @api.model
  • render(self, values=None, engine='ir.qweb')
    @api.multi
  • replace_arch_section(self, section_xpath, replacement)
    @api.multi
  • save(self, value, xpath=None)
    @api.multi
    Update a view section. The view section may embed fields to write :param str xpath: valid xpath to the tag to replace
  • save_embedded_field(self, el)
    @api.model
  • to_field_ref(self, el)
    @api.model

New fields (12)
  • binary Binary
  • char Char
  • date Date
  • datetime Datetime
  • float Float
  • html Html
  • integer Integer
  • many2one Many2one → web_editor.converter.test.sub
    args: 'web_editor.converter.test.sub'
  • numeric Float
    digits=(16, 2)
  • selection Selection
    args: [(1, 'réponse A'), (2, 'réponse B'), (3, 'réponse C'), (4, 'réponse <D>')]
  • selection_str Selection
    string="Lorsqu'un pancake prend l'avion à destination de Toronto et qu'il fait une escale technique à St Claude, on dit:" args: [('A', "Qu'il n'est pas arrivé à Toronto"), ('B', "Qu'il était supposé arriver à Toronto"), ('C', "Qu'est-ce qu'il fout ce maudit pancake, tabernacle ?"), ('D', 'La réponse D')]
  • text Text
Public methods (0)

No public methods.

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

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/9.0/web_editor
VERSION
VERSION 0.1.0
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Christophe Matthieu, Martin Trigaux, Antony Lesuisse, Olivier Dony, Denis Ledoux, Christophe Simonis, David Monjoie, Simon Lejeune, Nicolas Martinelli, Nicolas Lempereur, xmo-odoo, Géry Debongnie, Aaron Bohy, Jeremy Kersten, Lucas Perais (lpe), Damien Bouvy, Yannick Tivisse, qsm-odoo, Romain Derie, Adrien Dieudonne
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:48:31
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - web
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Odoo Web Editor widget.
==========================

Code Analysis

Views touched (10)
XML IDNameModelTypeStatus
FieldTextHtml Editor HTML ir.ui.view qweb New
assets_backend web_editor assets for backend ir.ui.view qweb Inherits web.assets_backend
assets_common web_editor base assets_common ir.ui.view qweb Inherits web.assets_common
assets_editor web_editor assets for editor ir.ui.view qweb New
editor Editor ir.ui.view qweb New
layout Editor layout ir.ui.view qweb New
snippet_options snippet_options ir.ui.view qweb New
snippets snippets ir.ui.view qweb New
summernote Summernote ir.ui.view qweb New
web_editor.colorpicker Color-Picker ir.ui.view qweb New
Models touched (20)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • get_converter_for(self, field_type)
  • render_tag_snippet(self, element, template_attributes, generated_attributes, qwebcontext)

New fields (0)

No new fields.

Public methods (4)
  • attributes(self, cr, uid, field_name, record, options, source_element, g_att, t_att, qweb_context, context=None)
  • from_html(self, cr, uid, model, field, element, context=None)
  • qweb_object(self)
  • value_from_string(self, value)

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, cr, uid, field_name, record, options, source_element, g_att, t_att, qweb_context, context=None)
  • get_record_to_html(self, cr, uid, ids, options=None, context=None)

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, cr, uid, field_name, record, options, source_element, g_att, t_att, qweb_context, context=None)
  • from_html(self, cr, uid, model, field, element, context=None)

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, cr, uid, field_name, record, options, source_element, g_att, t_att, qweb_context, context=None)
  • from_html(self, cr, uid, model, field, element, context=None)

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, cr, uid, field_name, record, options, source_element, g_att, t_att, qweb_context, context=None)
  • from_html(self, cr, uid, model, field, element, context=None)

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, cr, uid, model, field, element, context=None)

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, cr, uid, model, field, element, context=None)

New fields (0)

No new fields.

Public methods (5)
  • from_html(self, cr, uid, model, field, element, context=None)
  • load_local_url(self, url)
  • load_remote_url(self, url)
  • record_to_html(self, cr, uid, field_name, record, options=None, context=None)
  • to_html(self, cr, uid, field_name, record, options, source_element, t_att, g_att, qweb_context, context=None)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • attributes(self, cr, uid, field_name, record, options, source_element, g_att, t_att, qweb_context, context=None)
  • from_html(self, cr, uid, model, field, element, context=None)

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, cr, uid, model, field, element, context=None)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, cr, uid, model, field, element, context=None)

New fields (0)

No new fields.

Public methods (1)
  • from_html(self, cr, uid, model, field, element, context=None)

New fields (0)

No new fields.

Public methods (1)
  • save_html(self, value)
    @api.multi
    Convert the HTML fragment ``value`` to XML if necessary, and write it as the value of translation ``self``.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.