Web

web
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/19.0/web
VERSION
VERSION 1.0
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORSOdoo S.A.
MAINTAINERS
MAINTAINERSOdoo S.A.
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Olivier Dony, Thibault Delavallée, Denis Ledoux, David Monjoie, Xavier Morel, Joren Van Onder, Nicolas Martinelli, Nicolas Lempereur, qdp-odoo, Géry Debongnie, Aaron Bohy, Lucas Perais (lpe), Yannick Tivisse, qsm-odoo, Laurent Smet, Adrien Dieudonne, Christophe Monniez, Jorge Pinna Puissant, Lucas Perais, Alexandre Kühn, Arnold Moyaux, Julien Castiaux, Xavier-Do, Romeo Fragomeli, Victor Feyens, Andrea Grazioso (agr-odoo), Adrien Dieudonné, Paul Morelle, Sébastien Theys, Julien Mougenot, Anh Thao Pham (pta), svs-odoo, Samuel Degueldre, std-odoo, Achraf (abz), Nasreddin Boulif (bon), Prakash Prajapati, Tiffany Chang (tic), Rémy Voet (ryv), Pierre Rousseau, Gorash, Mathieu Duckerts-Antoine, Pierre Paridans, abd-msyukyu-odoo, William Braeckman, bit-odoo, Romain Estievenart, Benjamin Vray, Benoit Socias, Stanislas Sobieski, Sylvain Francis, william-andre, JF Aubert, yhu-odoo, Didier (did), Antoine Guenet, Florian Charlier, Patrick Hoste, Abdelouahab (abla), Florian Gilbert, Hubert Van De Walle, Mathieu Walravens, luvi, Valentin Chevalier, Renaud Thiry, Julien Banken, Vincent Larcin, niyasraphy, Iván Todorovich, Habib (ayh), Thomas Lefebvre (thle), alsh-odoo, Gaetan Vanden Bergh (gavb), Pedram (PEBR), Louis Wicket (wil), tsm-odoo, Laurent Desausoi, Maximilien (malb), Victor Piryns (pivi), Julien (jula), Mahamadasif Ansari, Thomas Becquevort (thbe), amdi-odoo, Pierre-Yves Dufays, Pieter Claeys (clpi), Robin Lejeune (role), Louis (loco), Levi Siuzdak (sile), Maruan Aguerdouh (magm), Dylan Kiss (dyki), Paolo Gatti, Bruno Boi, FrancoisGe, Valeriya(vchu), Mayurrajsinh Rathod, Rahul Prajapati, Chong Wang (cwg), Simon Goffaux (sigo), Vivek Pathak, Adrien Schoffeniels, bram1000, Martin Maes, Xavier Bol (xbo), Brieuc-brd, micheledic, Louis Travaux, Arnaud Sibille, Mahdi Cheikh Rouhou (macr), omra-odoo, Zelong Lin, rajh-odoo, shag-odoo, Walid (wasa), maad-odoo, Deependra Solanki, aktr-odoo, Mattis Megevand, lase@odoo.com, Maryam Kia, Maxime de Neuville, Mehdi Outagant (MOU), reka-odoo, “Beekan”, Bruno Boi (boi), Bastien Fafchamps (bafa), Julien Carion (juca), dhba, adsh-odoo, mega, Tanguy Quéguineur, TSO, Alex Kühn, SaddemAmine, Ritika Rathore, Lina (liew), nihp-odoo, Chrysanthe (chgo), Adnan Saiyed, adch-odoo, sami odoo, mano-odoo, Sanjay Sharma, Joseph (jcb), Max Whale, Hussein Ebrahim(hyhe), Loukas Wets (lowe), Mathieu Coutant, Xavier Luyckx (xlu), guce, yagp-odoo, Abdelrahman Mahmoud (amah), Stéphane Diez, kawkb, Antoine (anso), sabr, Manushi Shah, Abdo Mongy, Léo Gizard, paru-odoo, Sébastien (blse), LauraCForgeFlow, Pierre Pulinckx (PIPU), Arib Ansari, Hesham Saleh, David Monnom, Victor Miguel Armenta Carrillo, AhmedElemary57, sben-odoo, gvar-odoo, Trinh Ngoc Hung, Maira Salazar (srma), abdelrahmanfawzy, Christopher Maloney (cmal), David Van Droogenbroeck (DROD), Chris Duvivier, Mohammad Abdulmoneim (abdu), djameltouati, khsr-odoo, Lucas Lefèvre (lul), Rémi Rahir (rar), Pierre Lamotte (pila), wt, Michaël Mattiello, Pierre Pulinckx, fdardenne, Bastien PIERRE, Anton Romanova (roan), K Theja (kthe), Corentin Heinix (cohe), zel-odoo, Carmine, pish-odoo, lse-odoo, Thomas Josse (THJO), Krzysztof Magusiak (krma), kkuj-odoo, Ajit Singh, yavy-odoo, Ricard Calvo, krip-odoo, Hazem Ibrahim, Basioni (basm), Sylvio Poliart (sypol), Hadi El Yakhni, vlst-odoo, kdes-odoo, Meet Jivani [MEJI], vpan-odoo, nsirjacobs, mjvi-odoo, Gurpreet Singh, bhra-odoo, bhna-odoo, mojem, Dirk Douglas, Giorgio Tocco (gito), Ayush Chauhan (aych), akha, MAGREMENT, sawer, igbe, Tudor-Calin Panzaru (tupan), aans-odoo, rusp-odoo, alap-odoo, Alessandro Lupo, Julien Launois (jula), Laetitia (ldau), Augustin (duau), romo, Serhii Rubanskyi, adip-odoo, macs-odoo, suju-odoo, ramh, leclerc-leo, Saurabh, Amr Elkhatieb, dhrp-odoo, Nisarg (nipl), Robert Smith (rosm), assh-odoo, Elliot ELCO, cro, Beekoan, Bruno BOI, Lionel Piraux (lipi), Kevin Gerard (kege), nmak-odoo, pmah-odoo, Benoit Socias (bso), Waleed Elgamal, Maxime de Neuville (mane), Aurélien Bertrand, damrOdoo, Sébastien Geelen, saurabh, Omar Khalil (omkha), sbbh-odoo, Eve Lin (evlin), zadh-odoo, Stephane Vanmeerhaeghe (stva), lebm-odoo, alan-odoo, Romaric MOYEUVRE, Julien (jdeh), ibo-odoo, raja prasad, jowes-odoo, Farah (ahmfa), akth-odoo, Nikhil Kajavadra, ELCO, Thomas des Touches, Takahiro SUNAGA, MostafaTwfiq, Julien Carion, karygauss03, maap-odoo, Guillaume Jacquet, Oussema Heni, Claire Nguyen (clan), Dylan Provoost, mear-odoo, Kai (kache), Ziri, Dhrumit Parmar, FedericoBraidi, Marceline (matho), Julien Coppin (jucop), Vedant Pandey (vpan-odoo)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 14:10:19
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Odoo Web core module.
========================

This module provides the core of the Odoo Web Client.

Code Analysis

Views touched (42)
XML IDNameModelTypeStatus
address_layout address_layout ir.ui.view qweb New
basic_layout basic_layout ir.ui.view qweb New
brand_promotion Brand Promotion ir.ui.view qweb New
brand_promotion_message Brand Promotion Message ir.ui.view qweb New
conditional_assets_tests Tests Assets Bundle ir.ui.view qweb New
config_speedscope_index config_speedscope_index ir.ui.view qweb New
external_layout external_layout ir.ui.view qweb New
external_layout_bold external_layout_bold ir.ui.view qweb New
external_layout_boxed external_layout_boxed ir.ui.view qweb New
external_layout_bubble external_layout_bubble ir.ui.view qweb New
external_layout_folder external_layout_folder ir.ui.view qweb New
external_layout_standard external_layout_standard ir.ui.view qweb New
external_layout_striped external_layout_striped ir.ui.view qweb New
external_layout_wave external_layout_wave ir.ui.view qweb New
html_container html_container ir.ui.view qweb New
html_preview_container html_preview_container ir.ui.view qweb New
internal_layout internal_layout ir.ui.view qweb New
minimal_layout minimal_layout ir.ui.view qweb New
preview_externalreport preview_externalreport ir.ui.view qweb New
preview_internalreport preview_internalreport ir.ui.view qweb New
preview_layout_report preview_layout_report ir.ui.view qweb New
report_invoice_wizard_preview report_invoice_wizard_preview ir.ui.view qweb New
report_layout Report layout ir.ui.view qweb New
report_preview_layout Report layout ir.ui.view qweb New
styles_company_report styles_company_report ir.ui.view qweb New
view_base_document_layout Document Layout base.document.layout form New
view_memory view_memory ir.ui.view qweb New
view_speedscope_index view_speedscope_index ir.ui.view qweb New
view_view_form_inherit_view ir.ui.view.form.inherit ir.ui.view xpath Inherits base.view_view_form
web.frontend_layout Frontend Layout ir.ui.view qweb Inherits web.layout
web.layout Web layout ir.ui.view qweb New
web.login Login ir.ui.view qweb New
web.login_layout Login Layout ir.ui.view qweb New
web.login_oauth Login OAuth ir.ui.view qweb New
web.login_successful Login successful ir.ui.view qweb New
web.neutralize_banner Neutralize Banner ir.ui.view qweb Inherits web.layout
web.qunit_suite web.qunit_suite ir.ui.view qweb New
web.test_helpers web.test_helpers ir.ui.view qweb New
web.unit_tests_suite web.unit_tests_suite ir.ui.view qweb New
web.webclient_bootstrap web.webclient_bootstrap ir.ui.view qweb New
webclient_offline webclient_offline ir.ui.view qweb New
webclient_scoped_app webclient_scoped_app ir.ui.view qweb New
Models touched (15)

New fields (0)

No new fields.

Public methods (14)
  • formatted_read_group(self, domain: DomainType, groupby: <expr>=(), aggregates: <expr>=(), having: DomainType=(), offset: int=0, limit: <expr>=None, order: <expr>=None) -> <expr>
    @api.model@api.readonly
    A method similar to :meth:`_read_group` but with all the formatting needed by the webclient. :param domain: :ref:`A search domain <reference/orm/domains>`. Use an empty list to match all records. :param groupby: list of groupby descriptions by which the records will be grouped. A groupby description is either a field (then it will be grouped by that field) or a string ``'<field>:<granularity>'``. Right now, the only supported granularities are: * ``day`` * ``week`` * ``month`` * ``quarter`` * ``year`` and they only make sense for date/datetime fields. Additionally integer date parts are also supported: * ``year_number`` * ``quarter_number`` * ``month_number`` * ``iso_week_number`` * ``day_of_year`` * ``day_of_month`` * ``day_of_week`` * ``hour_number`` * ``minute_number`` * ``second_number`` :param aggregates: list of aggregates specification. Each element is ``'<field>:<agg>'`` (aggregate field with aggregation function ``agg``). The possible aggregation functions are the ones provided by `PostgreSQL <https://www.postgresql.org/docs/current/static/functions-aggregate.html>`_, except ``count_distinct`` and ``array_agg_distinct`` with the expected meaning. :param having: A domain where the valid "fields" are the aggregates. :param offset: optional number of groups to skip :param limit: optional max number of groups to return :param order: optional ``order by`` specification, for overriding the natural sort ordering of the groups, see :meth:`~.search`. :return: list of dict such as ``[{'groupy_spec': value, ...}, ...]`` containing: * the groupby values: ``{groupby[i]: <value>}`` * the aggregate values: ``{aggregates[i]: <value>}`` * ``'__extra_domain'``: list of tuples specifying the group search criteria * ``'__fold'``: boolean if a fold_name is set on the comodel and read_group_expand is activated :raise AccessError: if user is not allowed to access requested information
  • formatted_read_grouping_sets(self, domain: DomainType, grouping_sets: <expr>, aggregates: <expr>=(), *, order: <expr>=None)
    @api.model@api.readonly
    A method similar to :meth:`_read_grouping_set` but with all the formatting needed by the webclient. It is a multi groupby version of formatted_read_group allowing to have aggregates for different groupby specifications in a single SQL requests. :param domain: :ref:`A search domain <reference/orm/domains>`. Use an empty list to match all records. :param grouping_sets: list of list of groupby descriptions by which the records will be grouped. A groupby description is either a field (then it will be grouped by that field) or a string ``'<field>:<granularity>'``. Right now, the only supported granularities are: * ``day`` * ``week`` * ``month`` * ``quarter`` * ``year`` and they only make sense for date/datetime fields. Additionally integer date parts are also supported: * ``year_number`` * ``quarter_number`` * ``month_number`` * ``iso_week_number`` * ``day_of_year`` * ``day_of_month`` * ``day_of_week`` * ``hour_number`` * ``minute_number`` * ``second_number`` :param aggregates: list of aggregates specification. Each element is ``'<field>:<agg>'`` (aggregate field with aggregation function ``agg``). The possible aggregation functions are the ones provided by `PostgreSQL <https://www.postgresql.org/docs/current/static/functions-aggregate.html>`_, except ``count_distinct`` and ``array_agg_distinct`` with the expected meaning. :param order: optional ``order by`` specification, for overriding the natural sort ordering of the groups, see :meth:`~.search`. :return: list of list of dict such as ``[[{'groupy_spec': value, ...}, ...], ...]`` containing: * the groupby values: ``{groupby[i]: <value>}`` * the aggregate values: ``{aggregates[i]: <value>}`` * ``'__extra_domain'``: list of tuples specifying the group search criteria * ``'__fold'``: boolean if a fold_name is set on the comodel and read_group_expand is activated :raise AccessError: if user is not allowed to access requested information
  • onchange(self, values: dict, field_names: <expr>, fields_spec: dict)
    Perform an onchange on the given fields, and return the result. :param values: dictionary mapping field names to values on the form view, giving the current state of modification :param field_names: names of the modified fields :param fields_spec: dictionary specifying the fields in the view, just like the one used by :meth:`web_read`; it is used to format the resulting values When creating a record from scratch, the client should call this with an empty list as ``field_names``. In that case, the method first adds default values to ``values``, computes the remaining fields, applies onchange methods to them, and return all the fields in ``fields_spec``. The result is a dictionary with two optional keys. The key ``"value"`` is used to return field values that should be modified on the caller. The corresponding value is a dict mapping field names to their value, in the format of :meth:`web_read`, except for x2many fields, where the value is a list of commands to be applied on the caller's field value. The key ``"warning"`` provides a warning message to the caller. The corresponding value is a dictionary like:: { "title": "Be careful!", # subject of message "message": "Blah blah blah.", # full warning message "type": "dialog", # how to display the warning }
  • read_progress_bar(self, domain, group_by, progress_bar)
    @api.model@api.readonly
    Gets the data needed for all the kanban column progressbars. These are fetched alongside read_group operation. :param domain: the domain used in the kanban view to filter records :param group_by: the name of the field used to group records into kanban columns :param progress_bar: the ``<progressbar/>`` declaration attributes (field, colors, sum) :return: a dictionnary mapping group_by values to dictionnaries mapping progress bar field values to the related number of records
  • search_panel_select_multi_range(self, field_name, **kwargs)
    @api.model
    Return possible values of the field field_name (case select="multi"), possibly with counters and groups. :param field_name: the name of a filter field; possible types are many2one, many2many, selection. :param kwargs: additional features :param category_domain: domain generated by categories. Default is ``[]``. :param comodel_domain: domain of field values (if relational) (this parameter is used in :meth:`_search_panel_range`). Default is ``[]``. :param enable_counters: whether to count records by value. Default is ``False``. :param expand: whether to return the full range of field values in ``comodel_domain`` or only the field image values. Default is ``False``. :param filter_domain: domain generated by filters. Default is ``[]``. :param group_by: extra field to read on comodel, to group comodel records. :param group_domain: dict, one domain for each activated group for the group_by (if any). Those domains are used to fech accurate counters for values in each group. Default is ``[]`` (many2one case) or ``None``. :param limit: integer, maximal number of values to fetch. Default is ``None`` (no limit). :param search_domain: base domain of search. Default is ``[]``. :return: :: { 'values': a list of possible values, each being a dict with keys 'id' (value), 'name' (value label), '__count' (how many records with that value), 'group_id' (value of group), set if a group_by has been provided, 'group_name' (label of group), set if a group_by has been provided } or an object with an error message when limit is defined and reached.
  • search_panel_select_range(self, field_name, **kwargs)
    @api.model
    Return possible values of the field field_name (case select="one"), possibly with counters, and the parent field (if any and required) used to hierarchize them. :param field_name: the name of a field; of type many2one or selection. :param kwargs: additional features * category_domain: domain generated by categories. Default is ``[]``. * comodel_domain: domain of field values (if relational). Default is ``[]``. * enable_counters: whether to count records by value. Default is ``False``. * expand: whether to return the full range of field values in comodel_domain or only the field image values (possibly filtered and/or completed with parents if hierarchize is set). Default is ``False``. * filter_domain: domain generated by filters. Default is ``[]``. * hierarchize: determines if the categories must be displayed hierarchically (if possible). If set to true and ``_parent_name`` is set on the comodel field, the information necessary for the hierarchization will be returned. Default is ``True``. * limit: integer, maximal number of values to fetch. Default is ``None`` (no limit). * search_domain: base domain of search. Default is ``[]``. :return: :: { 'parent_field': parent field on the comodel of field, or False 'values': array of dictionaries containing some info on the records available on the comodel of the field 'field_name'. The display name, the __count (how many records with that value) and possibly parent_field are fetched. } or an object with an error message when limit is defined and is reached.
  • web_name_search(self, name, specification, domain=None, operator='ilike', limit=100)
    @api.model@api.readonly
  • web_override_translations(self, values)
    This method is used to override all the modal translations of the given fields with the provided value for each field. :param values: dictionary of the translations to apply for each field name ex: ``{ "field_name": "new_value" }``
  • web_read(self, specification: <expr>) -> <expr>
    @api.readonly
  • web_read_group(self, domain: DomainType, groupby: <expr>, aggregates: <expr>=(), limit: <expr>=None, offset: int=0, order: <expr>=None, *, auto_unfold: bool=False, opening_info: <expr>=None, unfold_read_specification: <expr>=None, unfold_read_default_limit: <expr>=80, groupby_read_specification: <expr>=None) -> <expr>
    @api.model@api.readonly
    Serves as the primary method for loading grouped data in list and kanban views. This method wraps :meth:`~.formatted_read_group` to return both the grouped data and the total number of groups matching the search domain. It also conditionally opens (unfolds) groups based on the `auto_unfold` parameter and the `__fold` key returned by :meth:`~.formatted_read_group`. A group is considered "open" if it contains a `__records` or `__groups` key. - `__records`: The result of a :meth:`~.web_search_read` call for the group. - `__groups`: The results of subgroupings. :param domain: :ref:`A search domain <reference/orm/domains>`. :param groupby: A list of groupby specification at each level, see :meth:`~.formatted_read_group`. :param aggregates: A list of aggregate specifications. see :meth:`~.formatted_read_group` :param limit: The maximum number of top-level groups to return. see :meth:`~.formatted_read_group` :param offset: The offset for the top-level groups. see :meth:`~.formatted_read_group` :param order: A sort string, as used in :meth:`~.search` :param auto_unfold: If `True`, automatically unfolds the first 10 groups according to their `__fold` key, if present; otherwise, it is unfolded by default. This is typically `True` for kanban views and `False` for list views. :param opening_info: The state of currently opened groups, used for reloading. :: opening_info = [{ "value": raw_value_groupby, "folded": True or False, ["offset": int,] # present if unfolded ["limit": int,] # present if unfolded ["progressbar_domain": progressbar_domain,] # present if unfolded, e.g., when clicking on a progress bar section ["groups": <opening_info>,] # present if unfolded }] :param unfold_read_specification: The read specification for :meth:`~.web_read` when unfolding a group. :param unfold_read_default_limit: The default record limit to apply when unfolding a group. :param groupby_read_specification: The :meth:`~.web_read` specification for reading the records that are being grouped on. This is mainly for list views with <groupby> leaves. {<groupby_spec>: <read_specification>} :return: A dictionary with the following structure: :: { 'groups': <groups>, 'length': <total_group_count>, } Where <groups> is the result of :meth:`~.formatted_read_group`, but with an added `__groups` key for subgroups or a `__records` key for the result of :meth:`~.web_read` for records within the group.
  • web_resequence(self, specification: <expr>, field_name: str='sequence', offset: int=0) -> <expr>
    Re-sequences a number of records in the model, by their ids. The re-sequencing starts at the first record of ``ids``, the sequence number starts at ``offset`` and is incremented by one after each record. The returning value is a read of the resequenced records with the specification given in the parameter. :param specification: specification for the read of the resequenced records :param field_name: field used for sequence specification, defaults to ``"sequence"`` :param offset: sequence number for first record in ``ids``, allows starting the resequencing from an arbitrary number, defaults to ``0``
  • web_save(self, vals, specification: <expr>, next_id=None) -> <expr>
  • web_save_multi(self, vals_list: <expr>, specification: <expr>) -> <expr>
  • web_search_read(self, domain, specification, offset=0, limit=None, order=None, count_limit=None)
    @api.model@api.readonly

New fields (26)
  • company_details Html
    default=_default_company_details readonly=False related='company_id.company_details'
  • company_id Many2one → res.company
    default=<expr> required=True args: 'res.company'
  • country_id Many2one
    readonly=True related='company_id.country_id'
  • custom_colors Boolean
    compute='_compute_custom_colors' readonly=False
  • email Char
    readonly=True related='company_id.email'
  • external_report_layout_id Many2one
    readonly=False related='company_id.external_report_layout_id'
  • font Selection
    readonly=False related='company_id.font'
  • is_company_details_empty Boolean
    compute='_compute_empty_company_details'
  • layout_background Selection
    readonly=False related='company_id.layout_background'
  • layout_background_image Binary
    readonly=False related='company_id.layout_background_image'
  • logo Binary
    readonly=False related='company_id.logo'
  • logo_primary_color Char
    compute='_compute_logo_colors'
  • logo_secondary_color Char
    compute='_compute_logo_colors'
  • name Char
    readonly=True related='company_id.name'
  • paperformat_id Many2one
    readonly=False related='company_id.paperformat_id'
  • partner_id Many2one
    readonly=True related='company_id.partner_id'
  • phone Char
    readonly=True related='company_id.phone'
  • preview Html
    compute='_compute_preview' sanitize=False
  • preview_logo Binary
    related='logo' string='Preview logo'
  • primary_color Char
    readonly=False related='company_id.primary_color'
  • report_footer Html
    default=_default_report_footer readonly=False related='company_id.report_footer'
  • report_header Html
    readonly=False related='company_id.report_header'
  • report_layout_id Many2one → report.layout
    args: 'report.layout'
  • secondary_color Char
    readonly=False related='company_id.secondary_color'
  • vat Char
    readonly=True related='company_id.vat'
  • website Char
    readonly=True related='company_id.website'
Public methods (2)
  • document_layout_save(self)
  • extract_image_primary_secondary_colors(self, logo, white_threshold=225, mitigate=175)
    @api.model
    Identifies dominant colors First resizes the original image to improve performance, then discards transparent colors and white-ish colors, then calls the averaging method twice to evaluate both primary and secondary colors. :param logo: logo to process :param white_threshold: arbitrary value defining the maximum value a color can reach :param mitigate: arbitrary value defining the maximum value a band can reach :return: a 2-value tuple with hex values of primary and secondary colors

New fields (0)

No new fields.

Public methods (7)
  • color_scheme(self)
  • get_currencies(self)
    @api.deprecated("Deprecated since 19.0, use get_all_currencies on 'res.currency'")
  • get_frontend_session_info(self)
    @api.model
  • is_a_bot(cls)
    @classmethod
  • lazy_session_info(self)
    @api.model
  • session_info(self)
  • webclient_rendering_context(self)

New fields (0)

No new fields.

Public methods (2)
  • display_name_for(self, models)
    @api.model
    Returns the display names from provided models which the current user can access. The result is the same whether someone tries to access an inexistent model or a model they cannot access. :models list(str): list of technical model names to lookup (e.g. `["res.partner"]`) :return: list of dicts of the form `{ "model", "display_name" }` (e.g. `{ "model": "res_partner", "display_name": "Contact"}`)
  • get_available_models(self)
    @api.model
    Return the list of models the current user has access to, with their corresponding display name.

New fields (0)

No new fields.

Public methods (1)
  • 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 (1)
  • load_web_menus(self, debug)
    Loads all menu items (all applications and their sub-menus) and processes them to be used by the webclient. Mainly, it associates with each application (top level menu) the action of its first child menu that is associated with an action (recursively), i.e. with the action to execute when the opening the app. :return: the menus (including the images in Base64)

New fields (0)

No new fields.

Public methods (1)
  • get_view_info(self)

New fields (0)

No new fields.

Public methods (1)
  • get_properties_base_definition(self, model_name, field_name)
    @api.model
    Return the base properties definition if we can read the model.

New fields (0)

No new fields.

Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (1)
  • web_app_name Char
    config_parameter='web.web_app_name' args: 'Web App Name'
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)
  • name_search(self, name='', domain=None, operator='ilike', limit=100)
    @api.model

New fields (1)
  • embedded_actions_config_ids One2many → res.users.settings.embedded.action
    args: 'res.users.settings.embedded.action', 'user_setting_id'
Public methods (2)
  • get_embedded_actions_settings(self)
  • set_embedded_actions_setting(self, action_id, res_id, vals)

New fields (7)
  • action_id Many2one → ir.actions.act_window
    export_string_translation=False ondelete='cascade' required=True args: 'ir.actions.act_window'
  • embedded_actions_order Char
    export_string_translation=False args: 'List order of embedded action ids'
  • embedded_actions_visibility Char
    export_string_translation=False args: 'List visibility of embedded actions ids'
  • embedded_visibility Boolean
    export_string_translation=False args: 'Is top bar visible'
  • res_id Integer
    export_string_translation=False
  • res_model Char
    export_string_translation=False required=True
  • user_setting_id Many2one → res.users.settings
    export_string_translation=False index='btree_not_null' ondelete='cascade' required=True args: 'res.users.settings'
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/18.0/web
VERSION
VERSION 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, Fabien Pinckaers, Olivier Dony, Thibault Delavallée, Denis Ledoux, Xavier ALT, Xavier Morel, Joren Van Onder, Nicolas Martinelli, Géry Debongnie, Aaron Bohy, Jeremy Kersten, Lucas Perais (lpe), Yannick Tivisse, qsm-odoo, Odoo Online, Romain Derie, Laurent Smet, Adrien Dieudonne, Christophe Monniez, Jorge Pinna Puissant, Lucas Perais, Alexandre Kühn, Toufik Ben Jaa, Arnold Moyaux, Julien Castiaux, Xavier-Do, Romeo Fragomeli, Victor Feyens, Andrea Grazioso (agr-odoo), Adrien Dieudonné, Paul Morelle, Sébastien Theys, Julien Mougenot, Anh Thao Pham (pta), svs-odoo, Luis González, Samuel Degueldre, std-odoo, Achraf (abz), Carlos Lopez, Nasreddin Boulif (bon), Prakash Prajapati, Tiffany Chang (tic), Rémy Voet (ryv), Pierre Rousseau, Gorash, fja-odoo, Mathieu Duckerts-Antoine, Pierre Paridans, abd-msyukyu-odoo, Arnaud Joset, William Braeckman, bit-odoo, Romain Estievenart, Benjamin Vray, Kishan Gajjar, Benoit Socias, Miquel Raïch, Sylvain Francis, sofiagvaladze, william-andre, Víctor Martínez, Florian Damhaut, JF Aubert, Didier (did), aliya, Arthur Detroux (ard), Florian Charlier, Patrick Hoste, Abdelouahab (abla), Florian Gilbert, Hubert Van De Walle, Mathieu Walravens, luvi, Achraf, Florian(flg), Valentin Chevalier, Renaud Thiry, Julien Banken, Vincent Larcin, Iván Todorovich, bve-odoo, Habib (ayh), damr, Thomas Lefebvre (thle), alsh-odoo, Gaetan Vanden Bergh (gavb), Pedram (PEBR), Louis Wicket (wil), tsm-odoo, Walid, Laurent Desausoi, Adrien Widart (awt), nda, Maximilien (malb), Victor Piryns (pivi), Yash Vaishnav, Julien (jula), Mahamadasif Ansari, Thomas Becquevort (thbe), miad-odoo, amdi-odoo, Gauthier Wala (gawa), Simon Genin (ges), Pierre-Yves Dufays, clesgow, Claire Bretton (clbr), Soukéina Bojabza, Robin Lejeune (role), pash-odoo, Levi Siuzdak (sile), Maruan Aguerdouh (magm), Antoine Dupuis (andu), Dylan Kiss (dyki), Sébastien Geelen (sge), Bruno Boi, Antoine (ande), Paolo Gatti (pgi), FrancoisGe, Michael (mcm), Mayurrajsinh Rathod, Rahul Prajapati, Chong Wang (cwg), Vivek Pathak, Adrien Schoffeniels, Hugo Carlier (Huca), bram1000, Martin Maes, tong-odoo, Xavier Bol (xbo), Brieuc-brd, Paweł Fertyk, Nguyễn Đại Dương, AH-Yussef, Leonardo Pavan Rocha, Louis Travaux, Arnaud Sibille, Mahdi Cheikh Rouhou (macr), Mattis Megevand (mmeg), omra-odoo, Andrzej(pian), Walid (wasa), sesn-odoo, kdeb@odoo.com, Paul Stroobant, maad-odoo, stefanorigano (SRI), MAHAMADASIF ANSARI, Astik Singh, Hesham, Mattis Megevand, Mélanie, Youssef Bashandy, Mathieu (mcou), lase@odoo.com, Maryam Kia, Maxime de Neuville, mizosoft, Serge Bayet (seba), reka-odoo, Sven Fuehr, Cyrus Robins, “Beekan”, Ruben Gomes (rugo), jugj-odoo, Bruno Boi (boi), jobl, Adrien Minne (adrm), Bastien Fafchamps (bafa), Julien Carion (juca), dhba, kcv-odoo, mega, Tanguy Quéguineur, TSO, SaddemAmine, Martin Trigaux (mat), Ritika Rathore, Shubham Thanki, Chrysanthe (chgo), Adnan Saiyed, adch-odoo, sami odoo, Louis (wil), Mohammed Basioni (basm), ThiagoMForgeFlow, mano-odoo, Joseph (jcb), Max Whale, aamo-odoo, Hoang Tien Dung, Hussein Ebrahim(hyhe), Loukas Wets (lowe), Shaan Thakkar (THSH), Mathieu Coutant, Clément Cardot, Elisabeth Dickinson, Xavier Luyckx (xlu), guce, Ahmad (alah), Stéphane Diez, Mohammad Abdulmoneim, vlst, Antoine (anso), sabr, Manushi Shah, Léo Gizard, paru-odoo, Mohammed Basioni, LauraCForgeFlow, Pierre Pulinckx (PIPU), luve-odoo, Victor Miguel Armenta Carrillo, AhmedElemary57, sben-odoo, gvar-odoo, Trinh Ngoc Hung, roto-odoo, abdelrahmanfawzy, David Van Droogenbroeck (DROD), Morgane (morm), djameltouati, khsr-odoo, Khushi, Lucas Lefèvre (lul), Rémi Rahir (rar), Pierre Lamotte (pila), wt, Michaël Mattiello, Pierre Pulinckx (pipu), laro-odoo, Pierre Pulinckx, Dhrumil Shah, fdardenne, Bastien PIERRE, Anton Romanova (roan), K Theja (kthe), joda-odoo, kpt-odoo, sura-odoo, zel-odoo, pish-odoo, Panagiotis Kyriakou, Bastien (bvdn), Krzysztof Magusiak (krma), kkuj-odoo, Ajit Singh, Ricard Calvo, krip-odoo, Hadi El Yakhni, Guillaume V, kdes-odoo, mjvi-odoo, defl, dise-odoo, Dirk Douglas, Giorgio Tocco (gito), Ayush Chauhan (aych), MAGREMENT, sawer, aksi-odoo, Tudor-Calin Panzaru (tupan), Laetitia (ldau), Alice Gaudon, ramh, late-odoo, leclerc-leo, Saurabh, dhrp-odoo, Janvi Lakhore, shiyam kumar, Nisarg (nipl), Robert Smith (rosm), assh-odoo, Elliot ELCO, cro, Beekoan, gito-odoo, Bruno BOI, Benoit Socias (bso), Aurélien Bertrand, Soumya M, saurabh, David (davg), Rudra Patel, Omar Khalil (omkha), zadh-odoo, Romaric MOYEUVRE, raja prasad, jowes-odoo, Farah (ahmfa), akth-odoo, Nikhil Kajavadra, K Theja, ELCO, Thomas des Touches, Takahiro SUNAGA, MostafaTwfiq, Julien Carion
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:25:56
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Odoo Web core module.
========================

This module provides the core of the Odoo Web Client.

Code Analysis

Views touched (39)
XML IDNameModelTypeStatus
address_layout address_layout ir.ui.view qweb New
basic_layout basic_layout ir.ui.view qweb New
brand_promotion Brand Promotion ir.ui.view qweb New
brand_promotion_message Brand Promotion Message ir.ui.view qweb New
conditional_assets_tests Tests Assets Bundle ir.ui.view qweb New
external_layout external_layout ir.ui.view qweb New
external_layout_bold external_layout_bold ir.ui.view qweb New
external_layout_boxed external_layout_boxed ir.ui.view qweb New
external_layout_bubble external_layout_bubble ir.ui.view qweb New
external_layout_folder external_layout_folder ir.ui.view qweb New
external_layout_standard external_layout_standard ir.ui.view qweb New
external_layout_striped external_layout_striped ir.ui.view qweb New
external_layout_wave external_layout_wave ir.ui.view qweb New
html_container html_container ir.ui.view qweb New
html_preview_container html_preview_container ir.ui.view qweb New
internal_layout internal_layout ir.ui.view qweb New
minimal_layout minimal_layout ir.ui.view qweb New
preview_externalreport preview_externalreport ir.ui.view qweb New
preview_internalreport preview_internalreport ir.ui.view qweb New
preview_layout_report preview_layout_report ir.ui.view qweb New
report_invoice_wizard_preview report_invoice_wizard_preview ir.ui.view qweb New
report_layout Report layout ir.ui.view qweb New
report_preview_layout Report layout ir.ui.view qweb New
styles_company_report styles_company_report ir.ui.view qweb New
view_base_document_layout Document Layout base.document.layout form New
view_speedscope_index view_speedscope_index ir.ui.view qweb New
web.frontend_layout Frontend Layout ir.ui.view qweb Inherits web.layout
web.layout Web layout ir.ui.view qweb New
web.login Login ir.ui.view qweb New
web.login_layout Login Layout ir.ui.view qweb New
web.login_successful Login successful ir.ui.view qweb New
web.neutralize_banner Neutralize Banner ir.ui.view qweb Inherits web.layout
web.qunit_mobile_suite web.qunit_mobile_suite ir.ui.view qweb New
web.qunit_suite web.qunit_suite ir.ui.view qweb New
web.test_helpers web.test_helpers ir.ui.view qweb New
web.unit_tests_suite web.unit_tests_suite ir.ui.view qweb New
web.webclient_bootstrap web.webclient_bootstrap ir.ui.view qweb New
webclient_offline webclient_offline ir.ui.view qweb New
webclient_scoped_app webclient_scoped_app ir.ui.view qweb New
Models touched (12)

New fields (0)

No new fields.

Public methods (9)
  • onchange(self, values: dict, field_names: <expr>, fields_spec: dict)
    Perform an onchange on the given fields, and return the result. :param values: dictionary mapping field names to values on the form view, giving the current state of modification :param field_names: names of the modified fields :param fields_spec: dictionary specifying the fields in the view, just like the one used by :meth:`web_read`; it is used to format the resulting values When creating a record from scratch, the client should call this with an empty list as ``field_names``. In that case, the method first adds default values to ``values``, computes the remaining fields, applies onchange methods to them, and return all the fields in ``fields_spec``. The result is a dictionary with two optional keys. The key ``"value"`` is used to return field values that should be modified on the caller. The corresponding value is a dict mapping field names to their value, in the format of :meth:`web_read`, except for x2many fields, where the value is a list of commands to be applied on the caller's field value. The key ``"warning"`` provides a warning message to the caller. The corresponding value is a dictionary like:: { "title": "Be careful!", # subject of message "message": "Blah blah blah.", # full warning message "type": "dialog", # how to display the warning }
  • read_progress_bar(self, domain, group_by, progress_bar)
    @api.model@api.readonly
    Gets the data needed for all the kanban column progressbars. These are fetched alongside read_group operation. :param domain - the domain used in the kanban view to filter records :param group_by - the name of the field used to group records into kanban columns :param progress_bar - the <progressbar/> declaration attributes (field, colors, sum) :return a dictionnary mapping group_by values to dictionnaries mapping progress bar field values to the related number of records
  • search_panel_select_multi_range(self, field_name, **kwargs)
    @api.model
    Return possible values of the field field_name (case select="multi"), possibly with counters and groups. :param field_name: the name of a filter field; possible types are many2one, many2many, selection. :param category_domain: domain generated by categories. Default is []. :param comodel_domain: domain of field values (if relational) (this parameter is used in _search_panel_range). Default is []. :param enable_counters: whether to count records by value. Default is False. :param expand: whether to return the full range of field values in comodel_domain or only the field image values. Default is False. :param filter_domain: domain generated by filters. Default is []. :param group_by: extra field to read on comodel, to group comodel records :param group_domain: dict, one domain for each activated group for the group_by (if any). Those domains are used to fech accurate counters for values in each group. Default is [] (many2one case) or None. :param limit: integer, maximal number of values to fetch. Default is None. :param search_domain: base domain of search. Default is []. :return: { 'values': a list of possible values, each being a dict with keys 'id' (value), 'name' (value label), '__count' (how many records with that value), 'group_id' (value of group), set if a group_by has been provided, 'group_name' (label of group), set if a group_by has been provided } or an object with an error message when limit is defined and reached.
  • search_panel_select_range(self, field_name, **kwargs)
    @api.model
    Return possible values of the field field_name (case select="one"), possibly with counters, and the parent field (if any and required) used to hierarchize them. :param field_name: the name of a field; of type many2one or selection. :param category_domain: domain generated by categories. Default is []. :param comodel_domain: domain of field values (if relational). Default is []. :param enable_counters: whether to count records by value. Default is False. :param expand: whether to return the full range of field values in comodel_domain or only the field image values (possibly filtered and/or completed with parents if hierarchize is set). Default is False. :param filter_domain: domain generated by filters. Default is []. :param hierarchize: determines if the categories must be displayed hierarchically (if possible). If set to true and _parent_name is set on the comodel field, the information necessary for the hierarchization will be returned. Default is True. :param limit: integer, maximal number of values to fetch. Default is None. :param search_domain: base domain of search. Default is []. with parents if hierarchize is set) :return: { 'parent_field': parent field on the comodel of field, or False 'values': array of dictionaries containing some info on the records available on the comodel of the field 'field_name'. The display name, the __count (how many records with that value) and possibly parent_field are fetched. } or an object with an error message when limit is defined and is reached.
  • web_override_translations(self, values)
    This method is used to override all the modal translations of the given fields with the provided value for each field. :param values: dictionary of the translations to apply for each field name ex: { "field_name": "new_value" }
  • web_read(self, specification: <expr>) -> <expr>
    @api.readonly
  • web_read_group(self, domain, fields, groupby, limit=None, offset=0, orderby=False, lazy=True)
    @api.model@api.readonly
    Returns the result of a read_group and the total number of groups matching the search domain. :param domain: search domain :param fields: list of fields to read (see ``fields``` param of ``read_group``) :param groupby: list of fields to group on (see ``groupby``` param of ``read_group``) :param limit: see ``limit`` param of ``read_group`` :param offset: see ``offset`` param of ``read_group`` :param orderby: see ``orderby`` param of ``read_group`` :param lazy: see ``lazy`` param of ``read_group`` :return: { 'groups': array of read groups 'length': total number of groups }
  • web_save(self, vals, specification: <expr>, next_id=None) -> <expr>
  • web_search_read(self, domain, specification, offset=0, limit=None, order=None, count_limit=None)
    @api.model@api.readonly

New fields (26)
  • company_details Html
    default=_default_company_details readonly=False related='company_id.company_details'
  • company_id Many2one → res.company
    default=<expr> required=True args: 'res.company'
  • country_id Many2one
    readonly=True related='company_id.country_id'
  • custom_colors Boolean
    compute='_compute_custom_colors' readonly=False
  • email Char
    readonly=True related='company_id.email'
  • external_report_layout_id Many2one
    readonly=False related='company_id.external_report_layout_id'
  • font Selection
    readonly=False related='company_id.font'
  • is_company_details_empty Boolean
    compute='_compute_empty_company_details'
  • layout_background Selection
    readonly=False related='company_id.layout_background'
  • layout_background_image Binary
    readonly=False related='company_id.layout_background_image'
  • logo Binary
    readonly=False related='company_id.logo'
  • logo_primary_color Char
    compute='_compute_logo_colors'
  • logo_secondary_color Char
    compute='_compute_logo_colors'
  • name Char
    readonly=True related='company_id.name'
  • paperformat_id Many2one
    readonly=False related='company_id.paperformat_id'
  • partner_id Many2one
    readonly=True related='company_id.partner_id'
  • phone Char
    readonly=True related='company_id.phone'
  • preview Html
    compute='_compute_preview' sanitize=False
  • preview_logo Binary
    related='logo' string='Preview logo'
  • primary_color Char
    readonly=False related='company_id.primary_color'
  • report_footer Html
    default=_default_report_footer readonly=False related='company_id.report_footer'
  • report_header Html
    readonly=False related='company_id.report_header'
  • report_layout_id Many2one → report.layout
    args: 'report.layout'
  • secondary_color Char
    readonly=False related='company_id.secondary_color'
  • vat Char
    readonly=True related='company_id.vat'
  • website Char
    readonly=True related='company_id.website'
Public methods (2)
  • document_layout_save(self)
  • extract_image_primary_secondary_colors(self, logo, white_threshold=225, mitigate=175)
    @api.model
    Identifies dominant colors First resizes the original image to improve performance, then discards transparent colors and white-ish colors, then calls the averaging method twice to evaluate both primary and secondary colors. :param logo: logo to process :param white_threshold: arbitrary value defining the maximum value a color can reach :param mitigate: arbitrary value defining the maximum value a band can reach :return colors: hex values of primary and secondary colors

New fields (0)

No new fields.

Public methods (5)
  • get_currencies(self)
    @ormcache()
  • get_frontend_session_info(self)
    @api.model
  • is_a_bot(cls)
    @classmethod
  • session_info(self)
  • webclient_rendering_context(self)

New fields (0)

No new fields.

Public methods (2)
  • display_name_for(self, models)
    @api.model
    Returns the display names from provided models which the current user can access. The result is the same whether someone tries to access an inexistent model or a model they cannot access. :models list(str): list of technical model names to lookup (e.g. `["res.partner"]`) :return: list of dicts of the form `{ "model", "display_name" }` (e.g. `{ "model": "res_partner", "display_name": "Contact"}`)
  • get_available_models(self)
    @api.model
    Return the list of models the current user has access to, with their corresponding display name.

New fields (0)

No new fields.

Public methods (1)
  • 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 (1)
  • load_web_menus(self, debug)
    Loads all menu items (all applications and their sub-menus) and processes them to be used by the webclient. Mainly, it associates with each application (top level menu) the action of its first child menu that is associated with an action (recursively), i.e. with the action to execute when the opening the app. :return: the menus (including the images in Base64)

New fields (0)

No new fields.

Public methods (1)
  • get_view_info(self)

New fields (0)

No new fields.

Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, values)

New fields (1)
  • web_app_name Char
    config_parameter='web.web_app_name' args: 'Web App Name'
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)
  • name_search(self, name='', args=None, operator='ilike', limit=100)
    @api.model
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/17.0/web
VERSION
VERSION 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, Fabien Pinckaers, Thibault Delavallée, Denis Ledoux, Fabien Meghazi, Xavier ALT, David Monjoie, Xavier Morel, Nicolas Lempereur, qdp-odoo, Géry Debongnie, Aaron Bohy, Jeremy Kersten, GitHub, Lucas Perais (lpe), Damien Bouvy, Yannick Tivisse, qsm-odoo, Odoo Online, Pierre Masereel, Romain Derie, Laurent Smet, Adrien Dieudonne, Christophe Monniez, Jorge Pinna Puissant, Lucas Perais, Alexandre Kühn, Toufik Ben Jaa, Julien Castiaux, Rémi Rahir, Aurélien Warnon, Xavier-Do, Romeo Fragomeli, Victor Feyens, Andrea Grazioso (agr-odoo), Adrien Dieudonné, Paul Morelle, Loan (lse), William Henrotin, Sébastien Theys, Joseph Caburnay, Julien Mougenot, Vincent Schippefilt, Anh Thao Pham (pta), Luis González, Samuel Degueldre, std-odoo, Achraf (abz), Lucas Lefèvre, Ivan Yelizariev, Nasreddin Boulif (bon), Prakash Prajapati, Tiffany Chang (tic), Rémy Voet (ryv), Pierre Rousseau, Gorash, fja-odoo, Younn Olivier, Mathieu Duckerts-Antoine, Pierre Paridans, abd-msyukyu-odoo, Arnaud Joset, William Braeckman, bit-odoo, Romain Estievenart, Benjamin Vray, Petar Najman, Stefan-Calin Crainiciuc (stcc), Xavier BOL (xbo), Benoit Socias, Hubert Van de Walle (huvw), Miquel Raïch, momegahed, Guillaume (gdi), Ricardo Gomes Rodrigues (rigr), william-andre, Florian Damhaut, MerlinGuillaume, JF Aubert, Didier (did), Audric Onockx (auon), aliya, william, Florian Vranckx, Antoine Guenet, Arthur Detroux (ard), Florian Charlier, Patrick Hoste, Nshimiyimana Séna, Louis Baudoux, Walid HANNICHE (waha), Yolann Sabaux, Abdelouahab (abla), John Laterre (jol), Ruben Gomes, Nicolas Bayet, Antoine Vandevenne (anv), Jinjiu Liu, Laurent Stukkens (LTU), Hubert Van De Walle, Mathieu Walravens, Dossogne Bertrand, luvi, Achraf, Valentin Chevalier, Renaud Thiry, Julien Banken, Vincent Larcin, Pierrot (prro), Stanislas Gueniffey, niyasraphy, jbw-odoo, nda-odoo, Iván Todorovich, bve-odoo, Habib (ayh), Loan (LSE), damr, David Monnom (moda), Thomas Lefebvre (thle), mehjabinfarsana, alsh-odoo, Matheus Leal Viana (malv), Pedram (PEBR), Louis Wicket (wil), tsm-odoo, Walid, Laurent Desausoi, nda, Maximilien (malb), Victor Piryns (pivi), Hamza (hisl), Julien (jula), Mahamadasif Ansari, Thomas Becquevort (thbe), miad-odoo, amdi-odoo, Gauthier Wala (gawa), Ali Alfie (alal), Tom De Caluwé, Simon Genin (ges), Pierre-Yves Dufays, clesgow, Michele, Valentin Vallaeys (vava), Yosua Nicolaus, Om Rabara, Soukéina Bojabza, xO-Tx, Louis (loco), Jurgen (jugj), Saurabh Choraria, Levi Siuzdak (sile), Maruan Aguerdouh (magm), Antoine Dupuis (andu), Dylan Kiss (dyki), PoMa, Sébastien Geelen (sge), hupo-odoo, Mahdi cheikh rouhou (macr), Bruno Boi, Antoine (ande), flvr-odoo, Paolo Gatti (pgi), Kamlesh Pathekar, FrancoisGe, Michael (mcm), Preksha Chouhan, Horacio Tellez, Mayurrajsinh Rathod, Chong Wang (cwg), paso-odoo, Vivek Pathak, Adrien Schoffeniels, Kartik Chavda, Hugo Carlier (Huca), bram1000, Xavier Bol (xbo), Brieuc-brd, Mohit Beniwal, Ahmed Khalaf (ahkh), AH-Yussef, Leonardo Pavan Rocha, Arnaud Sibille, Mahdi Cheikh Rouhou (macr), Noe Antoine, Mattis Megevand (mmeg), omra-odoo, Andrzej(pian), Zelong Lin, Walid (wasa), sesn-odoo, Paul Stroobant, maad-odoo, dhba-odoo, visp-odoo, stefanorigano (SRI), dane@odoo.com, Mattis Megevand, Mélanie, Youssef Bashandy, Mathieu (mcou), lase@odoo.com, Maryam Kia, Eteil Djoumatchoua (etdj), mizosoft, Guillaume-gdi, Serge Bayet (seba), Sven Fuehr, Cyrus Robins, Jérémy Hennecart (jeh), “Beekan”, Ruben Gomes (rugo), Abderraouf Ghrissi (abgh), Bruno Boi (boi), jobl, Adrien Minne (adrm), Bastien Fafchamps (bafa), Sergey Shebanin, Julien Carion (juca), dhba, kcv-odoo, mega, Tanguy Quéguineur, TSO, Martin Trigaux (mat), Ritika Rathore, Shubham Thanki, Chrysanthe (chgo), shsa-odoo, vishal padhiyar, adch-odoo, sami odoo, Louis (wil), mano-odoo, Hoang Tien Dung, Loukas Wets (lowe), Mathieu (mano), Shaan Thakkar (THSH), Mathieu Coutant, kais-odoo, Elisabeth Dickinson, Pratik Raval (PRRA), Xavier Luyckx (xlu), guce, Stéphane Diez, vlst, Antoine (anso), sabr, Léo Gizard, paru-odoo, Mohammed Basioni, German Loredo [Vauxoo], Trinh Ngoc Hung, roto-odoo, Kawtar Drissi El Bouzaidi (kdeb), Viktors Lipskis (vili), David Van Droogenbroeck (DROD), Dardenne Florent (dafl), Morgane (morm), elhayyany, djameltouati, Khushi, Lucas Lefèvre (lul), Rémi Rahir (rar), Pierre Lamotte (pila), thsh-odoo, wt, Julien, Michaël Mattiello, Gabriele Portente, nikj-odoo, Pierre Pulinckx (pipu), laro-odoo, Alexis Lacroix, Pierre Pulinckx, Dhrumil Shah, fdardenne, Bastien PIERRE, Anton Romanova (roan), Aman Patel, kpt-odoo, sura-odoo, zel-odoo, pish-odoo, Panagiotis Kyriakou, Bastien (bvdn), Ajit Singh, bobslee, valeriobelcastro, Pulinckx Pierre (PIPU), krip-odoo, Hadi El Yakhni, kdes-odoo, mjvi-odoo, Giorgio Tocco (gito), Ayush Chauhan (aych), aksi-odoo, Nishit Prajapati, Ayushi Gorai, dhrp-odoo, Janvi Lakhore, M. Heshmatkhah, shiyam kumar, Nisarg (nipl), Robert Smith (rosm), assh-odoo, Elliot ELCO, cro, daiduongnguyen-odoo, Beekoan, gito-odoo, Bruno BOI
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:02:07
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Odoo Web core module.
========================

This module provides the core of the Odoo Web Client.

Code Analysis

Views touched (34)
XML IDNameModelTypeStatus
address_layout address_layout ir.ui.view qweb New
basic_layout basic_layout ir.ui.view qweb New
brand_promotion Brand Promotion ir.ui.view qweb New
brand_promotion_message Brand Promotion Message ir.ui.view qweb New
conditional_assets_tests Tests Assets Bundle ir.ui.view qweb New
external_layout external_layout ir.ui.view qweb New
external_layout_bold external_layout_bold ir.ui.view qweb New
external_layout_boxed external_layout_boxed ir.ui.view qweb New
external_layout_standard external_layout_standard ir.ui.view qweb New
external_layout_striped external_layout_striped ir.ui.view qweb New
html_container html_container ir.ui.view qweb New
html_preview_container html_preview_container ir.ui.view qweb New
internal_layout internal_layout ir.ui.view qweb New
minimal_layout minimal_layout ir.ui.view qweb New
preview_externalreport preview_externalreport ir.ui.view qweb New
preview_internalreport preview_internalreport ir.ui.view qweb New
preview_layout_report preview_layout_report ir.ui.view qweb New
report_invoice_wizard_preview report_invoice_wizard_preview ir.ui.view qweb New
report_layout Report layout ir.ui.view qweb New
report_preview_layout Report layout ir.ui.view qweb New
styles_company_report styles_company_report ir.ui.view qweb New
view_base_document_layout Document Layout base.document.layout form New
view_speedscope_index view_speedscope_index ir.ui.view qweb New
web.frontend_layout Frontend Layout ir.ui.view qweb Inherits web.layout
web.layout Web layout ir.ui.view qweb New
web.login Login ir.ui.view qweb New
web.login_layout Login Layout ir.ui.view qweb New
web.login_successful Login successful ir.ui.view qweb New
web.neutralize_banner Neutralize Banner ir.ui.view qweb Inherits web.layout
web.qunit_mobile_suite web.qunit_mobile_suite ir.ui.view qweb New
web.qunit_suite web.qunit_suite ir.ui.view qweb New
web.test_helpers web.test_helpers ir.ui.view qweb New
web.webclient_bootstrap web.webclient_bootstrap ir.ui.view qweb New
webclient_offline webclient_offline ir.ui.view qweb New
Models touched (11)

New fields (0)

No new fields.

Public methods (9)
  • onchange(self, values: Dict, field_names: <expr>, fields_spec: Dict)
    Perform an onchange on the given fields, and return the result. :param values: dictionary mapping field names to values on the form view, giving the current state of modification :param field_names: names of the modified fields :param fields_spec: dictionary specifying the fields in the view, just like the one used by :meth:`web_read`; it is used to format the resulting values When creating a record from scratch, the client should call this with an empty list as ``field_names``. In that case, the method first adds default values to ``values``, computes the remaining fields, applies onchange methods to them, and return all the fields in ``fields_spec``. The result is a dictionary with two optional keys. The key ``"value"`` is used to return field values that should be modified on the caller. The corresponding value is a dict mapping field names to their value, in the format of :meth:`web_read`, except for x2many fields, where the value is a list of commands to be applied on the caller's field value. The key ``"warning"`` provides a warning message to the caller. The corresponding value is a dictionary like:: { "title": "Be careful!", # subject of message "message": "Blah blah blah.", # full warning message "type": "dialog", # how to display the warning }
  • read_progress_bar(self, domain, group_by, progress_bar)
    @api.model
    Gets the data needed for all the kanban column progressbars. These are fetched alongside read_group operation. :param domain - the domain used in the kanban view to filter records :param group_by - the name of the field used to group records into kanban columns :param progress_bar - the <progressbar/> declaration attributes (field, colors, sum) :return a dictionnary mapping group_by values to dictionnaries mapping progress bar field values to the related number of records
  • search_panel_select_multi_range(self, field_name, **kwargs)
    @api.model
    Return possible values of the field field_name (case select="multi"), possibly with counters and groups. :param field_name: the name of a filter field; possible types are many2one, many2many, selection. :param category_domain: domain generated by categories. Default is []. :param comodel_domain: domain of field values (if relational) (this parameter is used in _search_panel_range). Default is []. :param enable_counters: whether to count records by value. Default is False. :param expand: whether to return the full range of field values in comodel_domain or only the field image values. Default is False. :param filter_domain: domain generated by filters. Default is []. :param group_by: extra field to read on comodel, to group comodel records :param group_domain: dict, one domain for each activated group for the group_by (if any). Those domains are used to fech accurate counters for values in each group. Default is [] (many2one case) or None. :param limit: integer, maximal number of values to fetch. Default is None. :param search_domain: base domain of search. Default is []. :return: { 'values': a list of possible values, each being a dict with keys 'id' (value), 'name' (value label), '__count' (how many records with that value), 'group_id' (value of group), set if a group_by has been provided, 'group_name' (label of group), set if a group_by has been provided } or an object with an error message when limit is defined and reached.
  • search_panel_select_range(self, field_name, **kwargs)
    @api.model
    Return possible values of the field field_name (case select="one"), possibly with counters, and the parent field (if any and required) used to hierarchize them. :param field_name: the name of a field; of type many2one or selection. :param category_domain: domain generated by categories. Default is []. :param comodel_domain: domain of field values (if relational). Default is []. :param enable_counters: whether to count records by value. Default is False. :param expand: whether to return the full range of field values in comodel_domain or only the field image values (possibly filtered and/or completed with parents if hierarchize is set). Default is False. :param filter_domain: domain generated by filters. Default is []. :param hierarchize: determines if the categories must be displayed hierarchically (if possible). If set to true and _parent_name is set on the comodel field, the information necessary for the hierarchization will be returned. Default is True. :param limit: integer, maximal number of values to fetch. Default is None. :param search_domain: base domain of search. Default is []. with parents if hierarchize is set) :return: { 'parent_field': parent field on the comodel of field, or False 'values': array of dictionaries containing some info on the records available on the comodel of the field 'field_name'. The display name, the __count (how many records with that value) and possibly parent_field are fetched. } or an object with an error message when limit is defined and is reached.
  • web_override_translations(self, values)
    This method is used to override all the modal translations of the given fields with the provided value for each field. :param values: dictionary of the translations to apply for each field name ex: { "field_name": "new_value" }
  • web_read(self, specification: <expr>) -> <expr>
  • web_read_group(self, domain, fields, groupby, limit=None, offset=0, orderby=False, lazy=True)
    @api.model
    Returns the result of a read_group and the total number of groups matching the search domain. :param domain: search domain :param fields: list of fields to read (see ``fields``` param of ``read_group``) :param groupby: list of fields to group on (see ``groupby``` param of ``read_group``) :param limit: see ``limit`` param of ``read_group`` :param offset: see ``offset`` param of ``read_group`` :param orderby: see ``orderby`` param of ``read_group`` :param lazy: see ``lazy`` param of ``read_group`` :return: { 'groups': array of read groups 'length': total number of groups }
  • web_save(self, vals, specification: <expr>, next_id=None) -> <expr>
  • web_search_read(self, domain, specification, offset=0, limit=None, order=None, count_limit=None)
    @api.model

New fields (26)
  • company_details Html
    default=_default_company_details readonly=False related='company_id.company_details'
  • company_id Many2one → res.company
    default=<expr> required=True args: 'res.company'
  • country_id Many2one
    readonly=True related='company_id.country_id'
  • custom_colors Boolean
    compute='_compute_custom_colors' readonly=False
  • email Char
    readonly=True related='company_id.email'
  • external_report_layout_id Many2one
    readonly=False related='company_id.external_report_layout_id'
  • font Selection
    readonly=False related='company_id.font'
  • is_company_details_empty Boolean
    compute='_compute_empty_company_details'
  • layout_background Selection
    readonly=False related='company_id.layout_background'
  • layout_background_image Binary
    readonly=False related='company_id.layout_background_image'
  • logo Binary
    readonly=False related='company_id.logo'
  • logo_primary_color Char
    compute='_compute_logo_colors'
  • logo_secondary_color Char
    compute='_compute_logo_colors'
  • name Char
    readonly=True related='company_id.name'
  • paperformat_id Many2one
    readonly=False related='company_id.paperformat_id'
  • partner_id Many2one
    readonly=True related='company_id.partner_id'
  • phone Char
    readonly=True related='company_id.phone'
  • preview Html
    compute='_compute_preview' sanitize=False
  • preview_logo Binary
    related='logo' string='Preview logo'
  • primary_color Char
    readonly=False related='company_id.primary_color'
  • report_footer Html
    default=_default_report_footer readonly=False related='company_id.report_footer'
  • report_header Html
    readonly=False related='company_id.report_header'
  • report_layout_id Many2one → report.layout
    args: 'report.layout'
  • secondary_color Char
    readonly=False related='company_id.secondary_color'
  • vat Char
    readonly=True related='company_id.vat'
  • website Char
    readonly=True related='company_id.website'
Public methods (2)
  • document_layout_save(self)
  • extract_image_primary_secondary_colors(self, logo, white_threshold=225, mitigate=175)
    @api.model
    Identifies dominant colors First resizes the original image to improve performance, then discards transparent colors and white-ish colors, then calls the averaging method twice to evaluate both primary and secondary colors. :param logo: logo to process :param white_threshold: arbitrary value defining the maximum value a color can reach :param mitigate: arbitrary value defining the maximum value a band can reach :return colors: hex values of primary and secondary colors

New fields (0)

No new fields.

Public methods (5)
  • get_currencies(self)
    @ormcache()
  • get_frontend_session_info(self)
    @api.model
  • is_a_bot(cls)
    @classmethod
  • session_info(self)
  • webclient_rendering_context(self)

New fields (0)

No new fields.

Public methods (2)
  • display_name_for(self, models)
    @api.model
    Returns the display names from provided models which the current user can access. The result is the same whether someone tries to access an inexistent model or a model they cannot access. :models list(str): list of technical model names to lookup (e.g. `["res.partner"]`) :return: list of dicts of the form `{ "model", "display_name" }` (e.g. `{ "model": "res_partner", "display_name": "Contact"}`)
  • get_available_models(self)
    @api.model
    Return the list of models the current user has access to, with their corresponding display name.

New fields (0)

No new fields.

Public methods (1)
  • 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 (1)
  • load_web_menus(self, debug)
    Loads all menu items (all applications and their sub-menus) and processes them to be used by the webclient. Mainly, it associates with each application (top level menu) the action of its first child menu that is associated with an action (recursively), i.e. with the action to execute when the opening the app. :return: the menus (including the images in Base64)

New fields (0)

No new fields.

Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, values)

New fields (1)
  • web_app_name Char
    config_parameter='web.web_app_name' args: 'Web App Name'
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.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/16.0/web
VERSION
VERSION 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, Fabien Pinckaers, Olivier Dony, Thibault Delavallée, Denis Ledoux, Fabien Meghazi, Christophe Simonis, David Monjoie, Xavier Morel, Mohammed Shekha, Nicolas Lempereur, Géry Debongnie, Aaron Bohy, Jeremy Kersten, GitHub, Lucas Perais (lpe), Damien Bouvy, Barad Mahendra, Yannick Tivisse, qsm-odoo, Dharmraj Jhala, Romain Derie, Laurent Smet, Jigar Patel, Adrien Dieudonne, Christophe Monniez, Jorge Pinna Puissant, Jairo Llopis, Lucas Perais, Alexandre Kühn, Toufik Ben Jaa, Julien Castiaux, Rémi Rahir, Aurélien Warnon, Priyanka Kakadiya, Xavier-Do, Romeo Fragomeli, Victor Feyens, Andrea Grazioso (agr-odoo), Adrien Dieudonné, Paul Morelle, Loan (lse), William Henrotin, Sébastien Theys, Joseph Caburnay, Florent de Labarre, Julien Mougenot, Vincent Schippefilt, Anh Thao Pham (pta), svs-odoo, Luis González, Samuel Degueldre, std-odoo, Achraf (abz), David Beguin, Lucas Lefèvre, Adrien Widart, Ivan Yelizariev, Nasreddin Boulif (bon), Prakash Prajapati, Tiffany Chang (tic), Rémy Voet (ryv), Pierre Rousseau, Ivàn Todorovich, Gorash, fja-odoo, Mathieu Duckerts-Antoine, Pierre Paridans, Aurélien (avd), abd-msyukyu-odoo, Arnaud Joset, William Braeckman, Romain Estievenart, Kevin Baptiste, Benjamin Vray, Petar Najman, Kishan Gajjar, Stefan-Calin Crainiciuc (stcc), Philippe Wauthy, Xavier BOL (xbo), roen-odoo, Benoit Socias, Stanislas Sobieski, Hubert Van de Walle (huvw), Hardik Prajapati, Jacky (trj), Laurent Desausoi (lade), momegahed, Guillaume (gdi), sofiagvaladze, Nicolas (vin), william-andre, Paolo (pgi), Víctor Martínez, Florian Damhaut, Merlin (megu), MerlinGuillaume, tranngocson1996, thcl-odoo, mafo-odoo, Audric Onockx (auon), aliya, william, Florian Vranckx, Sébastien Mottet (oms), Antoine Guenet, Arthur Detroux (ard), Florian Charlier, Patrick Hoste, anhe-odoo, Nshimiyimana Séna, Louis Baudoux, Walid HANNICHE (waha), Yolann Sabaux, Abdelouahab (abla), John Laterre (jol), Ruben Gomes, Nicolas Bayet, Antoine Vandevenne (anv), Jinjiu Liu, Laurent Stukkens (LTU), Hubert Van De Walle, Mathieu Walravens, Dossogne Bertrand, luvi, Achraf, Valentin Chevalier, Renaud Thiry, Julien Banken, Vincent Larcin, Pierrot (prro), Stanislas Gueniffey, niyasraphy, jbw-odoo, nda-odoo, Hugo Santos, Iván Todorovich, bve-odoo, Habib (ayh), Loan (LSE), damr, David Monnom (moda), baa, Francois (fge), Thomas Lefebvre (thle), Matheus Leal Viana (malv), Eleftherios Kritsotakis, Louis Wicket (wil), tsm-odoo, David, Laurent Desausoi, Adrien Widart (awt), nda, Maximilien (malb), Victor Piryns (pivi), Hamza (hisl), Julien (jula), amdi-odoo, Gauthier Wala (gawa), Tom De Caluwé, Simon Genin (ges), Pierre-Yves Dufays, clesgow, Michele, Valentin Vallaeys (vava), Om Rabara, xO-Tx, Louis (loco), Jurgen (jugj), Maruan Aguerdouh (magm), Antoine Dupuis (andu), Camille Spiritus, PoMa, Sébastien Geelen (sge), hupo-odoo, Bruno Boi, Antoine (ande), flvr-odoo, FrancoisGe, Michael (mcm), Preksha Chouhan, Cedric Prieels (cpr), mehjabin, Horacio Tellez, Chong Wang (cwg), Carlos Valverde, paso-odoo, Leloup Loïc (lole), Vivek Pathak, Adrien Schoffeniels, Kartik Chavda, Hugo Carlier (Huca), Xavier Bol (xbo), Brieuc-brd, Mohit Beniwal, Ahmed Khalaf (ahkh), Nguyễn Đại Dương, AH-Yussef, Leonardo Pavan Rocha, Mahdi Cheikh Rouhou (macr), Mattis Megevand (mmeg), omra-odoo, Andrzej(pian), Nidhi Patel, Walid (wasa), sesn-odoo, Paul Stroobant, dhba-odoo, visp-odoo, stefanorigano (SRI), ravb-odoo, Mélanie, Youssef Bashandy, Eteil Djoumatchoua (etdj), Mehdi Outagant (MOU), Serge Bayet (seba), Nguyen Hong Quang, Sven Fuehr, Jérémy Hennecart (jeh), “Beekan”, Carlos Roca, Bruno Boi (boi), jobl, Adrien Minne (adrm), Bastien Fafchamps (bafa), Sergey Shebanin, Julien Carion (juca), dhba, kcv-odoo, mega, Tanguy Quéguineur, Martin Trigaux (mat), Louis Gobert, Chrysanthe (chgo), xlu-odoo, Laurent Stukkens, mano-odoo, Hoang Tien Dung, Mathieu (mano), Shaan Thakkar (THSH), kais-odoo, Manisha Tulsiyani, Xavier Luyckx (xlu), guce, Antoine (anso), sabr, Mohammed Basioni, roto-odoo, Viktors Lipskis (vili), David Van Droogenbroeck (DROD), Dardenne Florent (dafl), Morgane (morm), elhayyany, Lucas Lefèvre (lul), macadelic, thsh-odoo, wt, Julien, Michaël Mattiello, Gabriele Portente, nikj-odoo, Pierre Pulinckx (pipu), laro-odoo, Alexis Lacroix, Josh Santos, Pierre Pulinckx, Dhrumil Shah, Amin Cheloh, fdardenne, Bastien PIERRE, Anton Romanova (roan)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:49
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Odoo Web core module.
========================

This module provides the core of the Odoo Web Client.

Code Analysis

Views touched (35)
XML IDNameModelTypeStatus
address_layout address_layout ir.ui.view qweb New
assets_backend_legacy_lazy Lazy assets for legacy Views ir.ui.view qweb New
basic_layout basic_layout ir.ui.view qweb New
brand_promotion Brand Promotion ir.ui.view qweb New
brand_promotion_message Brand Promotion Message ir.ui.view qweb New
conditional_assets_tests Tests Assets Bundle ir.ui.view qweb New
external_layout external_layout ir.ui.view qweb New
external_layout_bold external_layout_bold ir.ui.view qweb New
external_layout_boxed external_layout_boxed ir.ui.view qweb New
external_layout_standard external_layout_standard ir.ui.view qweb New
external_layout_striped external_layout_striped ir.ui.view qweb New
html_container html_container ir.ui.view qweb New
html_preview_container html_preview_container ir.ui.view qweb New
internal_layout internal_layout ir.ui.view qweb New
minimal_layout minimal_layout ir.ui.view qweb New
preview_externalreport preview_externalreport ir.ui.view qweb New
preview_internalreport preview_internalreport ir.ui.view qweb New
preview_layout_report preview_layout_report ir.ui.view qweb New
report_invoice_wizard_preview report_invoice_wizard_preview ir.ui.view qweb New
report_layout Report layout ir.ui.view qweb New
report_preview_layout Report layout ir.ui.view qweb New
styles_company_report styles_company_report ir.ui.view qweb New
view_base_document_layout Document Layout base.document.layout form New
view_speedscope_index view_speedscope_index ir.ui.view qweb New
web.benchmark_suite web.benchmark_suite ir.ui.view qweb New
web.frontend_layout Frontend Layout ir.ui.view qweb Inherits web.layout
web.layout Web layout ir.ui.view qweb New
web.login Login ir.ui.view qweb New
web.login_layout Login Layout ir.ui.view qweb New
web.login_successful Login successful ir.ui.view qweb New
web.neutralize_banner Neutralize Banner ir.ui.view qweb Inherits web.layout
web.qunit_mobile_suite web.qunit_mobile_suite ir.ui.view qweb New
web.qunit_suite web.qunit_suite ir.ui.view qweb New
web.test_helpers web.test_helpers ir.ui.view qweb New
web.webclient_bootstrap web.webclient_bootstrap ir.ui.view qweb New
Models touched (9)

New fields (0)

No new fields.

Public methods (6)
  • qweb_render_view(self, view_id, domain)
    @api.model
  • read_progress_bar(self, domain, group_by, progress_bar)
    @api.model
    Gets the data needed for all the kanban column progressbars. These are fetched alongside read_group operation. :param domain - the domain used in the kanban view to filter records :param group_by - the name of the field used to group records into kanban columns :param progress_bar - the <progressbar/> declaration attributes (field, colors, sum) :return a dictionnary mapping group_by values to dictionnaries mapping progress bar field values to the related number of records
  • search_panel_select_multi_range(self, field_name, **kwargs)
    @api.model
    Return possible values of the field field_name (case select="multi"), possibly with counters and groups. :param field_name: the name of a filter field; possible types are many2one, many2many, selection. :param category_domain: domain generated by categories. Default is []. :param comodel_domain: domain of field values (if relational) (this parameter is used in _search_panel_range). Default is []. :param enable_counters: whether to count records by value. Default is False. :param expand: whether to return the full range of field values in comodel_domain or only the field image values. Default is False. :param filter_domain: domain generated by filters. Default is []. :param group_by: extra field to read on comodel, to group comodel records :param group_domain: dict, one domain for each activated group for the group_by (if any). Those domains are used to fech accurate counters for values in each group. Default is [] (many2one case) or None. :param limit: integer, maximal number of values to fetch. Default is None. :param search_domain: base domain of search. Default is []. :return: { 'values': a list of possible values, each being a dict with keys 'id' (value), 'name' (value label), '__count' (how many records with that value), 'group_id' (value of group), set if a group_by has been provided, 'group_name' (label of group), set if a group_by has been provided } or an object with an error message when limit is defined and reached.
  • search_panel_select_range(self, field_name, **kwargs)
    @api.model
    Return possible values of the field field_name (case select="one"), possibly with counters, and the parent field (if any and required) used to hierarchize them. :param field_name: the name of a field; of type many2one or selection. :param category_domain: domain generated by categories. Default is []. :param comodel_domain: domain of field values (if relational). Default is []. :param enable_counters: whether to count records by value. Default is False. :param expand: whether to return the full range of field values in comodel_domain or only the field image values (possibly filtered and/or completed with parents if hierarchize is set). Default is False. :param filter_domain: domain generated by filters. Default is []. :param hierarchize: determines if the categories must be displayed hierarchically (if possible). If set to true and _parent_name is set on the comodel field, the information necessary for the hierarchization will be returned. Default is True. :param limit: integer, maximal number of values to fetch. Default is None. :param search_domain: base domain of search. Default is []. with parents if hierarchize is set) :return: { 'parent_field': parent field on the comodel of field, or False 'values': array of dictionaries containing some info on the records available on the comodel of the field 'field_name'. The display name, the __count (how many records with that value) and possibly parent_field are fetched. } or an object with an error message when limit is defined and is reached.
  • web_read_group(self, domain, fields, groupby, limit=None, offset=0, orderby=False, lazy=True, expand=False, expand_limit=None, expand_orderby=False)
    @api.model
    Returns the result of a read_group (and optionally search for and read records inside each group), and the total number of groups matching the search domain. :param domain: search domain :param fields: list of fields to read (see ``fields``` param of ``read_group``) :param groupby: list of fields to group on (see ``groupby``` param of ``read_group``) :param limit: see ``limit`` param of ``read_group`` :param offset: see ``offset`` param of ``read_group`` :param orderby: see ``orderby`` param of ``read_group`` :param lazy: see ``lazy`` param of ``read_group`` :param expand: if true, and groupby only contains one field, read records inside each group :param expand_limit: maximum number of records to read in each group :param expand_orderby: order to apply when reading records in each group :return: { 'groups': array of read groups 'length': total number of groups }
  • web_search_read(self, domain=None, fields=None, offset=0, limit=None, order=None, count_limit=None)
    @api.model
    Performs a search_read and a search_count. :param domain: search domain :param fields: list of fields to read :param limit: maximum number of records to read :param offset: number of records to skip :param order: columns to sort results :return: { 'records': array of read records (result of a call to 'search_read') 'length': number of records matching the domain (result of a call to 'search_count') }

New fields (26)
  • company_details Html
    default=_default_company_details readonly=False related='company_id.company_details'
  • company_id Many2one → res.company
    default=<expr> required=True args: 'res.company'
  • country_id Many2one
    readonly=True related='company_id.country_id'
  • custom_colors Boolean
    compute='_compute_custom_colors' readonly=False
  • email Char
    readonly=True related='company_id.email'
  • external_report_layout_id Many2one
    readonly=False related='company_id.external_report_layout_id'
  • font Selection
    readonly=False related='company_id.font'
  • is_company_details_empty Boolean
    compute='_compute_empty_company_details'
  • layout_background Selection
    readonly=False related='company_id.layout_background'
  • layout_background_image Binary
    readonly=False related='company_id.layout_background_image'
  • logo Binary
    readonly=False related='company_id.logo'
  • logo_primary_color Char
    compute='_compute_logo_colors'
  • logo_secondary_color Char
    compute='_compute_logo_colors'
  • name Char
    readonly=True related='company_id.name'
  • paperformat_id Many2one
    readonly=False related='company_id.paperformat_id'
  • partner_id Many2one
    readonly=True related='company_id.partner_id'
  • phone Char
    readonly=True related='company_id.phone'
  • preview Html
    compute='_compute_preview' sanitize=False
  • preview_logo Binary
    related='logo' string='Preview logo'
  • primary_color Char
    readonly=False related='company_id.primary_color'
  • report_footer Html
    default=_default_report_footer readonly=False related='company_id.report_footer'
  • report_header Html
    readonly=False related='company_id.report_header'
  • report_layout_id Many2one → report.layout
    args: 'report.layout'
  • secondary_color Char
    readonly=False related='company_id.secondary_color'
  • vat Char
    readonly=True related='company_id.vat'
  • website Char
    readonly=True related='company_id.website'
Public methods (3)
  • action_open_base_document_layout(self, action_ref=None)
    @api.model
  • document_layout_save(self)
  • extract_image_primary_secondary_colors(self, logo, white_threshold=225, mitigate=175)
    @api.model
    Identifies dominant colors First resizes the original image to improve performance, then discards transparent colors and white-ish colors, then calls the averaging method twice to evaluate both primary and secondary colors. :param logo: logo to process :param white_threshold: arbitrary value defining the maximum value a color can reach :param mitigate: arbitrary value defining the maximum value a band can reach :return colors: hex values of primary and secondary colors

New fields (1)
  • view_mode Selection
    ondelete={'qweb': 'cascade'} selection_add=[('qweb', 'QWeb')]
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (5)
  • get_currencies(self)
  • get_frontend_session_info(self)
    @api.model
  • is_a_bot(cls)
    @classmethod
  • session_info(self)
  • webclient_rendering_context(self)

New fields (0)

No new fields.

Public methods (2)
  • display_name_for(self, models)
    @api.model
    Returns the display names from provided models which the current user can access. The result is the same whether someone tries to access an inexistent model or a model they cannot access. :models list(str): list of technical model names to lookup (e.g. `["res.partner"]`) :return: list of dicts of the form `{ "model", "display_name" }` (e.g. `{ "model": "res_partner", "display_name": "Contact"}`)
  • get_available_models(self)
    @api.model
    Return the list of models the current user has access to, with their corresponding display name.

New fields (0)

No new fields.

Public methods (1)
  • 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 (1)
  • load_web_menus(self, debug)
    Loads all menu items (all applications and their sub-menus) and processes them to be used by the webclient. Mainly, it associates with each application (top level menu) the action of its first child menu that is associated with an action (recursively), i.e. with the action to execute when the opening the app. :return: the menus (including the images in Base64)

New fields (0)

No new fields.

Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, values)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/15.0/web
VERSION
VERSION 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, Denis Ledoux, Christophe Simonis, David Monjoie, Xavier Morel, Mohammed Shekha, Nicolas Martinelli, Nicolas Lempereur, Géry Debongnie, Aaron Bohy, Jeremy Kersten, GitHub, Lucas Perais (lpe), Damien Bouvy, Barad Mahendra, Yannick Tivisse, qsm-odoo, Dharmraj Jhala, Pierre Masereel, Romain Derie, Laurent Smet, Adrien Dieudonne, Christophe Monniez, Jorge Pinna Puissant, Lucas Perais, Alexandre Kühn, wan, Julien Castiaux, Rémi Rahir, Aurélien Warnon, Priyanka Kakadiya, Xavier-Do, Romeo Fragomeli, Victor Feyens, Andrea Grazioso (agr-odoo), Adrien Dieudonné, Paul Morelle, Loan (lse), Sébastien Theys, Joseph Caburnay, Nasreddin (bon), oco-odoo, Julien Mougenot, Anh Thao Pham (pta), Luis González, Samuel Degueldre, Alvaro Fuentes, std-odoo, Achraf (abz), David Beguin, Lucas Lefèvre, Adrien Widart, Ivan Yelizariev, Jérémy Hennecart, Nasreddin Boulif (bon), Prakash Prajapati, Kamesh Patel, Nicolas Galler, nie, Tiffany Chang (tic), IEL, Pierre Rousseau, Ivàn Todorovich, Gorash, fja-odoo, Younn Olivier, Mathieu Duckerts-Antoine, Pierre Paridans, jbw, Djamel (otd), Hiral Bhavsar, Aurélien (avd), Romain Tartière, abd-msyukyu-odoo, Arnaud Joset, William Braeckman, Romain Estievenart, Kevin Baptiste, Benjamin Vray, Guillaume (guva), Stefan-Calin Crainiciuc (stcc), Xavier BOL (xbo), roen-odoo, Benoit Socias, Hubert Van de Walle (huvw), Hardik Prajapati, Laurent Desausoi (lade), momegahed, Guillaume (gdi), prro-odoo, Mitali Patel, Nicolas (vin), william-andre, Paolo (pgi), Florian Damhaut, Merlin (megu), MerlinGuillaume, tranngocson1996, thcl-odoo, mafo-odoo, Audric Onockx (auon), Florian Vranckx, Sébastien Mottet (oms), Antoine Guenet, Arthur Detroux (ard), anhe-odoo, Nshimiyimana Séna, Walid HANNICHE (waha), Yolann Sabaux, Abdelouahab (abla), John Laterre (jol), Nicolas Bayet, Thibault Libioulle, Jinjiu Liu, Laurent Stukkens (LTU), Hubert Van De Walle, Michael Mattiello (mcm), Mathieu Walravens, Dossogne Bertrand, luvi, Achraf, Renaud Thiry, Florent Lejoly, nda-odoo, bve-odoo, Habib (ayh), Francois (fge), Thomas Lefebvre (thle), Louis Wicket (wil), tsm-odoo, David, nda, Maximilien (malb), Victor Piryns (pivi), Julien (jula), Mariska Archielli (ram), Tom De Caluwé, Simon Genin (ges), Qiuyu (QHO), xO-Tx, Louis (loco), Levi Siuzdak (sile), Aymane (ayt), Pierre Collinet (pic), Antoine Dupuis (andu), Hansun (hale), Sébastien Geelen (sge), Bruno Boi, flvr-odoo, FrancoisGe, imanie383, Michael (mcm), Damien Abeloos, Preksha Chouhan, Cedric Prieels (cpr), mehjabin, rolandojduartem, Chong Wang (cwg), Leonardo Pavan Rocha, Mahdi Cheikh Rouhou (macr), omra-odoo, Andrzej(pian), Nidhi Patel, Walid (wasa), Paul Stroobant, Damien (abd), stefanorigano (SRI), Adam Heinz, ravb-odoo, Emilien Durieu (edu), Carlos Valverde (cvs), Nguyen Hong Quang, vava-odoo, Bruno Boi (boi), jobl, Adrien Minne (adrm), Bastien Fafchamps (bafa), Sergey Shebanin, Julien Carion (juca), dhba
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:25:28
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Odoo Web core module.
========================

This module provides the core of the Odoo Web Client.

Code Analysis

Views touched (34)
XML IDNameModelTypeStatus
address_layout address_layout ir.ui.view qweb New
assets_backend_legacy_lazy Lazy assets for legacy Views ir.ui.view qweb New
basic_layout basic_layout ir.ui.view qweb New
brand_promotion Brand Promotion ir.ui.view qweb New
brand_promotion_message Brand Promotion Message ir.ui.view qweb New
conditional_assets_tests Tests Assets Bundle ir.ui.view qweb New
debug_icon Debug Icon ir.ui.view qweb New
external_layout external_layout ir.ui.view qweb New
external_layout_bold external_layout_bold ir.ui.view qweb New
external_layout_boxed external_layout_boxed ir.ui.view qweb New
external_layout_standard external_layout_standard ir.ui.view qweb New
external_layout_striped external_layout_striped ir.ui.view qweb New
html_container html_container ir.ui.view qweb New
html_preview_container html_preview_container ir.ui.view qweb New
internal_layout internal_layout ir.ui.view qweb New
minimal_layout minimal_layout ir.ui.view qweb New
preview_externalreport preview_externalreport ir.ui.view qweb New
preview_internalreport preview_internalreport ir.ui.view qweb New
preview_layout_report preview_layout_report ir.ui.view qweb New
report_invoice_wizard_preview report_invoice_wizard_preview ir.ui.view qweb New
report_layout Report layout ir.ui.view qweb New
report_preview_layout Report layout ir.ui.view qweb New
styles_company_report styles_company_report ir.ui.view qweb New
view_base_document_layout Document Layout base.document.layout form New
view_speedscope_index view_speedscope_index ir.ui.view qweb New
web.benchmark_suite web.benchmark_suite ir.ui.view qweb New
web.frontend_layout Frontend Layout ir.ui.view qweb Inherits web.layout
web.layout Web layout ir.ui.view qweb New
web.login Login ir.ui.view qweb New
web.login_layout Login Layout ir.ui.view qweb New
web.qunit_mobile_suite web.qunit_mobile_suite ir.ui.view qweb New
web.qunit_suite web.qunit_suite ir.ui.view qweb New
web.test_helpers web.test_helpers ir.ui.view qweb New
web.webclient_bootstrap web.webclient_bootstrap ir.ui.view qweb New
Models touched (8)

New fields (0)

No new fields.

Public methods (7)
  • fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
    @api.model
  • qweb_render_view(self, view_id, domain)
    @api.model
  • read_progress_bar(self, domain, group_by, progress_bar)
    @api.model
    Gets the data needed for all the kanban column progressbars. These are fetched alongside read_group operation. :param domain - the domain used in the kanban view to filter records :param group_by - the name of the field used to group records into kanban columns :param progress_bar - the <progressbar/> declaration attributes (field, colors, sum) :return a dictionnary mapping group_by values to dictionnaries mapping progress bar field values to the related number of records
  • search_panel_select_multi_range(self, field_name, **kwargs)
    @api.model
    Return possible values of the field field_name (case select="multi"), possibly with counters and groups. :param field_name: the name of a filter field; possible types are many2one, many2many, selection. :param category_domain: domain generated by categories. Default is []. :param comodel_domain: domain of field values (if relational) (this parameter is used in _search_panel_range). Default is []. :param enable_counters: whether to count records by value. Default is False. :param expand: whether to return the full range of field values in comodel_domain or only the field image values. Default is False. :param filter_domain: domain generated by filters. Default is []. :param group_by: extra field to read on comodel, to group comodel records :param group_domain: dict, one domain for each activated group for the group_by (if any). Those domains are used to fech accurate counters for values in each group. Default is [] (many2one case) or None. :param limit: integer, maximal number of values to fetch. Default is None. :param search_domain: base domain of search. Default is []. :return: { 'values': a list of possible values, each being a dict with keys 'id' (value), 'name' (value label), '__count' (how many records with that value), 'group_id' (value of group), set if a group_by has been provided, 'group_name' (label of group), set if a group_by has been provided } or an object with an error message when limit is defined and reached.
  • search_panel_select_range(self, field_name, **kwargs)
    @api.model
    Return possible values of the field field_name (case select="one"), possibly with counters, and the parent field (if any and required) used to hierarchize them. :param field_name: the name of a field; of type many2one or selection. :param category_domain: domain generated by categories. Default is []. :param comodel_domain: domain of field values (if relational). Default is []. :param enable_counters: whether to count records by value. Default is False. :param expand: whether to return the full range of field values in comodel_domain or only the field image values (possibly filtered and/or completed with parents if hierarchize is set). Default is False. :param filter_domain: domain generated by filters. Default is []. :param hierarchize: determines if the categories must be displayed hierarchically (if possible). If set to true and _parent_name is set on the comodel field, the information necessary for the hierarchization will be returned. Default is True. :param limit: integer, maximal number of values to fetch. Default is None. :param search_domain: base domain of search. Default is []. with parents if hierarchize is set) :return: { 'parent_field': parent field on the comodel of field, or False 'values': array of dictionaries containing some info on the records available on the comodel of the field 'field_name'. The display name, the __count (how many records with that value) and possibly parent_field are fetched. } or an object with an error message when limit is defined and is reached.
  • web_read_group(self, domain, fields, groupby, limit=None, offset=0, orderby=False, lazy=True, expand=False, expand_limit=None, expand_orderby=False)
    @api.model
    Returns the result of a read_group (and optionally search for and read records inside each group), and the total number of groups matching the search domain. :param domain: search domain :param fields: list of fields to read (see ``fields``` param of ``read_group``) :param groupby: list of fields to group on (see ``groupby``` param of ``read_group``) :param limit: see ``limit`` param of ``read_group`` :param offset: see ``offset`` param of ``read_group`` :param orderby: see ``orderby`` param of ``read_group`` :param lazy: see ``lazy`` param of ``read_group`` :param expand: if true, and groupby only contains one field, read records inside each group :param expand_limit: maximum number of records to read in each group :param expand_orderby: order to apply when reading records in each group :return: { 'groups': array of read groups 'length': total number of groups }
  • web_search_read(self, domain=None, fields=None, offset=0, limit=None, order=None)
    @api.model
    Performs a search_read and a search_count. :param domain: search domain :param fields: list of fields to read :param limit: maximum number of records to read :param offset: number of records to skip :param order: columns to sort results :return: { 'records': array of read records (result of a call to 'search_read') 'length': number of records matching the domain (result of a call to 'search_count') }

New fields (25)
  • company_details Html
    default=_default_company_details readonly=False related='company_id.company_details'
  • company_id Many2one → res.company
    default=<expr> required=True args: 'res.company'
  • country_id Many2one
    readonly=True related='company_id.country_id'
  • custom_colors Boolean
    compute='_compute_custom_colors' readonly=False
  • email Char
    readonly=True related='company_id.email'
  • external_report_layout_id Many2one
    readonly=False related='company_id.external_report_layout_id'
  • font Selection
    readonly=False related='company_id.font'
  • layout_background Selection
    readonly=False related='company_id.layout_background'
  • layout_background_image Binary
    readonly=False related='company_id.layout_background_image'
  • logo Binary
    readonly=False related='company_id.logo'
  • logo_primary_color Char
    compute='_compute_logo_colors'
  • logo_secondary_color Char
    compute='_compute_logo_colors'
  • name Char
    readonly=True related='company_id.name'
  • paperformat_id Many2one
    readonly=False related='company_id.paperformat_id'
  • partner_id Many2one
    readonly=True related='company_id.partner_id'
  • phone Char
    readonly=True related='company_id.phone'
  • preview Html
    compute='_compute_preview' sanitize=False
  • preview_logo Binary
    related='logo' string='Preview logo'
  • primary_color Char
    readonly=False related='company_id.primary_color'
  • report_footer Html
    default=_default_report_footer readonly=False related='company_id.report_footer'
  • report_header Html
    readonly=False related='company_id.report_header'
  • report_layout_id Many2one → report.layout
    args: 'report.layout'
  • secondary_color Char
    readonly=False related='company_id.secondary_color'
  • vat Char
    readonly=True related='company_id.vat'
  • website Char
    readonly=True related='company_id.website'
Public methods (3)
  • action_open_base_document_layout(self, action_ref=None)
    @api.model
  • document_layout_save(self)
  • extract_image_primary_secondary_colors(self, logo, white_threshold=225, mitigate=175)
    @api.model
    Identifies dominant colors First resizes the original image to improve performance, then discards transparent colors and white-ish colors, then calls the averaging method twice to evaluate both primary and secondary colors. :param logo: logo to process :param white_threshold: arbitrary value defining the maximum value a color can reach :param mitigate: arbitrary value defining the maximum value a band can reach :return colors: hex values of primary and secondary colors

New fields (1)
  • view_mode Selection
    ondelete={'qweb': 'cascade'} selection_add=[('qweb', 'QWeb')]
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (4)
  • get_currencies(self)
  • get_frontend_session_info(self)
    @api.model
  • session_info(self)
  • webclient_rendering_context(self)

New fields (0)

No new fields.

Public methods (1)
  • 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 (1)
  • load_web_menus(self, debug)
    Loads all menu items (all applications and their sub-menus) and processes them to be used by the webclient. Mainly, it associates with each application (top level menu) the action of its first child menu that is associated with an action (recursively), i.e. with the action to execute when the opening the app. :return: the menus (including the images in Base64)

New fields (0)

No new fields.

Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, values)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/14.0/web
VERSION
VERSION 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, Denis Ledoux, Xavier ALT, Christophe Simonis, Xavier Morel, Goffin Simon, Mohammed Shekha, Cedric Snauwaert, Simon Lejeune, Nicolas Martinelli, Nicolas Lempereur, Géry Debongnie, Aaron Bohy, Jeremy Kersten, GitHub, Lucas Perais (lpe), Damien Bouvy, Barad Mahendra, Yannick Tivisse, qsm-odoo, Pierre Masereel, Romain Derie, Laurent Smet, Adrien Dieudonne, Christophe Monniez, Jorge Pinna Puissant, Alexandre Kühn, fda-odoo, wan, Julien Castiaux, Aurélien Warnon, Priyanka Kakadiya, Xavier-Do, Romeo Fragomeli, jvm-odoo, jerome hanke (jhk), Victor Feyens, Andrea Grazioso (agr-odoo), Paul Morelle, Loan (lse), Xavier Dubuc, Sébastien Theys, Joseph Caburnay, Nasreddin (bon), oco-odoo, Julien Mougenot, Jason Van Malder, Vincent Schippefilt, fw-bot, Anh Thao Pham (pta), Debauche Stéphane, svs-odoo, Luis González, Samuel Degueldre, Alvaro Fuentes, std-odoo, Achraf (abz), David Beguin, Lucas Lefèvre, Adrien Widart, Ivan Yelizariev, Jérémy Hennecart, Nasreddin Boulif (bon), Touati Djamel (otd), Prakash Prajapati, Kamesh Patel, Nicolas Galler, nie, Tiffany Chang (tic), IEL, Pierre Rousseau, Thanh Dodeur, fja-odoo, Younn Olivier, Mathieu Duckerts-Antoine, Pierre Paridans, Djamel (otd), Yenthe666, Hiral Bhavsar, Aurélien (avd), Romain Tartière, yograj tandel, abd-msyukyu-odoo, shreya thakrar, Arnaud Joset, aab-odoo, Romain Estievenart, Kevin Baptiste, Benjamin Vray, Alexandre Díaz, Guillaume (guva), Arnaud Baes, Benoit Socias, Dhruv Patel, Hubert Van de Walle (huvw), Hardik Prajapati, Laurent Desausoi (lade), Guillaume (gdi), prro-odoo, Mitali Patel, Jigar Vaghela, Paolo (pgi), Kaushalya Mandaliya, MerlinGuillaume, tranngocson1996, Audric Onockx (auon), Florian Vranckx, Arthur Detroux (ard), anhe-odoo, Nshimiyimana Séna, Walid HANNICHE (waha), Yolann Sabaux, Abdelouahab (abla), assellalou, Jinjiu Liu, Laurent Stukkens (LTU), Hubert Van De Walle, Michael Mattiello (mcm), Mathieu Walravens, Dossogne Bertrand, luvi, Achraf, Renaud Thiry, niyasraphy, bve-odoo, Louis Wicket (wil), tsm-odoo, Maximilien (malb), Siddarth Gajjar, Victor Piryns (pivi), Julien (jula), Mariska Archielli (ram), Simon Genin (ges), Louis (loco), Maruan Aguerdouh (magm), Sébastien Geelen (sge), Bruno Boi, ノウラ, Nguyen Viet Phuong, Nam Dao, FrancoisGe, imanie383, Michael (mcm), Damien Abeloos, Emanuele, Preksha Chouhan, Cedric Prieels (cpr), mehjabin
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:14:29
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Odoo Web core module.
========================

This module provides the core of the Odoo Web Client.
        

Code Analysis

Views touched (54)
XML IDNameModelTypeStatus
_assets_backend_helpers _assets_backend_helpers ir.ui.view qweb New
_assets_bootstrap _assets_bootstrap ir.ui.view qweb New
_assets_common_minimal_js _assets_common_minimal_js ir.ui.view qweb New
_assets_frontend_helpers _assets_frontend_helpers ir.ui.view qweb New
_assets_frontend_minimal_js _assets_frontend_minimal_js ir.ui.view qweb New
_assets_helpers _assets_helpers ir.ui.view qweb New
_assets_primary_variables _assets_primary_variables ir.ui.view qweb New
_assets_secondary_variables _assets_secondary_variables ir.ui.view qweb New
_assets_utils _assets_utils ir.ui.view qweb New
address_layout address_layout ir.ui.view qweb New
assets_backend Backend Assets (used in backend interface) ir.ui.view qweb New
assets_common Common Assets (used in backend interface and website) ir.ui.view qweb New
assets_common_lazy assets_common_lazy ir.ui.view qweb Inherits web.assets_common
assets_common_minimal_js assets_common_minimal_js ir.ui.view qweb New
assets_frontend Website Assets ir.ui.view qweb New
assets_frontend_lazy assets_frontend_lazy ir.ui.view qweb Inherits web.assets_frontend
assets_frontend_minimal_js assets_frontend_minimal_js ir.ui.view qweb New
assets_tests Tests Assets ir.ui.view qweb New
basic_layout basic_layout ir.ui.view qweb New
brand_promotion Brand Promotion ir.ui.view qweb New
brand_promotion_message Brand Promotion Message ir.ui.view qweb New
conditional_assets_tests Tests Assets Bundle ir.ui.view qweb New
debug_icon Debug Icon ir.ui.view qweb New
external_layout external_layout ir.ui.view qweb New
external_layout_background external_layout_background ir.ui.view qweb New
external_layout_boxed external_layout_boxed ir.ui.view qweb New
external_layout_clean external_layout_clean ir.ui.view qweb New
external_layout_standard external_layout_standard ir.ui.view qweb New
html_container html_container ir.ui.view qweb New
html_preview_container html_preview_container ir.ui.view qweb New
internal_layout internal_layout ir.ui.view qweb New
minimal_layout minimal_layout ir.ui.view qweb New
pdf_js_lib PDF JS Library ir.ui.view qweb New
preview_externalreport preview_externalreport ir.ui.view qweb New
preview_internalreport preview_internalreport ir.ui.view qweb New
report_assets_common report_assets_common ir.ui.view qweb New
report_assets_pdf report_assets_pdf ir.ui.view qweb New
report_invoice_wizard_preview report_invoice_wizard_preview ir.ui.view qweb New
report_layout Report layout ir.ui.view qweb New
report_preview_layout Report layout ir.ui.view qweb New
styles_company_report styles_company_report ir.ui.view qweb New
view_base_document_layout Document Layout base.document.layout form New
web.assets_backend_prod_only web.assets_backend_prod_only ir.ui.view qweb New
web.benchmark_suite web.benchmark_suite ir.ui.view qweb New
web.frontend_layout Frontend Layout ir.ui.view qweb Inherits web.layout
web.layout Web layout ir.ui.view qweb New
web.login Login ir.ui.view qweb New
web.login_layout Login Layout ir.ui.view qweb New
web.qunit_mobile_suite web.qunit_mobile_suite ir.ui.view qweb New
web.qunit_mobile_suite_tests web.qunit_mobile_suite_tests ir.ui.view qweb New
web.qunit_suite web.qunit_suite ir.ui.view qweb New
web.qunit_suite_tests web.qunit_suite_tests ir.ui.view qweb New
web.tests_assets web.tests_assets ir.ui.view qweb New
web.webclient_bootstrap web.webclient_bootstrap ir.ui.view qweb New
Models touched (7)

New fields (0)

No new fields.

Public methods (7)
  • fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
    @api.model
  • qweb_render_view(self, view_id, domain)
    @api.model
  • read_progress_bar(self, domain, group_by, progress_bar)
    @api.model
    Gets the data needed for all the kanban column progressbars. These are fetched alongside read_group operation. :param domain - the domain used in the kanban view to filter records :param group_by - the name of the field used to group records into kanban columns :param progress_bar - the <progressbar/> declaration attributes (field, colors, sum) :return a dictionnary mapping group_by values to dictionnaries mapping progress bar field values to the related number of records
  • search_panel_select_multi_range(self, field_name, **kwargs)
    @api.model
    Return possible values of the field field_name (case select="multi"), possibly with counters and groups. :param field_name: the name of a filter field; possible types are many2one, many2many, selection. :param category_domain: domain generated by categories. Default is []. :param comodel_domain: domain of field values (if relational) (this parameter is used in _search_panel_range). Default is []. :param enable_counters: whether to count records by value. Default is False. :param expand: whether to return the full range of field values in comodel_domain or only the field image values. Default is False. :param filter_domain: domain generated by filters. Default is []. :param group_by: extra field to read on comodel, to group comodel records :param group_domain: dict, one domain for each activated group for the group_by (if any). Those domains are used to fech accurate counters for values in each group. Default is [] (many2one case) or None. :param limit: integer, maximal number of values to fetch. Default is None. :param search_domain: base domain of search. Default is []. :return: { 'values': a list of possible values, each being a dict with keys 'id' (value), 'name' (value label), '__count' (how many records with that value), 'group_id' (value of group), set if a group_by has been provided, 'group_name' (label of group), set if a group_by has been provided } or an object with an error message when limit is defined and reached.
  • search_panel_select_range(self, field_name, **kwargs)
    @api.model
    Return possible values of the field field_name (case select="one"), possibly with counters, and the parent field (if any and required) used to hierarchize them. :param field_name: the name of a field; of type many2one or selection. :param category_domain: domain generated by categories. Default is []. :param comodel_domain: domain of field values (if relational). Default is []. :param enable_counters: whether to count records by value. Default is False. :param expand: whether to return the full range of field values in comodel_domain or only the field image values (possibly filtered and/or completed with parents if hierarchize is set). Default is False. :param filter_domain: domain generated by filters. Default is []. :param hierarchize: determines if the categories must be displayed hierarchically (if possible). If set to true and _parent_name is set on the comodel field, the information necessary for the hierarchization will be returned. Default is True. :param limit: integer, maximal number of values to fetch. Default is None. :param search_domain: base domain of search. Default is []. with parents if hierarchize is set) :return: { 'parent_field': parent field on the comodel of field, or False 'values': array of dictionaries containing some info on the records available on the comodel of the field 'field_name'. The display name, the __count (how many records with that value) and possibly parent_field are fetched. } or an object with an error message when limit is defined and is reached.
  • web_read_group(self, domain, fields, groupby, limit=None, offset=0, orderby=False, lazy=True, expand=False, expand_limit=None, expand_orderby=False)
    @api.model
    Returns the result of a read_group (and optionally search for and read records inside each group), and the total number of groups matching the search domain. :param domain: search domain :param fields: list of fields to read (see ``fields``` param of ``read_group``) :param groupby: list of fields to group on (see ``groupby``` param of ``read_group``) :param limit: see ``limit`` param of ``read_group`` :param offset: see ``offset`` param of ``read_group`` :param orderby: see ``orderby`` param of ``read_group`` :param lazy: see ``lazy`` param of ``read_group`` :param expand: if true, and groupby only contains one field, read records inside each group :param expand_limit: maximum number of records to read in each group :param expand_orderby: order to apply when reading records in each group :return: { 'groups': array of read groups 'length': total number of groups }
  • web_search_read(self, domain=None, fields=None, offset=0, limit=None, order=None)
    @api.model
    Performs a search_read and a search_count. :param domain: search domain :param fields: list of fields to read :param limit: maximum number of records to read :param offset: number of records to skip :param order: columns to sort results :return: { 'records': array of read records (result of a call to 'search_read') 'length': number of records matching the domain (result of a call to 'search_count') }

New fields (22)
  • company_id Many2one → res.company
    default=<expr> required=True args: 'res.company'
  • country_id Many2one
    readonly=True related='company_id.country_id'
  • custom_colors Boolean
    compute='_compute_custom_colors' readonly=False
  • email Char
    readonly=True related='company_id.email'
  • external_report_layout_id Many2one
    readonly=False related='company_id.external_report_layout_id'
  • font Selection
    readonly=False related='company_id.font'
  • logo Binary
    readonly=False related='company_id.logo'
  • logo_primary_color Char
    compute='_compute_logo_colors'
  • logo_secondary_color Char
    compute='_compute_logo_colors'
  • name Char
    readonly=True related='company_id.name'
  • paperformat_id Many2one
    readonly=False related='company_id.paperformat_id'
  • partner_id Many2one
    readonly=True related='company_id.partner_id'
  • phone Char
    readonly=True related='company_id.phone'
  • preview Html
    compute='_compute_preview' sanitize=False sanitize_attributes=False sanitize_form=False sanitize_style=False sanitize_tags=False strip_classes=False strip_style=False
  • preview_logo Binary
    related='logo' string='Preview logo'
  • primary_color Char
    readonly=False related='company_id.primary_color'
  • report_footer Text
    readonly=False related='company_id.report_footer'
  • report_header Text
    readonly=False related='company_id.report_header'
  • report_layout_id Many2one → report.layout
    args: 'report.layout'
  • secondary_color Char
    readonly=False related='company_id.secondary_color'
  • vat Char
    readonly=True related='company_id.vat'
  • website Char
    readonly=True related='company_id.website'
Public methods (2)
  • action_open_base_document_layout(self, action_ref=None)
    @api.model
  • document_layout_save(self)

New fields (1)
  • view_mode Selection
    ondelete={'qweb': 'cascade'} selection_add=[('qweb', 'QWeb')]
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (4)
  • get_currencies(self)
  • get_frontend_session_info(self)
    @api.model
  • session_info(self)
  • webclient_rendering_context(self)

New fields (0)

No new fields.

Public methods (1)
  • 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)
  • create(self, values)
    @api.model
  • write(self, values)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/13.0/web
VERSION
VERSION 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, Thibault Delavallée, Denis Ledoux, Xavier ALT, Christophe Simonis, David Monjoie, Xavier Morel, Mohammed Shekha, Cedric Snauwaert, Simon Lejeune, Ravi Gohil, Nicolas Martinelli, Nicolas Lempereur, qdp-odoo, Géry Debongnie, Aaron Bohy, Jeremy Kersten, GitHub, Lucas Perais (lpe), Damien Bouvy, Barad Mahendra, Yannick Tivisse, qsm-odoo, Martin Geubelle, Dharmraj Jhala, Odoo Online, Pierre Masereel, Romain Derie, Jigar Patel, jem-odoo, Adrien Dieudonne, RomainLibert, Christophe Monniez, Jorge Pinna Puissant, Alexandre Kühn, Toufik Ben Jaa, Adrian Torres, wan, Julien Castiaux, Aurélien Warnon, Priyanka Kakadiya, Xavier-Do, Rishabh Jadia, Romeo Fragomeli, jvm-odoo, mgh-odoo, jerome hanke (jhk), Victor Feyens, Florimond Husquinet (fhu), Andrea Grazioso (agr-odoo), William Henrotin, Sébastien Theys, Nasreddin (bon), Julien Mougenot, Jason Van Malder, Vincent Schippefilt, fw-bot, Anh Thao Pham (pta), Debauche Stéphane, svs-odoo, Luis González, Samuel Degueldre, Alvaro Fuentes, Achraf (abz), Lucas Lefèvre, Adrien Widart, Ivan Yelizariev, Nasreddin Boulif (bon), Touati Djamel (otd), Prakash Prajapati, Nicolas Galler, Swapnesh Shah, nie, IEL, Pierre Rousseau, Thanh Dodeur, fja-odoo, ThanhDodeurOdoo, Mathieu Duckerts-Antoine, Pierre Paridans, Djamel (otd), Hiral Bhavsar, jbm-odoo, Aurélien (avd), Romain Tartière, yograj tandel, abd-msyukyu-odoo, shreya thakrar, Arnaud Joset, aab-odoo, Jinal Patel, Romain Estievenart, Kevin Baptiste, Alexandre Díaz, Kishan Gajjar, Guillaume (guva), Arnaud Baes, Dhruv Patel, Hubert Van de Walle (huvw), Hardik Prajapati, Geoffroy Larue, prro-odoo, mcm-odoo, Mitali Patel, Paolo (pgi), Hetal Dhanak, Kaushalya Mandaliya, MerlinGuillaume, jpr-odoo, Antoine Guenet, Louis Baudoux, Juhil Somaiya, Yolann Sabaux, Abdelouahab (abla), MaxLarue, Jinjiu Liu, Hubert Van De Walle, Michael Mattiello (mcm), Mathieu Walravens, Sarah Van Bogaert, Federico (fega), Dossogne Bertrand, adr, luvi, Achraf
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:06:42
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Odoo Web core module.
========================

This module provides the core of the Odoo Web Client.
        

Code Analysis

Views touched (47)
XML IDNameModelTypeStatus
_assets_backend_helpers _assets_backend_helpers ir.ui.view qweb New
_assets_bootstrap _assets_bootstrap ir.ui.view qweb New
_assets_common_minimal_js _assets_common_minimal_js ir.ui.view qweb New
_assets_frontend_helpers _assets_frontend_helpers ir.ui.view qweb New
_assets_frontend_minimal_js _assets_frontend_minimal_js ir.ui.view qweb New
_assets_helpers _assets_helpers ir.ui.view qweb New
_assets_primary_variables _assets_primary_variables ir.ui.view qweb New
_assets_secondary_variables _assets_secondary_variables ir.ui.view qweb New
_assets_utils _assets_utils ir.ui.view qweb New
address_layout address_layout ir.ui.view qweb New
assets_backend Backend Assets (used in backend interface) ir.ui.view qweb New
assets_common Common Assets (used in backend interface and website) ir.ui.view qweb New
assets_common_lazy assets_common_lazy ir.ui.view qweb Inherits web.assets_common
assets_common_minimal_js assets_common_minimal_js ir.ui.view qweb New
assets_frontend Website Assets ir.ui.view qweb New
assets_frontend_lazy assets_frontend_lazy ir.ui.view qweb Inherits web.assets_frontend
assets_frontend_minimal_js assets_frontend_minimal_js ir.ui.view qweb New
assets_tests Tests Assets ir.ui.view qweb New
basic_layout basic_layout ir.ui.view qweb New
brand_promotion Brand Promotion ir.ui.view qweb New
brand_promotion_message Brand Promotion Message ir.ui.view qweb New
conditional_assets_tests Tests Assets Bundle ir.ui.view qweb New
debug_icon Debug Icon ir.ui.view qweb New
external_layout external_layout ir.ui.view qweb New
external_layout_background external_layout_background ir.ui.view qweb New
external_layout_boxed external_layout_boxed ir.ui.view qweb New
external_layout_clean external_layout_clean ir.ui.view qweb New
external_layout_standard external_layout_standard ir.ui.view qweb New
html_container html_container ir.ui.view qweb New
internal_layout internal_layout ir.ui.view qweb New
minimal_layout minimal_layout ir.ui.view qweb New
pdf_js_lib PDF JS Library ir.ui.view qweb New
preview_externalreport preview_externalreport ir.ui.view qweb New
preview_internalreport preview_internalreport ir.ui.view qweb New
report_assets_common report_assets_common ir.ui.view qweb New
report_assets_pdf report_assets_pdf ir.ui.view qweb New
report_layout Report layout ir.ui.view qweb New
styles_company_report styles_company_report ir.ui.view qweb New
web.benchmark_suite web.benchmark_suite ir.ui.view qweb New
web.frontend_layout Frontend Layout ir.ui.view qweb Inherits web.layout
web.js_tests_assets web.js_tests_assets ir.ui.view qweb New
web.layout Web layout ir.ui.view qweb New
web.login Login ir.ui.view qweb New
web.login_layout Login Layout ir.ui.view qweb New
web.qunit_mobile_suite web.qunit_mobile_suite ir.ui.view qweb New
web.qunit_suite web.qunit_suite ir.ui.view qweb New
web.webclient_bootstrap web.webclient_bootstrap ir.ui.view qweb New
Models touched (5)

New fields (0)

No new fields.

Public methods (7)
  • fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
    @api.model
  • qweb_render_view(self, view_id, domain)
    @api.model
  • read_progress_bar(self, domain, group_by, progress_bar)
    @api.model
    Gets the data needed for all the kanban column progressbars. These are fetched alongside read_group operation. :param domain - the domain used in the kanban view to filter records :param group_by - the name of the field used to group records into kanban columns :param progress_bar - the <progressbar/> declaration attributes (field, colors, sum) :return a dictionnary mapping group_by values to dictionnaries mapping progress bar field values to the related number of records
  • search_panel_select_multi_range(self, field_name, **kwargs)
    @api.model
    Return possible values of the field field_name (case select="multi"), possibly with counters and groups. :param field_name: the name of a filter field; possible types are many2one, many2many, selection. :param search_domain: base domain of search :param category_domain: domain generated by categories :param filter_domain: domain generated by filters :param comodel_domain: domain of field values (if relational) :param group_by: extra field to read on comodel, to group comodel records :param disable_counters: whether to count records by value :return: a list of possible values, each being a dict with keys 'id' (value), 'name' (value label), 'count' (how many records with that value), 'group_id' (value of group), 'group_name' (label of group).
  • search_panel_select_range(self, field_name)
    @api.model
    Return possible values of the field field_name (case select="one") and the parent field (if any) used to hierarchize them. :param field_name: the name of a many2one category field :return: { 'parent_field': parent field on the comodel of field, or False 'values': array of dictionaries containing some info on the records available on the comodel of the field 'field_name'. The display name (and possibly parent_field) are fetched. }
  • web_read_group(self, domain, fields, groupby, limit=None, offset=0, orderby=False, lazy=True, expand=False, expand_limit=None, expand_orderby=False)
    @api.model
    Returns the result of a read_group (and optionally search for and read records inside each group), and the total number of groups matching the search domain. :param domain: search domain :param fields: list of fields to read (see ``fields``` param of ``read_group``) :param groupby: list of fields to group on (see ``groupby``` param of ``read_group``) :param limit: see ``limit`` param of ``read_group`` :param offset: see ``offset`` param of ``read_group`` :param orderby: see ``orderby`` param of ``read_group`` :param lazy: see ``lazy`` param of ``read_group`` :param expand: if true, and groupby only contains one field, read records inside each group :param expand_limit: maximum number of records to read in each group :param expand_orderby: order to apply when reading records in each group :return: { 'groups': array of read groups 'length': total number of groups }
  • web_search_read(self, domain=None, fields=None, offset=0, limit=None, order=None)
    @api.model
    Performs a search_read and a search_count. :param domain: search domain :param fields: list of fields to read :param limit: maximum number of records to read :param offset: number of records to skip :param order: columns to sort results :return: { 'records': array of read records (result of a call to 'search_read') 'length': number of records matching the domain (result of a call to 'search_count') }

New fields (1)
  • view_mode Selection
    selection_add=[('qweb', 'QWeb')]
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (4)
  • get_currencies(self)
  • get_frontend_session_info(self)
    @api.model
  • session_info(self)
  • webclient_rendering_context(self)

New fields (0)

No new fields.

Public methods (1)
  • record_to_html(self, record, field_name, options)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • create(self, values)
    @api.model
  • write(self, values)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/12.0/web
VERSION
VERSION 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, Antony Lesuisse, Olivier Dony, Thibault Delavallée, Denis Ledoux, Xavier ALT, Christophe Simonis, David Monjoie, Xavier Morel, Goffin Simon, Mohammed Shekha, Simon Lejeune, Nicolas Martinelli, Nicolas Lempereur, Julien Legros, xmo-odoo, qdp-odoo, Géry Debongnie, Aaron Bohy, ged-odoo, Jeremy Kersten, GitHub, Lucas Perais (lpe), Damien Bouvy, Yannick Tivisse, Alexandre Kühn, qsm-odoo, Martin Geubelle, Dharmraj Jhala, Pierre Masereel, Romain Derie, Toufik Benjaa, jem-odoo, Adrien Dieudonne, RomainLibert, Christophe Monniez, len-odoo, Julien (juc) Castiaux, Jorge Pinna Puissant, Nans Lefebvre, Alexandre Kühn, fda-odoo, Adrian Torres, XavierDo, Julien Castiaux, Rémi Rahir, Aurélien Warnon, Xavier-Do, Romeo Fragomeli, jvm-odoo, jerome hanke (jhk), Victor Feyens, Florimond Husquinet (fhu), Andrea Grazioso (agr-odoo), Sébastien Theys, Nasreddin (bon), Julien Mougenot, Khoi Nguyen, Vincent Schippefilt, fw-bot, Anh Thao Pham (pta), VincentSchippefilt, Luis González, Alvaro Fuentes, Quentin Smetz (qsm), Achraf (abz), David Beguin, Lucas Lefèvre, lul-odoo, Adrien Widart, Ivan Yelizariev, Nicolas Galler, nie, IEL, Andrius Laukavičius, fja-odoo, ThanhDodeurOdoo, Mathieu Duckerts-Antoine, Pierre Paridans, TWA, Varun Raval, sed-odoo, edy1192, Romain Tartière, yograj tandel, Francois Volral, abd-msyukyu-odoo, shreya thakrar, Arnaud Joset, aab-odoo, Andrey Semko
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:57:01
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Odoo Web core module.
========================

This module provides the core of the Odoo Web Client.
        

Code Analysis

Views touched (35)
XML IDNameModelTypeStatus
_assets_backend_helpers _assets_backend_helpers ir.ui.view qweb New
_assets_bootstrap _assets_bootstrap ir.ui.view qweb New
_assets_frontend_helpers _assets_frontend_helpers ir.ui.view qweb New
_assets_helpers _assets_helpers ir.ui.view qweb New
_assets_primary_variables _assets_primary_variables ir.ui.view qweb New
_assets_secondary_variables _assets_secondary_variables ir.ui.view qweb New
_assets_utils _assets_utils ir.ui.view qweb New
address_layout address_layout ir.ui.view qweb New
assets_backend Backend Assets (used in backend interface) ir.ui.view qweb New
assets_common Common Assets (used in backend interface and website) ir.ui.view qweb New
basic_layout basic_layout ir.ui.view qweb New
external_layout external_layout ir.ui.view qweb New
external_layout_background external_layout_background ir.ui.view qweb New
external_layout_boxed external_layout_boxed ir.ui.view qweb New
external_layout_clean external_layout_clean ir.ui.view qweb New
external_layout_standard external_layout_standard ir.ui.view qweb New
html_container html_container ir.ui.view qweb New
internal_layout internal_layout ir.ui.view qweb New
minimal_layout minimal_layout ir.ui.view qweb New
pdf_js_lib PDF JS Library ir.ui.view qweb New
preview_externalreport preview_externalreport ir.ui.view qweb New
preview_internalreport preview_internalreport ir.ui.view qweb New
report_assets_common report_assets_common ir.ui.view qweb New
report_assets_editor report_assets_editor ir.ui.view qweb New
report_assets_pdf report_assets_pdf ir.ui.view qweb New
report_layout Report layout ir.ui.view qweb New
web.assets_frontend Website Assets ir.ui.view qweb New
web.benchmark_suite web.benchmark_suite ir.ui.view qweb New
web.js_tests_assets web.js_tests_assets ir.ui.view qweb New
web.layout Web layout ir.ui.view qweb New
web.login Login ir.ui.view qweb New
web.login_layout Login Layout ir.ui.view qweb New
web.qunit_mobile_suite web.qunit_mobile_suite ir.ui.view qweb New
web.qunit_suite web.qunit_suite ir.ui.view qweb New
web.webclient_bootstrap web.webclient_bootstrap ir.ui.view qweb New
Models touched (4)

New fields (0)

No new fields.

Public methods (1)
  • read_progress_bar(self, domain, group_by, progress_bar)
    @api.model
    Gets the data needed for all the kanban column progressbars. These are fetched alongside read_group operation. :param domain - the domain used in the kanban view to filter records :param group_by - the name of the field used to group records into kanban columns :param progress_bar - the <progressbar/> declaration attributes (field, colors, sum) :return a dictionnary mapping group_by values to dictionnaries mapping progress bar field values to the related number of records

New fields (0)

No new fields.

Public methods (3)
  • get_currencies(self)
  • session_info(self)
  • webclient_rendering_context(self)

New fields (0)

No new fields.

Public methods (1)
  • record_to_html(self, record, field_name, options)
    @api.model

New fields (3)
  • image Char
    string='Preview image src'
  • pdf Char
    string='Preview pdf src'
  • view_id Many2one → ir.ui.view
    required=True args: 'ir.ui.view', 'Document Template'
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
VERSION
VERSION 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, Fabien Meghazi, Xavier ALT, Christophe Simonis, David Monjoie, Xavier Morel, Goffin Simon, Mohammed Shekha, Cedric Snauwaert, Simon Lejeune, Nicolas Martinelli, Nicolas Lempereur, Jérome Maes, Richard Mathot, qdp-odoo, Géry Debongnie, Aaron Bohy, ged-odoo, Jeremy Kersten, GitHub, Lucas Perais (lpe), Damien Bouvy, Yannick Tivisse, Alexandre Kühn, qsm-odoo, Martin Geubelle, Dharmraj Jhala, Odoo Online, Pierre Masereel, Romain Derie, Laurent Smet, Denis Vermylen (dve), Toufik Benjaa, DVE, fwi-odoo, Adrien Dieudonne, rde, Christophe Monniez, len-odoo, Jorge Pinna Puissant, Nans Lefebvre, Denis Vermylen, Alexandre Kühn, fda-odoo, kujiu, Julien Castiaux, Rémi Rahir, jvm-odoo, jerome hanke (jhk), Adrien Dieudonné, Sébastien Theys, Julien Mougenot, Jason Van Malder, Khoi Nguyen, Vincent Schippefilt, Elkasitu
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:53:43
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Odoo Web core module.
========================

This module provides the core of the Odoo Web Client.
        

Code Analysis

Views touched (32)
XML IDNameModelTypeStatus
basic_layout basic_layout ir.ui.view qweb New
external_layout external_layout ir.ui.view qweb New
external_layout_background external_layout_background ir.ui.view qweb New
external_layout_boxed external_layout_boxed ir.ui.view qweb New
external_layout_clean external_layout_clean ir.ui.view qweb New
external_layout_standard external_layout_standard ir.ui.view qweb New
html_container html_container ir.ui.view qweb New
internal_layout internal_layout ir.ui.view qweb New
minimal_layout minimal_layout ir.ui.view qweb New
pdf_js_lib PDF JS Library ir.ui.view qweb New
preview_externalreport preview_externalreport ir.ui.view qweb New
preview_internalreport preview_internalreport ir.ui.view qweb New
report_assets_common report_assets_common ir.ui.view qweb New
report_assets_editor report_assets_editor ir.ui.view qweb New
report_assets_pdf report_assets_pdf ir.ui.view qweb New
report_layout Report layout ir.ui.view qweb New
web.assets_backend Backend Assets (used in backend interface) ir.ui.view qweb New
web.assets_common Common Assets (used in backend interface and website) ir.ui.view qweb New
web.assets_frontend Website Assets ir.ui.view qweb New
web.benchmark_suite web.benchmark_suite ir.ui.view qweb New
web.js_tests_assets web.js_tests_assets ir.ui.view qweb New
web.layout Web layout ir.ui.view qweb New
web.less_helpers web.less_helpers ir.ui.view qweb New
web.login Login ir.ui.view qweb New
web.login_layout Login Layout ir.ui.view qweb New
web.menu web.menu ir.ui.view qweb New
web.menu_link web.menu_link ir.ui.view qweb New
web.menu_secondary web.menu_secondary ir.ui.view qweb New
web.menu_secondary_submenu web.menu_secondary_submenu ir.ui.view qweb New
web.qunit_mobile_suite web.qunit_mobile_suite ir.ui.view qweb New
web.qunit_suite web.qunit_suite ir.ui.view qweb New
web.webclient_bootstrap web.webclient_bootstrap ir.ui.view qweb New
Models touched (3)

New fields (0)

No new fields.

Public methods (1)
  • read_progress_bar(self, domain, group_by, progress_bar)
    @api.model
    Gets the data needed for all the kanban column progressbars. These are fetched alongside read_group operation. :param domain - the domain used in the kanban view to filter records :param group_by - the name of the field used to group records into kanban columns :param progress_bar - the <progressbar/> declaration attributes (field, colors, sum) :return a dictionnary mapping group_by values to dictionnaries mapping progress bar field values to the related number of records

New fields (0)

No new fields.

Public methods (3)
  • get_currencies(self)
  • session_info(self)
  • webclient_rendering_context(self)

New fields (0)

No new fields.

Public methods (1)
  • record_to_html(self, record, field_name, options)
    @api.model
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/10.0/web
VERSION
VERSION 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, Thibault Delavallée, Josse Colpaert, Denis Ledoux, Fabien Meghazi, Xavier ALT, Christophe Simonis, Xavier Morel, Goffin Simon, Cedric Snauwaert, Simon Lejeune, Nicolas Martinelli, Nicolas Lempereur, Julien Legros, xmo-odoo, Richard Mathot, qdp-odoo, Géry Debongnie, Aaron Bohy, ged-odoo, Jeremy Kersten, GitHub, Lucas Perais (lpe), Damien Bouvy, Yannick Tivisse, qsm-odoo, Martin Geubelle, Pierre Masereel, Romain Derie, Denis Vermylen (dve), Toufik Benjaa, fwi-odoo, Adrien Dieudonne, len-odoo, Denis Vermylen, Alexandre Kühn, Adrian Torres
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:50:48
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Odoo Web core module.
========================

This module provides the core of the Odoo Web Client.
        

Code Analysis

Views touched (15)
XML IDNameModelTypeStatus
pdf_js_lib PDF JS Library ir.ui.view qweb New
web.assets_backend web.assets_backend ir.ui.view qweb New
web.assets_common web.assets_common ir.ui.view qweb New
web.assets_frontend web.assets_frontend ir.ui.view qweb New
web.layout Web layout ir.ui.view qweb New
web.less_helpers web.less_helpers ir.ui.view qweb New
web.login Login ir.ui.view qweb New
web.login_layout Login Layout ir.ui.view qweb New
web.menu web.menu ir.ui.view qweb New
web.menu_link web.menu_link ir.ui.view qweb New
web.menu_secondary web.menu_secondary ir.ui.view qweb New
web.menu_secondary_submenu web.menu_secondary_submenu ir.ui.view qweb New
web.qunit_suite web.qunit_suite ir.ui.view qweb New
web.webclient_bootstrap web.webclient_bootstrap ir.ui.view qweb New
web.webclient_script web.webclient_script ir.ui.view qweb New
Models touched (1)

New fields (0)

No new fields.

Public methods (3)
  • get_currencies(self)
  • session_info(self)
  • webclient_rendering_context(self)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/9.0/web
VERSION
VERSION 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, Antony Lesuisse, Olivier Dony, Thibault Delavallée, Denis Ledoux, Fabien Meghazi, Christophe Simonis, David Monjoie, Xavier Morel, Joren Van Onder, Goffin Simon, Cedric Snauwaert, Simon Lejeune, Frédéric van der Essen, Nicolas Martinelli, Nicolas Lempereur, Jérome Maes, Julien Legros, xmo-odoo, Richard Mathot, qdp-odoo, Géry Debongnie, Aaron Bohy, ged-odoo, Jeremy Kersten, Lucas Perais (lpe), Damien Bouvy, Julien De Coster, Arthur Maniet, Yannick Tivisse, Alexandre Kühn, qsm-odoo, Cédric Snauwaert, Martin Geubelle, Pierre Masereel, Romain Derie, Toufik Benjaa, fwi-odoo, Stefano Rigano, tbe-odoo, Adrien Dieudonne
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:48:30
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
OpenERP Web core module.
========================

This module provides the core of the OpenERP Web Client.
        

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
web.assets_backend web.assets_backend ir.ui.view qweb New
web.assets_common web.assets_common ir.ui.view qweb New
web.bootstrap web.bootstrap ir.ui.view qweb New
web.layout Web layout ir.ui.view qweb New
web.login Login ir.ui.view qweb New
web.login_layout Login Layout ir.ui.view qweb New
web.menu web.menu ir.ui.view qweb New
web.menu_link web.menu_link ir.ui.view qweb New
web.menu_secondary web.menu_secondary ir.ui.view qweb New
web.menu_secondary_submenu web.menu_secondary_submenu ir.ui.view qweb New
web.qunit_suite web.qunit_suite ir.ui.view qweb New
web.webclient_bootstrap Webclient Bootstrap ir.ui.view qweb New
Models touched (0)

No models found for this module.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/8.0/web
VERSION
VERSION 1.0
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Randhir Mayatra (OpenERP), Odoo Translation Bot, Turkesh Patel (Open ERP), Christophe Matthieu, Antonin Bourguignon, ajay javiya (OpenERP), Martin Trigaux, Fabien Pinckaers, Antony Lesuisse, Olivier Dony, Thibault Delavallée, Vo Minh Thu, Launchpad Translations on behalf of openerp, Quentin (OpenERP), Denis Ledoux, Fabien Meghazi, niv-openerp, ggh-openerp, Christophe Simonis, David Monjoie, Xavier Morel, Frederic van der Essen, Goffin Simon, Anael Closson, Mohammed Shekha, dle@openerp.com, Bhumi Thakkar (Open ERP), Cedric Snauwaert, Simon Lejeune, Frédéric van der Essen, Vishmita, Nicolas Martinelli, Vidhin Mehta (OpenERP), RGA(OpenERP), Kersten Jeremy, Amit Bhavsar (Open ERP), Paramjit Singh Sahota, Nicolas Lempereur, Jérome Maes, Anand Patel (OpenERP), Vidhin Mehta, Julien Legros, xmo-odoo, Amit Vora, Richard Mathot, Géry Debongnie, jke-openerp, Aaron Bohy, bth-openerp, Pariket Trivedi, Vishmita Jadeja (openerp), Richard Mathot (OpenERP), ged-odoo, chm@openerp.com, Mahendra Barad (OpenERP), Jeremy Kersten, Kunal Chavda (Open ERP), ima-openerp, Gery Debongnie, Randhir Mayatra rma-openerp, Chirag Dodiya (OpenERP), ssh-odoo, Rashmin Lumbhani (OpenERP), Barad Mahendra, Alexandre Kühn, sle-odoo, qsm-odoo, Cédric Snauwaert, Bruce Nguyen, etenesaca
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:45:39
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
OpenERP Web core module.
========================

This module provides the core of the OpenERP Web Client.
        

Code Analysis

Views touched (14)
XML IDNameModelTypeStatus
jqueryui_conflict jquery.ui.conflict ir.ui.view qweb New
web.assets_backend web.assets_backend ir.ui.view qweb New
web.assets_common web.assets_common ir.ui.view qweb New
web.assets_webclient_manifest web.assets_webclient_manifest ir.ui.view qweb New
web.database_select Database select widget ir.ui.view qweb New
web.layout Web layout ir.ui.view qweb New
web.login Login ir.ui.view qweb New
web.login_layout Login Layout ir.ui.view qweb New
web.menu web.menu ir.ui.view qweb New
web.menu_link web.menu_link ir.ui.view qweb New
web.menu_secondary web.menu_secondary ir.ui.view qweb New
web.menu_secondary_submenu web.menu_secondary_submenu ir.ui.view qweb New
web.qunit_suite web.qunit_suite ir.ui.view qweb New
web.webclient_bootstrap Webclient Bootstrap ir.ui.view qweb New
Models touched (0)

No models found for this module.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/7.0/web
VERSION
VERSION 1.0
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Twinkle Christian (OpenERP), Cecile Tonglet, Stephane Wirtel, Odoo Translation Bot, Turkesh Patel (Open ERP), Christophe Matthieu, Pinakin Nayi (OpenERP), Harry (OpenERP), Antonin Bourguignon, ajay javiya (OpenERP), Martin Trigaux, Ajay Chauhan (OpenERP), Purnendu Singh (OpenERP), Fabien Pinckaers, Antony Lesuisse, Bharat Devnani (OpenERP), Olivier Dony, Divyesh Makwana (Open ERP), Tejas Tank, Thibault Delavallée, Vo Minh Thu, pso (OpenERP), Sbh (Openerp), Amit Patel (OpenERP), Launchpad Translations on behalf of openerp, vta vta@openerp.com, Quentin (OpenERP), Kuldeep Joshi (OpenERP), Denis Ledoux, Mayur Maheshwari (OpenERP), Jigar Amin - OpenERP, Sanjay Gohel (Open ERP), Fabien Meghazi, niv-openerp, ggh-openerp, Xavier ALT, Christophe Simonis, David Monjoie, Ravi Gohil (OpenERP), Xavier Morel, Jiten (OpenERP), Denis Ledoux dle@openerp.com, Dharti Ratani (OpenERP), Goffin Simon, Anael Closson, Khushboo Bhatt (Open ERP), Mohammed Shekha, dle@openerp.com, Bhumi Thakkar (Open ERP), Cedric Snauwaert, Simon Lejeune, Frédéric van der Essen, Vishmita, Vijaykumar Baladaniya, Dhruti Shastri (OpenERP), Nicolas Martinelli, Nhomar Hernandez, Vidhin Mehta (OpenERP), Amit (OpenERP), Minh Tran, RGA(OpenERP), Dharti Ratani (Open ERP), Alexandre Fayolle, Amit Bhavsar (Open ERP), Paramjit Singh Sahota, Nicolas Lempereur, Niko, Hiral Patel (OpenERP), tsabi, Anand Patel (OpenERP), chirag patel, Vidhin Mehta, Julien Legros, xmo-odoo, , Sandy Carter, vishmita, Giedrius Slavinskas, Géry Debongnie, William Beltrán, Darshan Kalola (OpenERP Trainee), Holger Brunn, bth, jke-openerp, Aaron Bohy, Kunal Chavda (OpenERP), Mohammed Shekha (OpenERP), bth-openerp, Vaibhav (OpenERP)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:43:09
ODOO DEPENDENCIES
ODOO DEPENDENCIES
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
OpenERP Web core module.
========================

This module provides the core of the OpenERP Web Client.
        

Code Analysis

Views touched (0)

No views found for this module.

Models touched (0)

No models found for this module.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/6.1/web
VERSION
VERSION 0.1.0
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSJagdish Panchal (Open ERP), Turkesh Patel (Open ERP), Martin Trigaux, Fabien Pinckaers, Antony Lesuisse, Olivier Dony, Vo Minh Thu, Launchpad Translations on behalf of openerp, olt@tinyerp.com, Fabien Meghazi, niv-openerp, Xavier ALT, Christophe Simonis, Xavier Morel, Jiten (OpenERP), Anael Closson, Mohammed Shekha, Bhumi Thakkar (Open ERP), Roberto López López (OpenERP), Frédéric van der Essen, Serpent Consulting Services, Vidhin Mehta (OpenERP), Minh Tran, Amit Dodiya, chirag patel, , Stefan Rijnhart, vishmita, Kunal Chavda (OpenERP), Vaibhav (OpenERP), Florent Xicluna, Valentin Lab, Yogesh (OpenERP), ado, Naresh (OpenERP), Tejas (OpenERP), RavishchanraMurari (Open ERP), Ravi Gohil (Open ERP), msh-openerp, Antoine Huvelle, cpa-openerp, kbh, stefan@therp.nl, sma (Tiny)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:41:35
ODOO DEPENDENCIES
ODOO DEPENDENCIES
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
        OpenERP Web core module.
        This module provides the core of the OpenERP web client.
        

Code Analysis

Views touched (0)

No views found for this module.

Models touched (0)

No models found for this module.