Website

website
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/19.0/website
VERSION
VERSION 1.0
CATEGORY
CATEGORYWebsite/Website
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo S.A.
MAINTAINERS
MAINTAINERSOdoo S.A.
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Thibault Delavallée, Denis Ledoux, David Monjoie, Xavier Morel, Mohammed Shekha, Nicolas Lempereur, Géry Debongnie, Aaron Bohy, Jeremy Kersten, Lucas Perais (lpe), qsm-odoo, Pierre Masereel, Christophe Monniez, Lucas Perais, Julien Castiaux, Xavier-Do, Victor Feyens, Paul Morelle, Sébastien Theys, Julien Mougenot, std-odoo, Achraf (abz), Prakash Prajapati, Tiffany Chang (tic), Rémy Voet (ryv), Gorash, Mathieu Duckerts-Antoine, Pierre Paridans, abd-msyukyu-odoo, William Braeckman, Romain Estievenart, Benjamin Vray, odoo, Benoit Socias, Didier (did), diagnoza, Antoine Guenet, Nicolas Bayet, Antoine Vandevenne (anv), Jinjiu Liu, Aurelien van Delft (avd), Hubert Van De Walle, Mathieu Walravens, luvi, Valentin Chevalier, Renaud Thiry, Loan (LSE), Thomas Lefebvre (thle), Louis Wicket (wil), tsm-odoo, Victor Piryns (pivi), Julien (jula), Mahamadasif Ansari, amdi-odoo, Pierre-Yves Dufays, Soukéina Bojabza, Robin Lejeune (role), Louis (loco), Levi Siuzdak (sile), Maruan Aguerdouh (magm), Dylan Kiss (dyki), Bruno Boi, Antoine (ande), FrancoisGe, Valeriya(vchu), Chong Wang (cwg), bram1000, Xavier Bol (xbo), Brieuc-brd, divy-odoo, Nguyễn Đại Dương, Mahdi Cheikh Rouhou (macr), omra-odoo, Zelong Lin, Walid (wasa), Deependra Solanki, visp-odoo, stefanorigano (SRI), aktr-odoo, Maryam Kia, Basit, Parth Gajjar, Louis (loti), Mehdi Outagant (MOU), Serge Bayet (seba), reka-odoo, AMZIL Ayoub, Bastien Fafchamps (bafa), dhba, kcv-odoo, Alex Kühn, Martin Trigaux (mat), Julien Segers (juse), Lina (liew), Chrysanthe (chgo), Adnan Saiyed, Rodolpho Lima, aath-odoo, adch-odoo, Junqi Wu, mano-odoo, Sanjay Sharma, Joseph (jcb), aamo-odoo, Majed Alhanash (malh), Patricia Daloze (pda), Xavier Luyckx (xlu), yagp-odoo, Antoine (anso), Manushi Shah, Rahil Ghanchi, panv-odoo, paru-odoo, Sébastien (blse), Pierre Pulinckx (PIPU), Denis Rygaert, Arib Ansari, dija-odoo, sben-odoo, abdelrahmanfawzy, pkgu-odoo, Pierre Lamotte (pila), Michaël Mattiello, nikj-odoo, Pierre Pulinckx, fdardenne, Bastien PIERRE, Anton Romanova (roan), Thomas Carlier(thc), lse-odoo, Thomas Josse (THJO), Damien Decleire (deda), Krzysztof Magusiak (krma), Ajit Singh, Akash Pandey, Basioni (basm), Hadi El Yakhni, Elier Ayala Bernal, mjvi-odoo, bikh-odoo, defl, bhna-odoo, Giorgio Tocco (gito), Ayush Chauhan (aych), jayp-odoo, akha, mohannedah, Tudor-Calin Panzaru (tupan), Daniel Duato Catalán, ksbh-odoo, aans-odoo, rusp-odoo, Davide Bonetto, alap-odoo, Jay Panchal, Patrick Stooks, Subhadeep R. Dev, Alessandro Lupo, chdh-odoo, Parth Pujara, Garvish Panchal, dtda-odoo, Julien Launois (jula), Laetitia (ldau), Augustin (duau), romo, ptpu-odoo, Serhii Rubanskyi, Alice Gaudon, adip-odoo, Quentin Colla (qucol), h4818, Ayush Modi, assh-odoo, Elliot ELCO, Lionel Piraux (lipi), Kevin Gerard (kege), Benoit Socias (bso), Waleed Elgamal, Sébastien Geelen, Serge Bayet, saurabh, Rudra Patel, sbbh-odoo, assk-odoo, vega-odoo, Abdelouahab Laaroussi (abla), alan-odoo, Romaric MOYEUVRE, Ian (iacio), h4818 (ayh), Julien (jdeh), Alay Patel, Parth Vyas, Zachary (zavan), Joseph Maiarana, Akash, ELCO, khaj-odoo, Khaj-odoo, chpa-odoo, emge-odoo, Guillaume Jacquet, panj-odoo, stefanorigano (sri), Simon Maldague (simal), ahmedgamal2212, Claire Nguyen (clan), Serhii Rubanskyi - seru, Ahmed Gamal, kiga-odoo, Divyesh Vyas (divy), Kai (kache)
WEBSITE
WEBSITEhttps://www.odoo.com/app/website
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 14:10:17
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - digest
    - mail
    - base
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
    - portal
    - http_routing
    - auth_signup
    - resource
    - social_media
    - google_recaptcha
    - utm
    - html_builder
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES geoip2
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (495)
XML IDNameModelTypeStatus
404_plausible Plausible 404 ir.ui.view qweb Inherits http_routing.404
action_website_rewrite_tree website.rewrite.list website.rewrite list New
asset_view_form_inherit_website ir.asset.form.inherit.website ir.asset field Inherits base.asset_view_form
asset_view_tree_inherit_website ir.asset.list.inherit.website ir.asset field Inherits base.asset_view_tree
brand_promotion Brand Promotion ir.ui.view qweb Inherits web.brand_promotion
bs_debug_view BS Debug t New
color_combinations_debug_view Color Combinations Debug t New
cookie_policy Cookie Policy ir.ui.view qweb New
cookies_bar Cookies Bar ir.ui.view qweb Inherits website.layout
custom_code_layout Custom Code Layout ir.ui.view qweb Inherits website.layout
default_css default_css ir.ui.view qweb New
default_csv default_csv ir.ui.view qweb New
default_js default_js ir.ui.view qweb New
default_less default_less ir.ui.view qweb New
default_page default_page ir.ui.view qweb New
default_scss default_scss ir.ui.view qweb New
default_xml default_xml ir.ui.view qweb New
external_snippets external_snippets ir.ui.view qweb Inherits website.snippets
footer_copyright_company_name footer_copyright_company_name ir.ui.view qweb Inherits website.layout
footer_copyright_content_width_fluid Footer Copyright Width Fluid ir.ui.view qweb Inherits website.layout
footer_copyright_content_width_small Footer Copyright Width Small ir.ui.view qweb Inherits website.layout
footer_custom Default ir.ui.view qweb Inherits website.layout
footer_language_selector_code Footer Language Selector Code ir.ui.view qweb Inherits portal.footer_language_selector
footer_language_selector_flag Footer Language Selector Flag ir.ui.view qweb Inherits portal.footer_language_selector
footer_language_selector_inline Footer Language Selector Inline ir.ui.view qweb Inherits portal.footer_language_selector
footer_language_selector_no_text Footer Language Selector No Text ir.ui.view qweb Inherits portal.footer_language_selector
footer_no_copyright Footer No Copyright ir.ui.view qweb Inherits website.layout
header_hoverable_dropdown Header Hoverable Dropdown ir.ui.view qweb Inherits website.layout
header_language_selector Header Language Selector ir.ui.view qweb Inherits website.placeholder_header_language_selector
header_language_selector_code Header Language Selector Code ir.ui.view qweb Inherits website.header_language_selector
header_language_selector_flag Header Language Selector Flag ir.ui.view qweb Inherits website.header_language_selector
header_language_selector_inline Header Language Selector Inline ir.ui.view qweb Inherits website.header_language_selector
header_language_selector_no_text Header Language Selector No Text ir.ui.view qweb Inherits website.header_language_selector
header_navbar_pills_style Navbar Links Style ir.ui.view qweb Inherits website.navbar_nav
header_search_box_input Header Search Box Input ir.ui.view qweb New
header_visibility_disappears Header Effect Disappears ir.ui.view qweb Inherits website.layout
header_visibility_fade_out Header Effect Fade Out ir.ui.view qweb Inherits website.layout
header_visibility_fixed Header Effect Fixed ir.ui.view qweb Inherits website.layout
header_visibility_standard Header Visibility Standard ir.ui.view qweb Inherits website.layout
header_width_full header_width_full ir.ui.view qweb Inherits website.layout
header_width_small header_width_small ir.ui.view qweb Inherits website.layout
iframefallback iframefallback ir.ui.view qweb Inherits web.layout
ir_model_fields_view website.ir.model.fields.view.form ir.model.fields xpath Inherits base.view_model_fields_form
ir_model_view website.ir.model.view.form ir.model xpath Inherits base.view_model_form
lang_flag Language Flag ir.ui.view qweb New
language_selector language_selector ir.ui.view qweb Inherits portal.language_selector
language_selector_inline language_selector_inline ir.ui.view qweb Inherits website.language_selector
layout Main layout ir.ui.view qweb Inherits portal.frontend_layout
list_hybrid Any Search Results ir.ui.view qweb New
list_website_public_pages Website Pages ir.ui.view qweb New
login_layout Website Login Layout ir.ui.view qweb Inherits web.login_layout
menu_search website.menu.search website.menu search New
menu_tree website.menu.list website.menu list New
navbar Navbar ir.ui.view qweb New
navbar_nav Navbar Nav ir.ui.view qweb New
navbar_nav_wrapper Navbar Nav Wrapper ir.ui.view qweb New
navbar_toggler Navbar Toggler ir.ui.view qweb New
new_page_template_about_full_1_s_text_block_h1 new_page_template_about_full_1_s_text_block_h1 ir.ui.view qweb Inherits website.new_page_template_about_s_text_block_h1
new_page_template_about_full_1_s_text_block_h2 new_page_template_about_full_1_s_text_block_h2 ir.ui.view qweb Inherits website.new_page_template_about_s_text_block_h2
new_page_template_about_full_s_image_text new_page_template_about_full_s_image_text ir.ui.view qweb Inherits website.new_page_template_about_s_image_text
new_page_template_about_full_s_numbers new_page_template_about_full_s_numbers ir.ui.view qweb Inherits website.new_page_template_about_s_numbers
new_page_template_about_full_s_text_image new_page_template_about_full_s_text_image ir.ui.view qweb Inherits website.new_page_template_about_s_text_image
new_page_template_about_map_s_text_block_2nd new_page_template_about_map_s_text_block_2nd ir.ui.view qweb Inherits website.new_page_template_about_s_text_block_2nd
new_page_template_about_map_s_text_block_h1 new_page_template_about_map_s_text_block_h1 ir.ui.view qweb Inherits website.new_page_template_about_s_text_block_h1
new_page_template_about_map_s_text_block_h2 new_page_template_about_map_s_text_block_h2 ir.ui.view qweb Inherits website.new_page_template_about_s_text_block_h2
new_page_template_about_mini_s_text_block_h2 new_page_template_about_mini_s_text_block_h2 ir.ui.view qweb Inherits website.new_page_template_about_s_text_block_h2
new_page_template_about_personal_s_image_text new_page_template_about_personal_s_image_text ir.ui.view qweb Inherits website.new_page_template_about_s_image_text
new_page_template_about_personal_s_numbers new_page_template_about_personal_s_numbers ir.ui.view qweb Inherits website.new_page_template_about_s_numbers
new_page_template_about_personal_s_text_block_h2 new_page_template_about_personal_s_text_block_h2 ir.ui.view qweb Inherits website.new_page_template_about_s_text_block_h2
new_page_template_about_s_banner new_page_template_about_s_banner ir.ui.view qweb Inherits website.new_page_template_s_banner
new_page_template_about_s_company_team new_page_template_about_s_company_team ir.ui.view qweb Inherits website.new_page_template_s_company_team
new_page_template_about_s_cover new_page_template_about_s_cover ir.ui.view qweb Inherits website.new_page_template_s_cover
new_page_template_about_s_features new_page_template_about_s_features ir.ui.view qweb Inherits website.new_page_template_s_features
new_page_template_about_s_image_text new_page_template_about_s_image_text ir.ui.view qweb Inherits website.new_page_template_s_image_text
new_page_template_about_s_numbers new_page_template_about_s_numbers ir.ui.view qweb Inherits website.new_page_template_s_numbers
new_page_template_about_s_picture new_page_template_about_s_picture ir.ui.view qweb Inherits website.new_page_template_s_picture
new_page_template_about_s_text_block_2nd new_page_template_about_s_text_block_2nd ir.ui.view qweb Inherits website.new_page_template_s_text_block_2nd
new_page_template_about_s_text_block_h1 new_page_template_about_s_text_block_h1 ir.ui.view qweb Inherits website.new_page_template_s_text_block_h1
new_page_template_about_s_text_block_h2 new_page_template_about_s_text_block_h2 ir.ui.view qweb Inherits website.new_page_template_s_text_block_h2
new_page_template_about_s_text_cover new_page_template_about_s_text_cover ir.ui.view qweb Inherits website.new_page_template_s_text_cover
new_page_template_about_s_text_image new_page_template_about_s_text_image ir.ui.view qweb Inherits website.new_page_template_s_text_image
new_page_template_about_s_three_columns new_page_template_about_s_three_columns ir.ui.view qweb Inherits website.new_page_template_s_three_columns
new_page_template_about_timeline_s_text_block_h2 new_page_template_about_timeline_s_text_block_h2 ir.ui.view qweb Inherits website.new_page_template_about_s_text_block_h2
new_page_template_basic_2_s_text_block_h1 new_page_template_basic_2_s_text_block_h1 ir.ui.view qweb Inherits website.new_page_template_basic_s_text_block_h1
new_page_template_basic_s_picture new_page_template_basic_s_picture ir.ui.view qweb Inherits website.new_page_template_s_picture
new_page_template_basic_s_quotes_carousel new_page_template_basic_s_quotes_carousel ir.ui.view qweb Inherits website.new_page_template_s_quotes_carousel
new_page_template_basic_s_text_block_h1 new_page_template_basic_s_text_block_h1 ir.ui.view qweb Inherits website.new_page_template_s_text_block_h1
new_page_template_basic_s_text_cover new_page_template_basic_s_text_cover ir.ui.view qweb Inherits website.new_page_template_s_text_cover
new_page_template_gallery_s_banner new_page_template_gallery_s_banner ir.ui.view qweb Inherits website.new_page_template_s_banner
new_page_template_gallery_s_image_text_2nd new_page_template_gallery_s_image_text_2nd ir.ui.view qweb Inherits website.new_page_template_s_image_text_2nd
new_page_template_gallery_s_text_block_2nd new_page_template_gallery_s_text_block_2nd ir.ui.view qweb Inherits website.new_page_template_s_text_block_2nd
new_page_template_gallery_s_text_block_h1 new_page_template_gallery_s_text_block_h1 ir.ui.view qweb Inherits website.new_page_template_s_text_block_h1
new_page_template_groups new_page_template_groups ir.ui.view qweb New
new_page_template_landing_0_s_cover new_page_template_landing_0_s_cover ir.ui.view qweb Inherits website.new_page_template_landing_s_cover
new_page_template_landing_1_s_banner new_page_template_landing_1_s_banner ir.ui.view qweb Inherits website.new_page_template_landing_s_banner
new_page_template_landing_2_s_call_to_action new_page_template_landing_2_s_call_to_action ir.ui.view qweb Inherits new_page_template_landing_s_call_to_action
new_page_template_landing_2_s_cover new_page_template_landing_2_s_cover ir.ui.view qweb Inherits website.new_page_template_landing_s_cover
new_page_template_landing_2_s_text_block_h2 new_page_template_landing_2_s_text_block_h2 ir.ui.view qweb Inherits website.new_page_template_landing_s_text_block_h2
new_page_template_landing_2_s_three_columns new_page_template_landing_2_s_three_columns ir.ui.view qweb Inherits website.new_page_template_landing_s_three_columns
new_page_template_landing_3_s_call_to_action new_page_template_landing_3_s_call_to_action ir.ui.view qweb Inherits new_page_template_landing_s_call_to_action
new_page_template_landing_3_s_text_block_h2 new_page_template_landing_3_s_text_block_h2 ir.ui.view qweb Inherits website.new_page_template_landing_s_text_block_h2
new_page_template_landing_3_s_three_columns new_page_template_landing_3_s_three_columns ir.ui.view qweb Inherits website.new_page_template_landing_s_three_columns
new_page_template_landing_4_s_cover new_page_template_landing_4_s_cover ir.ui.view qweb Inherits website.new_page_template_landing_s_cover
new_page_template_landing_4_s_text_block_h2 new_page_template_landing_4_s_text_block_h2 ir.ui.view qweb Inherits website.new_page_template_landing_s_text_block_h2
new_page_template_landing_5_s_banner new_page_template_landing_5_s_banner ir.ui.view qweb Inherits website.new_page_template_landing_s_banner
new_page_template_landing_s_banner new_page_template_landing_s_banner ir.ui.view qweb Inherits website.new_page_template_s_banner
new_page_template_landing_s_call_to_action new_page_template_landing_s_call_to_action ir.ui.view qweb Inherits new_page_template_s_call_to_action
new_page_template_landing_s_color_blocks_2 new_page_template_landing_s_color_blocks_2 ir.ui.view qweb Inherits website.new_page_template_s_color_blocks_2
new_page_template_landing_s_cover new_page_template_landing_s_cover ir.ui.view qweb Inherits website.new_page_template_s_cover
new_page_template_landing_s_features new_page_template_landing_s_features ir.ui.view qweb Inherits website.new_page_template_s_features
new_page_template_landing_s_showcase new_page_template_landing_s_showcase ir.ui.view qweb Inherits website.new_page_template_s_showcase
new_page_template_landing_s_text_block_h2 new_page_template_landing_s_text_block_h2 ir.ui.view qweb Inherits website.new_page_template_s_text_block_h2
new_page_template_landing_s_text_cover new_page_template_landing_s_text_cover ir.ui.view qweb Inherits website.new_page_template_s_text_cover
new_page_template_landing_s_text_image new_page_template_landing_s_text_image ir.ui.view qweb Inherits website.new_page_template_s_text_image
new_page_template_landing_s_three_columns new_page_template_landing_s_three_columns ir.ui.view qweb Inherits website.new_page_template_s_three_columns
new_page_template_pricing_5_s_text_block_h1 new_page_template_pricing_5_s_text_block_h1 ir.ui.view qweb Inherits website.new_page_template_pricing_s_text_block_h1
new_page_template_pricing_s_image_text_2nd new_page_template_pricing_s_image_text_2nd ir.ui.view qweb Inherits website.new_page_template_s_image_text_2nd
new_page_template_pricing_s_text_block_2nd new_page_template_pricing_s_text_block_2nd ir.ui.view qweb Inherits website.new_page_template_s_text_block_2nd
new_page_template_pricing_s_text_block_h1 new_page_template_pricing_s_text_block_h1 ir.ui.view qweb Inherits website.new_page_template_s_text_block_h1
new_page_template_pricing_s_text_block_h2 new_page_template_pricing_s_text_block_h2 ir.ui.view qweb Inherits website.new_page_template_s_text_block_h2
new_page_template_s_banner new_page_template_s_banner ir.ui.view qweb Inherits website.s_banner
new_page_template_s_call_to_action new_page_template_s_call_to_action ir.ui.view qweb Inherits website.s_call_to_action
new_page_template_s_carousel new_page_template_s_carousel ir.ui.view qweb Inherits website.s_carousel
new_page_template_s_color_blocks_2 new_page_template_s_color_blocks_2 ir.ui.view qweb Inherits website.s_color_blocks_2
new_page_template_s_company_team new_page_template_s_company_team ir.ui.view qweb Inherits website.s_company_team
new_page_template_s_cover new_page_template_s_cover ir.ui.view qweb Inherits website.s_cover
new_page_template_s_features new_page_template_s_features ir.ui.view qweb Inherits website.s_features
new_page_template_s_image_gallery new_page_template_s_image_gallery ir.ui.view qweb Inherits website.s_image_gallery
new_page_template_s_image_text new_page_template_s_image_text ir.ui.view qweb Inherits website.s_image_text
new_page_template_s_image_text_2nd new_page_template_s_image_text_2nd ir.ui.view qweb Inherits website.s_image_text_2nd
new_page_template_s_images_wall new_page_template_s_images_wall ir.ui.view qweb Inherits website.s_images_wall
new_page_template_s_map new_page_template_s_map ir.ui.view qweb Inherits s_map
new_page_template_s_media_list new_page_template_s_media_list ir.ui.view qweb Inherits website.s_media_list
new_page_template_s_numbers new_page_template_s_numbers ir.ui.view qweb Inherits website.s_numbers
new_page_template_s_parallax new_page_template_s_parallax ir.ui.view qweb Inherits website.s_parallax
new_page_template_s_picture new_page_template_s_picture ir.ui.view qweb Inherits website.s_picture
new_page_template_s_quotes_carousel new_page_template_s_quotes_carousel ir.ui.view qweb Inherits website.s_quotes_carousel
new_page_template_s_references new_page_template_s_references ir.ui.view qweb Inherits website.s_references
new_page_template_s_showcase new_page_template_s_showcase ir.ui.view qweb Inherits website.s_showcase
new_page_template_s_text_block_2nd new_page_template_s_text_block_2nd ir.ui.view qweb Inherits website.s_text_block_2nd
new_page_template_s_text_block_h1 new_page_template_s_text_block_h1 ir.ui.view qweb Inherits website.s_text_block_h1
new_page_template_s_text_block_h2 new_page_template_s_text_block_h2 ir.ui.view qweb Inherits website.s_text_block_h2
new_page_template_s_text_cover new_page_template_s_text_cover ir.ui.view qweb Inherits website.s_text_cover
new_page_template_s_text_image new_page_template_s_text_image ir.ui.view qweb Inherits website.s_text_image
new_page_template_s_three_columns new_page_template_s_three_columns ir.ui.view qweb Inherits website.s_three_columns
new_page_template_s_website_form new_page_template_s_website_form ir.ui.view qweb Inherits s_website_form
new_page_template_services_0_s_three_columns new_page_template_services_0_s_three_columns ir.ui.view qweb Inherits website.new_page_template_services_s_three_columns
new_page_template_services_3_s_text_block_h1 new_page_template_services_3_s_text_block_h1 ir.ui.view qweb Inherits website.new_page_template_services_s_text_block_h1
new_page_template_services_s_image_text new_page_template_services_s_image_text ir.ui.view qweb Inherits website.new_page_template_s_image_text
new_page_template_services_s_image_text_2nd new_page_template_services_s_image_text_2nd ir.ui.view qweb Inherits website.new_page_template_s_image_text_2nd
new_page_template_services_s_parallax new_page_template_services_s_parallax ir.ui.view qweb Inherits website.new_page_template_s_parallax
new_page_template_services_s_text_block_2nd new_page_template_services_s_text_block_2nd ir.ui.view qweb Inherits website.new_page_template_s_text_block_2nd
new_page_template_services_s_text_block_h1 new_page_template_services_s_text_block_h1 ir.ui.view qweb Inherits website.new_page_template_s_text_block_h1
new_page_template_services_s_text_block_h2 new_page_template_services_s_text_block_h2 ir.ui.view qweb Inherits website.new_page_template_s_text_block_h2
new_page_template_services_s_text_cover new_page_template_services_s_text_cover ir.ui.view qweb Inherits website.new_page_template_s_text_cover
new_page_template_services_s_text_image new_page_template_services_s_text_image ir.ui.view qweb Inherits website.new_page_template_s_text_image
new_page_template_services_s_three_columns new_page_template_services_s_three_columns ir.ui.view qweb Inherits website.new_page_template_s_three_columns
new_page_template_team_0_s_three_columns new_page_template_team_0_s_three_columns ir.ui.view qweb Inherits website.new_page_template_team_s_three_columns
new_page_template_team_2_s_text_block_h1 new_page_template_team_2_s_text_block_h1 ir.ui.view qweb Inherits website.new_page_template_team_s_text_block_h1
new_page_template_team_s_image_gallery new_page_template_team_s_image_gallery ir.ui.view qweb Inherits website.new_page_template_s_image_gallery
new_page_template_team_s_image_text new_page_template_team_s_image_text ir.ui.view qweb Inherits website.new_page_template_s_image_text
new_page_template_team_s_image_text_2nd new_page_template_team_s_image_text_2nd ir.ui.view qweb Inherits website.new_page_template_s_image_text_2nd
new_page_template_team_s_images_wall new_page_template_team_s_images_wall ir.ui.view qweb Inherits website.new_page_template_s_images_wall
new_page_template_team_s_media_list new_page_template_team_s_media_list ir.ui.view qweb Inherits website.new_page_template_s_media_list
new_page_template_team_s_picture new_page_template_team_s_picture ir.ui.view qweb Inherits website.new_page_template_s_picture
new_page_template_team_s_text_block_h1 new_page_template_team_s_text_block_h1 ir.ui.view qweb Inherits website.new_page_template_s_text_block_h1
new_page_template_team_s_text_image new_page_template_team_s_text_image ir.ui.view qweb Inherits website.new_page_template_s_text_image
new_page_template_team_s_three_columns new_page_template_team_s_three_columns ir.ui.view qweb Inherits website.new_page_template_s_three_columns
no_autohide_menu no_autohide_menu ir.ui.view qweb Inherits website.layout
one_hybrid Single any Search Results ir.ui.view qweb New
option_footer_scrolltop option_footer_scrolltop ir.ui.view qweb Inherits website.layout
option_header_brand_logo Header Brand Logo ir.ui.view qweb Inherits website.placeholder_header_brand
option_header_brand_name Header Brand Name ir.ui.view qweb Inherits website.placeholder_header_brand
option_layout_hide_header option_layout_hide_header ir.ui.view qweb Inherits website.layout
page_404 Page Not Found ir.ui.view qweb New
pager Pager ir.ui.view qweb Inherits portal.pager
placeholder_header_brand Placeholder Header Brand ir.ui.view qweb New
placeholder_header_language_selector Placeholder Header Language Selector ir.ui.view qweb New
pricing Pricing ir.ui.view qweb New
privacy_policy Privacy Policy ir.ui.view qweb New
protected_403 Page Protected ir.ui.view qweb New
publish_management publish_management ir.ui.view qweb New
qweb_500 qweb_500 ir.ui.view qweb Inherits http_routing.500
record_cover record_cover ir.ui.view qweb New
res_config_settings_view_form res.config.settings.view.form.inherit.website res.config.settings xpath Inherits base.res_config_settings_view_form
res_config_settings_view_form_inherit_auth_signup res.config.settings.view.form.inherit.website res.config.settings xpath Inherits auth_signup.res_config_settings_view_form
reset_view_arch_wizard_view reset.view.arch.wizard field Inherits base.reset_view_arch_wizard_view
robots robots ir.ui.view qweb New
s_accordion Accordion ir.ui.view qweb New
s_accordion_image Accordion Image ir.ui.view qweb New
s_adventure Adventure ir.ui.view qweb New
s_alert Alert ir.ui.view qweb New
s_announcement_scroll Announcement Scroll ir.ui.view qweb New
s_attributes_horizontal Horizontal Attributes ir.ui.view qweb New
s_attributes_vertical Vertical Attributes ir.ui.view qweb New
s_badge Badge ir.ui.view qweb New
s_banner Banner ir.ui.view qweb New
s_banner_categories Banner Categories ir.ui.view qweb New
s_banner_connected Banner Connected ir.ui.view qweb New
s_banner_product Collection Banner ir.ui.view qweb New
s_bento_banner Bento Banner ir.ui.view qweb New
s_bento_block Bento Block ir.ui.view qweb New
s_bento_grid Bento Grid ir.ui.view qweb New
s_big_number Big number ir.ui.view qweb New
s_blockquote Blockquote ir.ui.view qweb New
s_button Button ir.ui.view qweb New
s_call_to_action Call to Action ir.ui.view qweb New
s_call_to_action_about s_call_to_action_about ir.ui.view qweb Inherits website.s_call_to_action
s_call_to_action_digital s_call_to_action_digital ir.ui.view qweb Inherits website.s_call_to_action
s_call_to_action_menu s_call_to_action_menu ir.ui.view qweb Inherits website.s_call_to_action
s_card Card ir.ui.view qweb New
s_card_offset Card Offset ir.ui.view qweb New
s_cards_grid Cards Grid ir.ui.view qweb New
s_cards_soft Cards Soft ir.ui.view qweb New
s_carousel Carousel ir.ui.view qweb New
s_carousel_cards Carousel Cards ir.ui.view qweb New
s_carousel_intro Carousel Intro ir.ui.view qweb New
s_chart Chart ir.ui.view qweb New
s_closer_look Closer Look ir.ui.view qweb New
s_color_blocks_2 Big Boxes ir.ui.view qweb New
s_company_team Team ir.ui.view qweb New
s_company_team_basic Team Basic ir.ui.view qweb New
s_company_team_card Card Team ir.ui.view qweb New
s_company_team_detail Team Detail ir.ui.view qweb New
s_company_team_grid Company Team Grid ir.ui.view qweb New
s_company_team_shapes Team Shapes ir.ui.view qweb New
s_company_team_spotlight Team Spotlight ir.ui.view qweb New
s_comparisons Comparisons ir.ui.view qweb New
s_comparisons_horizontal Comparisons Horizontal ir.ui.view qweb New
s_contact_info Contact Info ir.ui.view qweb New
s_countdown Countdown ir.ui.view qweb New
s_cover Cover ir.ui.view qweb New
s_cta_badge CTA Badge ir.ui.view qweb New
s_cta_box Box Call to Action ir.ui.view qweb New
s_cta_card Card Call to Action ir.ui.view qweb New
s_cta_mobile CTA Mobile ir.ui.view qweb New
s_cta_mockups Call to Action Mockups ir.ui.view qweb New
s_discovery Discovery ir.ui.view qweb New
s_dynamic_snippet Dynamic Snippet ir.ui.view qweb New
s_dynamic_snippet_carousel Dynamic Carousel ir.ui.view qweb New
s_ecomm_categories_showcase Categories Grid ir.ui.view qweb New
s_embed_code Embed Code ir.ui.view qweb New
s_empowerment Empowerment ir.ui.view qweb New
s_facebook_page Facebook ir.ui.view qweb New
s_faq_collapse FAQ ir.ui.view qweb New
s_faq_horizontal Topics List ir.ui.view qweb New
s_faq_list FAQ List ir.ui.view qweb New
s_features Features ir.ui.view qweb New
s_features_grid Features Grid ir.ui.view qweb New
s_features_wall Features Wall ir.ui.view qweb New
s_features_wave Features Wave ir.ui.view qweb New
s_floating_blocks Floating Cards ir.ui.view qweb New
s_form_aside Form Aside ir.ui.view qweb New
s_framed_intro Framed Intro ir.ui.view qweb New
s_freegrid Free grid ir.ui.view qweb New
s_google_map Google Map ir.ui.view qweb New
s_hr Separator ir.ui.view qweb New
s_image Image ir.ui.view qweb New
s_image_frame Image Frame ir.ui.view qweb New
s_image_gallery Image Gallery ir.ui.view qweb New
s_image_hexagonal Image Hexagonal ir.ui.view qweb New
s_image_punchy Image Punchy ir.ui.view qweb New
s_image_text Image - Text ir.ui.view qweb New
s_image_text_2nd s_image_text_2nd ir.ui.view qweb Inherits website.new_page_template_s_image_text
s_image_text_box Image Text Box ir.ui.view qweb New
s_image_text_overlap Image - Text Overlap ir.ui.view qweb New
s_image_title Image Title ir.ui.view qweb New
s_images_constellation Images Constellation ir.ui.view qweb New
s_images_mosaic Images Mosaic ir.ui.view qweb New
s_images_wall Images Wall ir.ui.view qweb New
s_inline_text Text ir.ui.view qweb New
s_instagram_page Instagram Page ir.ui.view qweb New
s_intro_pill Intro Pill ir.ui.view qweb New
s_key_benefits Key benefits ir.ui.view qweb New
s_key_images Key Images ir.ui.view qweb New
s_kickoff Kickoff ir.ui.view qweb New
s_map Map ir.ui.view qweb New
s_masonry_block Masonry ir.ui.view qweb New
s_masonry_block_alternation_image_text_template Masonry ir.ui.view qweb New
s_masonry_block_alternation_text_image_template Masonry ir.ui.view qweb New
s_masonry_block_default_template Masonry ir.ui.view qweb New
s_masonry_block_images_template Masonry ir.ui.view qweb New
s_masonry_block_mosaic_template Masonry ir.ui.view qweb New
s_masonry_block_reversed_template Masonry ir.ui.view qweb New
s_media_list Media List ir.ui.view qweb New
s_mega_menu_big_icons_subtitles Menu - Big icons & subtitles ir.ui.view qweb New
s_mega_menu_big_icons_subtitles_item s_mega_menu_big_icons_subtitles_item ir.ui.view qweb New
s_mega_menu_cards Menu - Cards ir.ui.view qweb New
s_mega_menu_cards_item s_mega_menu_cards_item ir.ui.view qweb New
s_mega_menu_images_subtitles Menu - images & subtitles ir.ui.view qweb New
s_mega_menu_images_subtitles_item s_mega_menu_images_subtitles_item ir.ui.view qweb New
s_mega_menu_little_icons Menu - Little icons ir.ui.view qweb New
s_mega_menu_menu_image_menu Menu - Image - Menu ir.ui.view qweb New
s_mega_menu_menus_logos Menus & logos ir.ui.view qweb New
s_mega_menu_multi_menus Multi-Menus ir.ui.view qweb New
s_mega_menu_odoo_menu Odoo Menu ir.ui.view qweb New
s_mega_menu_thumbnails Menu - Thumbnails ir.ui.view qweb New
s_mega_menu_thumbnails_item s_mega_menu_thumbnails_item ir.ui.view qweb New
s_mockup_image Mockup Image ir.ui.view qweb New
s_motto Motto ir.ui.view qweb New
s_numbers Numbers ir.ui.view qweb New
s_numbers_boxed Numbers boxed ir.ui.view qweb New
s_numbers_charts Numbers Charts ir.ui.view qweb New
s_numbers_framed Numbers framed ir.ui.view qweb New
s_numbers_grid Numbers Grid ir.ui.view qweb New
s_numbers_list Numbers list ir.ui.view qweb New
s_numbers_showcase Numbers Showcase ir.ui.view qweb New
s_opening_hours Opening Hours ir.ui.view qweb New
s_parallax Parallax ir.ui.view qweb New
s_picture Title - Image ir.ui.view qweb New
s_picture_only s_picture_only ir.ui.view qweb Inherits website.new_page_template_s_picture
s_popup Popup ir.ui.view qweb New
s_pricelist_boxed Pricelist Boxed ir.ui.view qweb New
s_pricelist_boxed_item s_pricelist_boxed_item ir.ui.view qweb New
s_pricelist_cafe Pricelist Cafe ir.ui.view qweb New
s_pricelist_cafe_item s_pricelist_cafe_item ir.ui.view qweb New
s_process_steps Steps ir.ui.view qweb New
s_product_catalog Pricelist ir.ui.view qweb New
s_product_catalog_dish s_product_catalog_dish ir.ui.view qweb New
s_product_list Items ir.ui.view qweb New
s_progress_bar Progress Bar ir.ui.view qweb New
s_quadrant Quadrant ir.ui.view qweb New
s_quotes_carousel Quotes ir.ui.view qweb New
s_quotes_carousel_compact Quotes Compact ir.ui.view qweb New
s_quotes_carousel_minimal Quotes Minimal ir.ui.view qweb New
s_rating Rating ir.ui.view qweb New
s_references References ir.ui.view qweb New
s_references_grid References Grid ir.ui.view qweb New
s_references_social References Social ir.ui.view qweb New
s_reviews_wall Reviews Wall ir.ui.view qweb New
s_searchbar Search ir.ui.view qweb New
s_searchbar_input Search ir.ui.view qweb New
s_shape_image Shape image ir.ui.view qweb New
s_share Share ir.ui.view qweb New
s_showcase Showcase ir.ui.view qweb New
s_sidegrid Side Grid ir.ui.view qweb New
s_snippet_group Snippet Group ir.ui.view qweb New
s_social_media Social Media ir.ui.view qweb New
s_split_intro Split Intro ir.ui.view qweb New
s_striped Striped section ir.ui.view qweb New
s_striped_center_top Striped Center Top ir.ui.view qweb New
s_striped_top Striped Top ir.ui.view qweb New
s_table_of_content Table of Content ir.ui.view qweb New
s_tabs Tabs ir.ui.view qweb New
s_tabs_images Tabs Images ir.ui.view qweb New
s_text_block Text ir.ui.view qweb New
s_text_block_2nd s_text_block_2nd ir.ui.view qweb Inherits website.s_text_block
s_text_block_h1 s_text_block_h1 ir.ui.view qweb Inherits website.s_text_block
s_text_block_h2 s_text_block_h2 ir.ui.view qweb Inherits website.s_text_block
s_text_block_h2_contact s_text_block_h2_contact ir.ui.view qweb Inherits website.s_text_block_h2
s_text_cover Text Cover ir.ui.view qweb New
s_text_highlight Text Highlight ir.ui.view qweb New
s_text_image Text - Image ir.ui.view qweb New
s_three_columns Columns ir.ui.view qweb New
s_three_columns_2nd s_three_columns_2nd ir.ui.view qweb Inherits website.s_three_columns
s_three_columns_menu s_three_columns_menu ir.ui.view qweb Inherits website.s_three_columns
s_timeline Timeline ir.ui.view qweb New
s_timeline_images Timeline Images ir.ui.view qweb New
s_timeline_list Timeline List ir.ui.view qweb New
s_title Title ir.ui.view qweb New
s_title_form Title - Form ir.ui.view qweb New
s_unveil Unveil ir.ui.view qweb New
s_video Video ir.ui.view qweb New
s_wavy_grid Wavy Grid ir.ui.view qweb New
s_website_form Form ir.ui.view qweb New
s_website_form_cover Form Cover ir.ui.view qweb New
s_website_form_info Form Info ir.ui.view qweb New
s_website_form_overlay Form Overlay ir.ui.view qweb New
search_text_with_highlight Website Searchbox item highlight ir.ui.view qweb New
shared_blocks Shared blocks ir.ui.view qweb Inherits website.layout
show_website_info Show Odoo Information ir.ui.view qweb Inherits website.website_info
sitemap_index_xml sitemap_index_xml ir.ui.view qweb New
sitemap_locs sitemap_locs ir.ui.view qweb New
sitemap_xml sitemap_xml ir.ui.view qweb New
snippets snippets ir.ui.view qweb New
snippets_debug_view Snippet Debug t New
step_wizard Step Checkout ir.ui.view qweb New
submenu Submenu ir.ui.view qweb New
template_footer_call_to_action Call-to-Action ir.ui.view qweb Inherits website.layout
template_footer_centered Centered ir.ui.view qweb Inherits website.layout
template_footer_contact Contact ir.ui.view qweb Inherits website.layout
template_footer_descriptive Descriptive ir.ui.view qweb Inherits website.layout
template_footer_headline Headline ir.ui.view qweb Inherits website.layout
template_footer_links Links ir.ui.view qweb Inherits website.layout
template_footer_mega Mega ir.ui.view qweb Inherits website.layout
template_footer_mega_cards Mega Cards ir.ui.view qweb Inherits website.layout
template_footer_mega_columns Mega Columns ir.ui.view qweb Inherits website.layout
template_footer_mega_links Mega Links ir.ui.view qweb Inherits website.layout
template_footer_minimalist Minimalist ir.ui.view qweb Inherits website.layout
template_footer_slideout Template Footer Slideout ir.ui.view qweb Inherits website.layout
template_header_additional_color_primary template_header_additional_color_primary ir.ui.view qweb Inherits website.layout
template_header_additional_color_secondary template_header_additional_color_secondary ir.ui.view qweb Inherits website.layout
template_header_boxed Template Header Rounded Box ir.ui.view qweb Inherits website.layout
template_header_boxed_align_center template_header_boxed_align_center ir.ui.view qweb Inherits website.template_header_boxed
template_header_boxed_align_right template_header_boxed_align_right ir.ui.view qweb Inherits website.template_header_boxed
template_header_default Template Header Default ir.ui.view qweb Inherits website.layout
template_header_default_align_center template_header_default_align_center ir.ui.view qweb Inherits website.template_header_default
template_header_default_align_right template_header_default_align_right ir.ui.view qweb Inherits website.template_header_default
template_header_hamburger Template Header Hamburger ir.ui.view qweb Inherits website.layout
template_header_hamburger_align_right template_header_hamburger_align_right ir.ui.view qweb Inherits website.template_header_hamburger
template_header_hamburger_mobile_align_center template_header_hamburger_mobile_align_center ir.ui.view qweb Inherits website.template_header_hamburger
template_header_hamburger_mobile_align_right template_header_hamburger_mobile_align_right ir.ui.view qweb Inherits website.template_header_hamburger
template_header_mobile Template Header Mobile ir.ui.view qweb New
template_header_mobile_align_center template_header_mobile_align_center ir.ui.view qweb Inherits website.template_header_mobile
template_header_mobile_align_right template_header_mobile_align_right ir.ui.view qweb Inherits website.template_header_mobile
template_header_mobile_position_left template_header_mobile_position_left ir.ui.view qweb Inherits website.template_header_mobile
template_header_navlink_no_background template_header_navlink_no_background ir.ui.view qweb Inherits website.layout
template_header_sales_four Template Header Sale 4 ir.ui.view qweb Inherits website.layout
template_header_sales_four_align_center template_header_sales_four_align_center ir.ui.view qweb Inherits website.template_header_sales_four
template_header_sales_four_align_right template_header_sales_four_align_right ir.ui.view qweb Inherits website.template_header_sales_four
template_header_sales_one Template Header Sale 1 ir.ui.view qweb Inherits website.layout
template_header_sales_one_align_center template_header_sales_one_align_center ir.ui.view qweb Inherits website.template_header_sales_one
template_header_sales_one_align_right template_header_sales_one_align_right ir.ui.view qweb Inherits website.template_header_sales_one
template_header_sales_three Template Header Sale 3 ir.ui.view qweb Inherits website.layout
template_header_sales_three_align_center template_header_sales_three_align_center ir.ui.view qweb Inherits website.template_header_sales_three
template_header_sales_three_align_right template_header_sales_three_align_right ir.ui.view qweb Inherits website.template_header_sales_three
template_header_sales_two Template Header Sale 2 ir.ui.view qweb Inherits website.layout
template_header_sales_two_align_center template_header_sales_two_align_center ir.ui.view qweb Inherits website.template_header_sales_two
template_header_sales_two_align_right template_header_sales_two_align_right ir.ui.view qweb Inherits website.template_header_sales_two
template_header_search Template Header Search ir.ui.view qweb Inherits website.layout
template_header_search_align_center template_header_search_align_center ir.ui.view qweb Inherits website.template_header_search
template_header_search_align_right template_header_search_align_right ir.ui.view qweb Inherits website.template_header_search
template_header_sidebar Template Header Sidebar ir.ui.view qweb Inherits website.layout
template_header_sidebar_align_center template_header_sidebar_align_center ir.ui.view qweb Inherits website.template_header_sidebar
template_header_sidebar_align_right template_header_sidebar_align_right ir.ui.view qweb Inherits website.template_header_sidebar
template_header_sidebar_position_right template_header_sidebar_position_right ir.ui.view qweb Inherits website.template_header_sidebar
template_header_stretch Template Header Stretch ir.ui.view qweb Inherits website.layout
template_header_stretch_align_center template_header_stretch_align_center ir.ui.view qweb Inherits website.template_header_stretch
template_header_stretch_align_right template_header_stretch_align_right ir.ui.view qweb Inherits website.template_header_stretch
template_header_vertical Template Header Vertical ir.ui.view qweb Inherits website.layout
template_header_vertical_align_center template_header_vertical_align_center ir.ui.view qweb Inherits website.template_header_vertical
template_header_vertical_align_right template_header_vertical_align_right ir.ui.view qweb Inherits website.template_header_vertical
theme_view_form_preview website.form ir.module.module form New
theme_view_kanban Themes Kanban ir.module.module kanban New
theme_view_search Themes Search ir.module.module search New
user_dropdown user_dropdown ir.ui.view qweb Inherits portal.user_dropdown
view_arch_only website.ir_ui_view.arch_only ir.ui.view form New
view_attachment_form_inherit_website ir.attachment.form.inherit.website ir.attachment field Inherits base.view_attachment_form
view_attachment_tree_inherit_website ir.attachment.list.inherit.website ir.attachment field Inherits base.view_attachment_tree
view_base_language_install view_base_language_install.inherit base.language.install group Inherits base.view_base_language_install
view_edit_robots Edit Robots.txt website.robots form New
view_edit_third_party_domains Block 3rd-party service domains website.custom_blocked_third_party_domains form New
view_partner_form_inherit_website res.partner.form.website.inherit res.partner xpath Inherits base.view_partner_form
view_rewrite_search website.rewrite.search website.rewrite search New
view_server_action_form_website ir.actions.server.form.website ir.actions.server data Inherits base.view_server_action_form
view_server_action_search_website ir.actions.server.search.website ir.actions.server xpath Inherits base.view_server_action_search
view_view_form_extend ir.ui.view field Inherits base.view_view_form
view_view_tree_inherit_website ir.ui.view list Inherits base.view_view_tree
view_website_form website.form website form New
view_website_form_view_themes_modal website.modal.form website xpath Inherits website.view_website_form
view_website_rewrite_form website.rewrite form New
view_website_tree website.list website list New
website.aboutus About Us ir.ui.view qweb New
website.contactus Contact Us ir.ui.view qweb New
website.empty_search_svg website.empty_search_svg ir.ui.view qweb New
website.header_call_to_action Header Call to Action ir.ui.view qweb Inherits website.placeholder_header_call_to_action
website.header_call_to_action_large Header Call to Action - Large ir.ui.view qweb Inherits website.header_call_to_action
website.header_call_to_action_sidebar Header Call to Action - Sidebar ir.ui.view qweb Inherits website.header_call_to_action_large
website.header_call_to_action_stretched Header Call to Action - Stretched ir.ui.view qweb Inherits website.header_call_to_action
website.header_search_box Header Search Bar ir.ui.view qweb Inherits website.placeholder_header_search_box
website.header_social_links Header Social Links ir.ui.view qweb Inherits website.placeholder_header_social_links
website.header_text_element Header Text element ir.ui.view qweb Inherits website.placeholder_header_text_element
website.homepage Home ir.ui.view qweb New
website.neutralize_ribbon Neutralize Ribbon ir.ui.view qweb Inherits website.layout
website.our_services Services ir.ui.view qweb New
website.placeholder_header_call_to_action Placeholder Header Call to Action ir.ui.view qweb New
website.placeholder_header_search_box Placeholder Header Search Bar ir.ui.view qweb New
website.placeholder_header_social_links Placeholder Header Social Links ir.ui.view qweb New
website.placeholder_header_text_element Placeholder Header Text element ir.ui.view qweb New
website.s_dynamic_snippet_template website.s_dynamic_snippet_template ir.ui.view qweb New
website_controller_pages_form_view website.controller.page.form website.controller.page form New
website_controller_pages_kanban_view website.controller.page.kanban website.controller.page kanban New
website_controller_pages_search_view website.controller.page.search website.controller.page search New
website_controller_pages_tree_view website.controller.page.list website.controller.page list New
website_info Odoo Information ir.ui.view qweb New
website_menus_form_view website.menu.form website.menu form New
website_page_properties_base_view_form website.page.properties.base.form.view website.page.properties.base form New
website_page_properties_view_form website.page.properties.form.view website.page.properties xpath Inherits website_page_properties_base_view_form
website_pages_form_view website.page.form website.page form New
website_pages_kanban_view website.page.kanban website.page kanban New
website_pages_tree_view website.page.list website.page list New
website_pages_view_search website.page.view.search website.page search New
website_search_box Website Searchbox ir.ui.view qweb New
website_search_box_input website_search_box_input ir.ui.view qweb Inherits website.website_search_box
website_technical_pages_list_view website.technical.page.list website.technical.page list New
website_visitor_page_view_graph website.track.view.graph website.track graph New
website_visitor_page_view_search website.track.view.search website.track search New
website_visitor_page_view_tree website.track.view.list website.track list New
website_visitor_track_view_graph website.track.view.graph website.track graph New
website_visitor_track_view_tree website.track.view.list website.track list New
website_visitor_view_form website.visitor.view.form website.visitor form New
website_visitor_view_graph website.visitor.view.graph website.visitor graph New
website_visitor_view_kanban website.visitor.view.kanban website.visitor kanban New
website_visitor_view_search website.visitor.view.search website.visitor search New
website_visitor_view_tree website.visitor.view.list website.visitor list New
Models touched (61)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • get_base_url(self)
    Returns the base url for a given record, given the following priority: 1. If the record has a `website_id` field, we use the url from this website as base url, if set. 2. If the record has a `company_id` field, we use the website from that company (if set). Note that a company doesn't really have a website, it is retrieve through some heuristic in its `website_id`'s compute. 3. Use the ICP `web.base.url` (super) :return: the base url for this record :rtype: string
  • get_website_meta(self)

New fields (1)
  • website_ids Many2many → website
    string='Websites to translate' args: 'website'
Public methods (2)
  • default_get(self, fields)
    @api.model
  • lang_install(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (4)
  • website_path Char
    args: 'Website Path'
  • website_published Boolean
    copy=False help='A code server action can be executed from the website, using a dedicated controller. The address is <base>/website/action/<website_path>. Set this field as True to allow users to run this action. If it is set to False the action cannot be run through the website.' args: 'Available on the Website'
  • website_url Char
    compute='_get_website_url' help='The full URL to access the server action through the website.' args: 'Website Url'
  • xml_id Char
    compute='_compute_xml_id' help='ID of the action if defined in a XML file' args: 'External ID'
Public methods (0)

No public methods.

New fields (2)
  • key Char
    copy=False
  • website_id Many2one → website
    ondelete='cascade' args: 'website'
Public methods (2)
  • filter_duplicate(self, website_id=None)
    Filter current recordset only keeping the most suitable asset per distinct name. Every non-accessible asset will be removed from the set: * In non website context, every asset with a website will be removed * In a website context, every asset from another website
  • write(self, vals)
    COW for ir.asset. This way editing websites does not impact other websites. Also this way newly created websites will only contain the default assets.

New fields (1)
  • theme_template_id Many2one → theme.ir.asset
    copy=False index='btree_not_null' args: 'theme.ir.asset'
Public methods (0)

No public methods.

New fields (2)
  • key Char
  • website_id Many2one → website
    args: 'website'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • get_serving_groups(self)
    @api.model

New fields (2)
  • key Char
    copy=False
  • theme_template_id Many2one → theme.ir.attachment
    copy=False index='btree_not_null' args: 'theme.ir.attachment'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • get_frontend_session_info(self)
    @api.model
  • get_nearest_lang(self, lang_code)
    @api.model
  • routing_map(self, key=None)

New fields (4)
  • website_form_access Boolean
    help='Enable the form builder feature for this model.' args: 'Allowed to use in forms'
  • website_form_default_field_id Many2one → ir.model.fields
    domain="[('model', '=', model), ('ttype', '=', 'text')]" help='Specify the field which will contain meta and custom form fields datas.' args: 'ir.model.fields', 'Field for custom form data'
  • website_form_key Char
    help='Used in FormBuilder Registry'
  • website_form_label Char
    help="Form action label. Ex: crm.lead could be 'Send an e-mail' and project.issue could be 'Create an Issue'." translate=True args: 'Label for form action'
Public methods (2)
  • get_authorized_fields(self, model_name, property_origins)
    @api.model
    Return the fields of the given model name as a mapping like method `fields_get`.
  • get_compatible_form_models(self)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • website_form_blacklisted Boolean
    default=True help='Blacklist this field for web forms' index=True args: 'Blacklisted in web forms'
Public methods (2)
  • formbuilder_whitelist(self, model, fields)
    @api.model
    :param str model: name of the model on which to whitelist fields :param list(str) fields: list of fields to whitelist on the model :return: nothing of import
  • init(self)

New fields (2)
  • image_ids One2many → ir.attachment
    domain=[('res_model', '=', 'ir.module.module'), ('mimetype', '=like', 'image/%')] readonly=True string='Screenshots' args: 'ir.attachment', 'res_id'
  • is_installed_on_current_website Boolean
    compute='_compute_is_installed_on_current_website'
Public methods (7)
  • button_choose_theme(self)
    Remove any existing theme on the current website and install the theme ``self`` instead. The actual loading of the theme on the current website will be done automatically on ``write`` thanks to the upgrade and/or install. When installating a new theme, upgrade the upstream chain first to make sure we have the latest version of the dependencies to prevent inconsistencies. :return: dict with the next action to execute
  • button_refresh_theme(self)
    Refresh the current theme of the current website. To refresh it, we only need to upgrade the modules. Indeed the (re)loading of the theme will be done automatically on ``write``.
  • button_remove_theme(self)
    Remove the current theme of the current website.
  • get_themes_domain(self)
    Returns the 'ir.module.module' search domain matching all available themes.
  • update_list(self)
    @api.model
  • update_theme_images(self)
    @api.model
  • write(self, vals)
    Override to correctly upgrade themes after upgrade/installation of modules. # Install If this theme wasn't installed before, then load it for every website for which it is in the stream. eg. The very first installation of a theme on a website will trigger this. eg. If a website uses theme_A and we install sale, then theme_A_sale will be autoinstalled, and in this case we need to load theme_A_sale for the website. # Upgrade There are 2 cases to handle when upgrading a theme: * When clicking on the theme upgrade button on the interface, in which case there will be an http request made. -> We want to upgrade the current website only, not any other. * When upgrading with -u, in which case no request should be set. -> We want to upgrade every website using this theme.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • get_available_options(self)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • value_to_html(self, value, 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_menus_root(self)
    @api.model@tools.ormcache('self.env.uid', 'self.env.lang', 'self.env.context.get("force_action")')

New fields (8)
  • controller_page_ids One2many → website.controller.page
    args: 'website.controller.page', 'view_id'
  • first_page_id Many2one → website.page
    compute='_compute_first_page_id' help='First page linked to this view' string='Website Page' args: 'website.page'
  • page_ids One2many → website.page
    args: 'website.page', 'view_id'
  • track Boolean
    default=False help='Allow to specify for one page of the website to be trackable or not' string='Track'
  • visibility Selection
    default='' args: [('', 'Public'), ('connected', 'Signed In'), ('restricted_group', 'Restricted Group'), ('password', 'With Password')]
  • visibility_password Char
    copy=False groups='base.group_system'
  • visibility_password_display Char
    compute='_get_pwd' groups='website.group_website_designer' inverse='_set_pwd'
  • website_id Many2one → website
    ondelete='cascade' string='Website' args: 'website'
Public methods (9)
  • create(self, vals_list)
    @api.model_create_multi
    SOC for ir.ui.view creation. If a view is created without a website_id, it should get one if one is present in the context. Also check that an explicit website_id in create values matches the one in the context.
  • filter_duplicate(self)
    Filter current recordset only keeping the most suitable view per distinct key. Every non-accessible view will be removed from the set: * In non website context, every view with a website will be removed * In a website context, every view from another website
  • get_default_lang_code(self)
    @api.model
  • get_related_views(self, key, bundles=False)
    @api.model
    Make this only return most specific views for website.
  • get_view_hierarchy(self)
  • render_public_asset(self, template, values=None)
    @api.readonly@api.model
  • save(self, value, xpath=None)
  • unlink(self)
    This implements COU (copy-on-unlink). When deleting a generic page website-specific pages will be created so only the current website is affected.
  • write(self, vals)
    COW for ir.ui.view. This way editing websites does not impact other websites. Also this way newly created websites will only contain the default views.

New fields (1)
  • theme_template_id Many2one → theme.ir.ui.view
    copy=False index='btree_not_null' args: 'theme.ir.ui.view'
Public methods (1)
  • write(self, vals)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • website_id Many2one → website
    compute='_compute_website_id' store=True args: 'website'
Public methods (3)
  • action_open_website_theme_selector(self)
    @api.model
  • google_map_img(self, zoom=8, width=298, height=298)
  • google_map_link(self, zoom=8)

New fields (29)
  • auth_signup_uninvited Selection
    compute='_compute_auth_signup_uninvited' config_parameter=False default=None inverse='_inverse_auth_signup_uninvited'
  • cdn_activated Boolean
    readonly=False related='website_id.cdn_activated'
  • cdn_filters Text
    readonly=False related='website_id.cdn_filters'
  • cdn_url Char
    readonly=False related='website_id.cdn_url'
  • favicon Binary
    readonly=False related='website_id.favicon' args: 'Favicon'
  • google_analytics_key Char
    readonly=False related='website_id.google_analytics_key' args: 'Google Analytics Key'
  • google_search_console Char
    readonly=False related='website_id.google_search_console' args: 'Google Search Console Key'
  • group_multi_website Boolean
    implied_group='website.group_multi_website' args: 'Multi-website'
  • has_default_share_image Boolean
    compute='_compute_has_default_share_image' inverse='_inverse_has_default_share_image' args: 'Use a image by default for sharing'
  • has_google_analytics Boolean
    compute='_compute_has_google_analytics' inverse='_inverse_has_google_analytics' args: 'Google Analytics'
  • has_google_search_console Boolean
    compute='_compute_has_google_search_console' inverse='_inverse_has_google_search_console' args: 'Google Search Console'
  • has_plausible_shared_key Boolean
    compute='_compute_has_plausible_shared_key' inverse='_inverse_has_plausible_shared_key' args: 'Plausible Analytics'
  • language_ids Many2many
    readonly=False related='website_id.language_ids'
  • module_website_livechat Boolean
  • plausible_shared_key Char
    readonly=False related='website_id.plausible_shared_key' args: 'Plausible auth Key'
  • plausible_site Char
    readonly=False related='website_id.plausible_site' args: 'Plausible Site (e.g. domain.com)'
  • shared_user_account Boolean
    compute='_compute_shared_user_account' inverse='_inverse_shared_user_account' string='Shared Customer Accounts'
  • social_default_image Binary
    readonly=False related='website_id.social_default_image' args: 'Default Social Share Image'
  • website_block_third_party_domains Boolean
    readonly=False related='website_id.block_third_party_domains' args: 'Block 3rd-party domains'
  • website_company_id Many2one
    readonly=False related='website_id.company_id' string='Website Company'
  • website_cookies_bar Boolean
    readonly=False related='website_id.cookies_bar'
  • website_default_lang_code Char
    readonly=False related='website_id.default_lang_id.code' args: 'Default language code'
  • website_default_lang_id Many2one
    readonly=False related='website_id.default_lang_id' string='Default language'
  • website_domain Char
    readonly=False related='website_id.domain' args: 'Website Domain'
  • website_homepage_url Char
    readonly=False related='website_id.homepage_url'
  • website_id Many2one → website
    default=_default_website ondelete='cascade' string='website' args: 'website'
  • website_language_count Integer
    readonly=True related='website_id.language_count' string='Number of languages'
  • website_logo Binary
    readonly=False related='website_id.logo'
  • website_name Char
    readonly=False related='website_id.name' args: 'Website Name'
Public methods (3)
  • action_open_blocked_third_party_domains(self)
  • action_open_robots(self)
  • action_website_create_new(self)

New fields (0)

No new fields.

Public methods (2)
  • action_activate_langs(self)
    Open wizard to install language(s), so user can select the website(s) to translate in that language.
  • write(self, vals)

New fields (1)
  • visitor_ids One2many → website.visitor
    string='Visitors' args: 'website.visitor', 'partner_id'
Public methods (2)
  • google_map_img(self, zoom=8, width=298, height=298)
  • google_map_link(self, zoom=10)

New fields (1)
  • website_id Many2one → website
    readonly=False related='partner_id.website_id' related_sudo=False store=True args: 'website'
Public methods (2)
  • authenticate(self, credential, user_agent_env)
    Override to link the logged in user's res.partner to website.visitor. If a visitor already exists for that user, assign it data from the current anonymous visitor (if exists). Purpose is to try to aggregate as much sub-records (tracked pages, leads, ...) as possible.
  • website_publish_button(self)

New fields (9)
  • active Boolean
    default=True
  • bundle Char
    required=True
  • copy_ids One2many → ir.asset
    copy=False readonly=True args: 'ir.asset', 'theme_template_id', 'Assets using a copy of me'
  • directive Selection
    default=APPEND_DIRECTIVE selection=[(APPEND_DIRECTIVE, 'Append'), (PREPEND_DIRECTIVE, 'Prepend'), (AFTER_DIRECTIVE, 'After'), (BEFORE_DIRECTIVE, 'Before'), (REMOVE_DIRECTIVE, 'Remove'), (REPLACE_DIRECTIVE, 'Replace'), (INCLUDE_DIRECTIVE, 'Include')]
  • key Char
  • name Char
    required=True
  • path Char
    required=True
  • sequence Integer
    default=DEFAULT_SEQUENCE required=True
  • target Char
Public methods (0)

No public methods.

New fields (4)
  • copy_ids One2many → ir.attachment
    copy=False readonly=True args: 'ir.attachment', 'theme_template_id', 'Attachment using a copy of me'
  • key Char
    required=True
  • name Char
    required=True
  • url Char
Public methods (0)

No public methods.

New fields (11)
  • active Boolean
    default=True
  • arch Text
    translate=xml_translate
  • arch_fs Char
    default=compute_arch_fs
  • copy_ids One2many → ir.ui.view
    copy=False readonly=True args: 'ir.ui.view', 'theme_template_id', 'Views using a copy of me'
  • customize_show Boolean
  • inherit_id Reference
    selection=[('ir.ui.view', 'ir.ui.view'), ('theme.ir.ui.view', 'theme.ir.ui.view')]
  • key Char
  • mode Selection
    args: [('primary', 'Base view'), ('extension', 'Extension View')]
  • name Char
    required=True
  • priority Integer
    default=DEFAULT_SEQUENCE required=True
  • type Char
Public methods (1)
  • compute_arch_fs(self)

New fields (0)

No new fields.

Public methods (4)
  • disable_asset(self, name)
    @api.model
  • disable_view(self, xml_id)
    @api.model
  • enable_asset(self, name)
    @api.model
  • enable_view(self, xml_id)
    @api.model

New fields (10)
  • copy_ids One2many → website.menu
    copy=False readonly=True args: 'website.menu', 'theme_template_id', 'Menu using a copy of me'
  • mega_menu_classes Char
  • mega_menu_content Html
  • name Char
    required=True translate=True
  • new_window Boolean
    args: 'New Window'
  • page_id Many2one → theme.website.page
    index='btree_not_null' ondelete='cascade' args: 'theme.website.page'
  • parent_id Many2one → theme.website.menu
    index=True ondelete='cascade' args: 'theme.website.menu'
  • sequence Integer
  • url Char
    default=''
  • use_main_menu_as_parent Boolean
    default=True
Public methods (0)

No public methods.

New fields (6)
  • copy_ids One2many → website.page
    copy=False readonly=True args: 'website.page', 'theme_template_id', 'Page using a copy of me'
  • is_new_page_template Boolean
    string='New Page Template'
  • is_published Boolean
  • url Char
  • view_id Many2one → theme.ir.ui.view
    index=True ondelete='cascade' required=True args: 'theme.ir.ui.view'
  • website_indexed Boolean
    default=True args: 'Page Indexed'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (44)
  • auth_signup_uninvited Selection
    default='b2b' string='Customer Account' args: [('b2b', 'On invitation'), ('b2c', 'Free sign up')]
  • auto_redirect_lang Boolean
    default=True help="Should users be redirected to their browser's language" args: 'Autoredirect Language'
  • block_third_party_domains Boolean
    default=True help='Block 3rd-party domains that may track users (YouTube, Google Maps, etc.).' args: 'Block 3rd-party domains'
  • blocked_third_party_domains Text
    compute='_compute_blocked_third_party_domains' args: 'List of blocked 3rd-party domains'
  • cdn_activated Boolean
    args: 'Content Delivery Network (CDN)'
  • cdn_filters Text
    default=<expr> help='URL matching those filters will be rewritten using the CDN Base URL' args: 'CDN Filters'
  • cdn_url Char
    default='' args: 'CDN Base URL'
  • company_id Many2one → res.company
    default=<expr> required=True string='Company' args: 'res.company'
  • configurator_done Boolean
    help='True if configurator has been completed or ignored'
  • cookies_bar Boolean
    help='Display a customizable cookies bar on your website.' args: 'Cookies Bar'
  • custom_blocked_third_party_domains Text
    groups='website.group_website_designer' translate=False args: 'User list of blocked 3rd-party domains'
  • custom_code_footer Html
    sanitize=False args: 'Custom end of <body> code'
  • custom_code_head Html
    sanitize=False args: 'Custom <head> code'
  • default_lang_id Many2one → res.lang
    default=_default_language required=True string='Default Language' args: 'res.lang'
  • domain Char
    help='E.g. https://www.mydomain.com' args: 'Website Domain'
  • domain_punycode Char
    compute='_compute_domain_punycode' readonly=True store=False string='Punycode Domain'
  • favicon Binary
    default=_default_favicon help='This field holds the image used to display a favicon on the website.' string='Website Favicon'
  • google_analytics_key Char
    args: 'Google Analytics Key'
  • google_maps_api_key Char
    args: 'Google Maps API Key'
  • google_search_console Char
    help='Google key, or Enable to access first reply'
  • has_social_default_image Boolean
    compute='_compute_has_social_default_image' store=True
  • homepage_url Char
    help='E.g. /contactus or /shop'
  • language_count Integer
    compute='_compute_language_count' args: 'Number of languages'
  • language_ids Many2many → res.lang
    default=_active_languages required=True string='Languages' args: 'res.lang', 'website_lang_rel', 'website_id', 'lang_id'
  • logo Binary
    default=_default_logo help='Display this logo on the website.' args: 'Website Logo'
  • menu_id Many2one → website.menu
    compute='_compute_menu' string='Main Menu' args: 'website.menu'
  • name Char
    required=True args: 'Website Name'
  • partner_id Many2one
    readonly=False related='user_id.partner_id' string='Public Partner'
  • plausible_shared_key Char
  • plausible_site Char
  • robots_txt Html
    groups='website.group_website_designer' sanitize=False translate=False args: 'Robots.txt'
  • sequence Integer
    default=10
  • social_default_image Binary
    help='If set, replaces the website logo as the default social share image.' string='Default Social Share Image'
  • social_discord Char
    default=_default_social_discord args: 'Discord Account'
  • social_facebook Char
    default=_default_social_facebook args: 'Facebook Account'
  • social_github Char
    default=_default_social_github args: 'GitHub Account'
  • social_instagram Char
    default=_default_social_instagram args: 'Instagram Account'
  • social_linkedin Char
    default=_default_social_linkedin args: 'LinkedIn Account'
  • social_tiktok Char
    default=_default_social_tiktok args: 'TikTok Account'
  • social_twitter Char
    default=_default_social_twitter args: 'X Account'
  • social_youtube Char
    default=_default_social_youtube args: 'Youtube Account'
  • specific_user_account Boolean
    help='If True, new accounts will be associated to the current website' args: 'Specific User Account'
  • theme_id Many2one → ir.module.module
    help='Installed theme' args: 'ir.module.module'
  • user_id Many2one → res.users
    required=True string='Public User' args: 'res.users'
Public methods (38)
  • action_dashboard_redirect(self)
    @api.model
  • button_go_website(self, path='/')
  • check_existing_page(self, page)
    Returns a boolean, whether the page is considered to exist for the current website. This is a heuristic and is not perfectly reliable.
  • configurator_addons_apply(self, industry_name=None, **kwargs)
  • configurator_apply(self, **kwargs)
    @api.model
  • configurator_get_footer_links(self)
  • configurator_init(self)
    @api.model
  • configurator_missing_industry(self, unknown_industry)
    @api.model
  • configurator_recommended_themes(self, industry_id, palette, result_nbr_max=3)
    @api.model
  • configurator_set_menu_links(self, menu_company, module_data)
  • configurator_skip(self)
    @api.model
  • copy_menu_hierarchy(self, top_menu)
  • create(self, vals_list)
    @api.model_create_multi
  • create_and_redirect_configurator(self)
  • get_cdn_url(self, uri)
  • get_client_action(self, url, mode_edit=False, website_id=False)
  • get_client_action_url(self, url, mode_edit=False, mode_debug=0)
  • get_cta_data(self, website_purpose, website_type)
  • get_current_website(self, fallback=True)
    @api.model
    The current website is returned in the following order: - the website forced in session `force_website_id` - the website set in context - (if frontend or fallback) the website matching the request's "domain" - arbitrary the first website found in the database if `fallback` is set to `True` - empty browse record
  • get_suggested_controllers(self)
    Returns a tuple (name, url, icon). Where icon can be a module name, or a path
  • get_template(self, template)
    @api.model
  • get_theme_configurator_snippets(self, theme_name)
    @api.model
    Prepare and return configurator_snippets by fetching theme snippets and inserting addon snippets at their intended positions.
  • get_unique_key(self, string, template_module=False)
    Given a string, return an unique key including module prefix. It will be suffixed by a counter if it already exists to garantee uniqueness. :param string : the key to be checked for uniqueness, you can pass it with 'website.' or not :param template_module : the module to be prefixed on the key, if not set, we will use website
  • get_unique_path(self, page_url)
    Given an url, return that url suffixed by counter if it already exists :param page_url : the url to be checked for uniqueness
  • get_website_page_ids(self)
    Returns website page IDs grouped by website. If called with an empty or non-existent recordset, returns all pages under the None key. Else, returns a mapping of website IDs to their respective page IDs. :returns: Dict mapping website ID (or None) to list of website.page IDs. :rtype: dict[int | None, list[int]]
  • image_url(self, record, field, size=None)
    @api.model
    Returns a local url that points to the image field of a given browse record.
  • is_menu_cache_disabled(self)
    @tools.ormcache('self.env.uid', 'self.id', cache='templates')
    Checks if the website menu contains a record like url. :return: True if the menu contains a record like url
  • is_public_user(self)
    @api.model
  • is_view_active(self, key)
    @api.model
    Return True if active, False if not active, None if not found
  • new_page(self, name=False, add_menu=False, template='website.default_page', ispage=True, namespace=None, page_values=None, menu_values=None, sections_arch=None, page_title=None)
    @api.model
    Create a new website page, and assign it a xmlid based on the given one :param name: the name of the page :param add_menu: if True, add a menu for that page :param template: potential xml_id of the page to create :param namespace: module part of the xml_id if none, the template module name is used :param page_values: default values for the page to be created :param menu_values: default values for the menu to be created :param sections_arch: HTML content of sections :param page_title: if set, it allows using 'name' for the URL and a different title
  • pager(self, url, total, page=1, step=30, scope=5, url_args=None)
    @api.model
  • rule_is_enumerable(self, rule)
    Checks that it is possible to generate sensible GET queries for a given rule (if the endpoint matches its own requirements) :type rule: werkzeug.routing.Rule :rtype: bool
  • search_pages(self, needle=None, limit=None)
  • search_url_dependencies(self, res_model, res_ids)
    @api.model
    Search dependencies just for information. It will not catch 100% of dependencies and False positive is more than possible Each module could add dependences in this dict :returns: a dictionnary where key is the 'categorie' of object related to the given view, and the value is the list of text and link to the resource using given page
  • unlink(self)
  • viewref(self, view_id, raise_if_not_found=True)
    @api.model
    Given an xml_id or a view_id, return the corresponding view record. In case of website context, return the most specific one. Look also for archived views, no matter the context. :param view_id: either a string xml_id or an integer view_id :param raise_if_not_found: should the method raise an error if no view found :return: The view record or empty recordset
  • website_domain(self)
  • write(self, vals)

New fields (0)

No new fields.

Public methods (3)
  • make_scss_customization(self, url, values)
    @api.model
    Makes a scss customization of the given file. That file must contain a scss map including a line comment containing the word 'hook', to indicate the location where to write the new key,value pairs. Params: url (str): the URL of the scss file to customize (supposed to be a variable file which will appear in the assets_frontend bundle) values (dict): key,value mapping to integrate in the file's map (containing the word hook). If a key is already in the file's map, its value is overridden.
  • reset_asset(self, url, bundle)
    @api.model
    Delete the potential customizations made to a given (original) asset. Params: url (str): the URL of the original asset (scss / js) file bundle (str): the name of the bundle in which the customizations to delete were made
  • save_asset(self, url, bundle, content, file_type)
    @api.model
    Customize the content of a given asset (scss / js). Params: url (src): the URL of the original asset to customize (whether or not the asset was already customized) bundle (src): the name of the bundle in which the customizations will take effect content (src): the new content of the asset (scss / js) file_type (src): either 'scss' or 'js' according to the file being customized

New fields (11)
  • description Char
    translate=True
  • feature_url Char
  • iap_page_code Char
    help='Page code used to tell IAP website_service for which page a snippet list should be generated'
  • icon Char
  • menu_company Boolean
    help='If set, add the menu as a second level menu, as a child of "Company" menu.'
  • menu_sequence Integer
    help='If set, a website menu will be created for the feature.'
  • module_id Many2one → ir.module.module
    ondelete='cascade' args: 'ir.module.module'
  • name Char
    translate=True
  • page_view_id Many2one → ir.ui.view
    ondelete='cascade' args: 'ir.ui.view'
  • sequence Integer
  • website_config_preselection Char
    help='Comma-separated list of website type/purpose for which this feature should be pre-selected'
Public methods (0)

No public methods.

New fields (9)
  • default_layout Selection
    default='grid' selection=[('grid', 'Grid'), ('list', 'List')]
  • menu_ids One2many → website.menu
    args: 'website.menu', 'controller_page_id', 'Related Menus'
  • name Char
    compute='_compute_name' inverse='_inverse_name' precompute=True required=True store=True string='The name is used to generate the URL and is shown in the browser title bar'
  • name_slugified Char
    compute='_compute_name_slugified' help='The name of the page usable in a URL' inverse='_inverse_name_slugified' precompute=True store=True string='URL'
  • record_domain Char
    help='Domain to restrict records that can be viewed publicly' string='Domain'
  • record_view_id Many2one → ir.ui.view
    ondelete='cascade' string='Record view' args: 'ir.ui.view'
  • url_demo Char
    compute='_compute_url_demo' string='Demo URL'
  • view_id Many2one → ir.ui.view
    index=True ondelete='cascade' required=True string='Listing view' args: 'ir.ui.view'
  • website_id Many2one
    ondelete='cascade' readonly=False related='view_id.website_id' store=True
Public methods (4)
  • create(self, vals_list)
    @api.model_create_multi
  • open_website_url(self)
  • unlink(self)
  • write(self, vals)

New fields (1)
  • cover_properties Text
    default=<expr> args: 'Cover Properties'
Public methods (1)
  • write(self, vals)

New fields (1)
  • content Text
    default=<expr>
Public methods (1)
  • action_save(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (15)
  • child_id One2many → website.menu
    string='Child Menus' args: 'website.menu', 'parent_id'
  • controller_page_id Many2one → website.controller.page
    index='btree_not_null' ondelete='cascade' args: 'website.controller.page', 'Related Model Page'
  • group_ids Many2many → res.groups
    groups='base.group_user' help='User needs to be at least in one of these groups to see the menu' string='Visible Groups' args: 'res.groups'
  • is_mega_menu Boolean
    compute=_compute_field_is_mega_menu inverse=_set_field_is_mega_menu
  • is_visible Boolean
    compute='_compute_visible' string='Is Visible'
  • mega_menu_classes Char
  • mega_menu_content Html
    prefetch=True sanitize=False translate=html_translate
  • name Char
    required=True translate=True args: 'Menu'
  • new_window Boolean
    args: 'New Window'
  • page_id Many2one → website.page
    index='btree_not_null' ondelete='cascade' args: 'website.page', 'Related Page'
  • parent_id Many2one → website.menu
    index=True ondelete='cascade' args: 'website.menu', 'Parent Menu'
  • parent_path Char
    index=True
  • sequence Integer
    default=_default_sequence
  • url Char
    compute='_compute_url' copy=True default='#' readonly=False required=True store=True args: 'Url'
  • website_id Many2one → website
    ondelete='cascade' args: 'website', 'Website'
Public methods (5)
  • create(self, vals_list)
    @api.model_create_multi
    In case a menu without a website_id is trying to be created, we duplicate it for every website. Note: Particularly useful when installing a module that adds a menu like /shop. So every website has the shop menu. Be careful to return correct record for ir.model.data xml_id in case of default main menus creation.
  • get_tree(self, website_id, menu_id=None)
    @api.model
  • save(self, website_id, data)
    @api.model
  • unlink(self)
  • write(self, vals)

New fields (1)
  • theme_template_id Many2one → theme.website.menu
    copy=False index='btree_not_null' args: 'theme.website.menu'
Public methods (0)

No public methods.

New fields (1)
  • website_id Many2one → website
    help='Restrict to a specific website.' index=True ondelete='restrict' string='Website' args: 'website'
Public methods (1)
  • can_access_from_current_website(self, website_id=False)

New fields (13)
  • arch Text
    depends_context=('website_id') readonly=False related='view_id.arch'
  • date_publish Datetime
    args: 'Publishing Date'
  • is_homepage Boolean
    compute='_compute_is_homepage' string='Homepage'
  • is_in_menu Boolean
    compute='_compute_website_menu'
  • is_new_page_template Boolean
    help='Add this page to the "+New" page templates. It will be added to the "Custom" category.' string='New Page Template'
  • is_visible Boolean
    compute='_compute_visible' string='Is Visible'
  • menu_ids One2many → website.menu
    args: 'website.menu', 'page_id', 'Related Menus'
  • url Char
    required=True args: 'Page URL'
  • view_id Many2one → ir.ui.view
    index=True ondelete='cascade' required=True string='View' args: 'ir.ui.view'
  • view_write_date Datetime
    related='view_id.write_date' args: 'Last Content Update on'
  • view_write_uid Many2one → res.users
    related='view_id.write_uid' args: 'res.users', 'Last Content Update by'
  • website_id Many2one
    ondelete='cascade' readonly=False related='view_id.website_id' store=True
  • website_indexed Boolean
    default=True args: 'Is Indexed'
Public methods (6)
  • action_page_debug_view(self)
  • clone_page(self, page_id, page_name=None, clone_menu=True)
    @api.model
    Clone a page, given its identifier :param page_id : website.page identifier
  • copy_data(self, default=None)
  • get_website_meta(self)
  • unlink(self)
  • write(self, vals)

New fields (1)
  • theme_template_id Many2one → theme.website.page
    copy=False index='btree_not_null' args: 'theme.website.page'
Public methods (0)

No public methods.

New fields (12)
  • date_publish Datetime
    readonly=False related='target_model_id.date_publish'
  • group_ids Many2many
    readonly=False related='target_model_id.group_ids'
  • is_new_page_template Boolean
    readonly=False related='target_model_id.is_new_page_template'
  • name Char
    readonly=False related='target_model_id.name'
  • old_url Char
  • redirect_old_url Boolean
    default=False store=False
  • redirect_type Selection
    default='301' required=True store=False args: [('301', '301 Moved permanently'), ('302', '302 Moved temporarily')]
  • target_model_id Many2one → website.page
    args: 'website.page'
  • url Char
    readonly=False related='target_model_id.url'
  • visibility Selection
    readonly=False related='target_model_id.visibility'
  • visibility_password_display Char
    readonly=False related='target_model_id.visibility_password_display'
  • website_indexed Boolean
    readonly=False related='target_model_id.website_indexed'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (8)
  • can_publish Boolean
    compute='_compute_can_publish'
  • is_homepage Boolean
    compute='_compute_is_homepage' inverse='_inverse_is_homepage' string='Homepage'
  • is_in_menu Boolean
    compute='_compute_is_in_menu' inverse='_inverse_is_in_menu'
  • is_published Boolean
    compute='_compute_is_published' inverse='_inverse_is_published'
  • menu_ids One2many → website.menu
    compute='_compute_menu_ids' args: 'website.menu'
  • target_model_id Reference
    required=True selection='_selection_target_model_id'
  • url Char
    required=True
  • website_id Many2one → website
    required=True args: 'website'
Public methods (0)

No public methods.

New fields (3)
  • header_color Char
  • header_overlay Boolean
  • header_text_color Char
Public methods (0)

No public methods.

New fields (2)
  • footer_visible Boolean
    default=True
  • header_visible Boolean
    default=True
Public methods (0)

No public methods.

New fields (5)
  • can_publish Boolean
    compute='_compute_can_publish' args: 'Can Publish'
  • is_published Boolean
    copy=False default=<expr> index=True args: 'Is Published'
  • website_absolute_url Char
    compute='_compute_website_absolute_url' help='The full absolute URL to access the document through the website.' args: 'Website Absolute URL'
  • website_published Boolean
    readonly=False related='is_published' args: 'Visible on current website'
  • website_url Char
    compute='_compute_website_url' help='The full relative URL to access the document through the website.' args: 'Website URL'
Public methods (5)
  • create(self, vals_list)
    @api.model_create_multi
  • create_and_get_website_url(self, **kwargs)
  • open_website_url(self)
  • website_publish_button(self)
  • write(self, vals)

New fields (8)
  • active Boolean
    default=True
  • name Char
    required=True args: 'Name'
  • redirect_type Selection
    default='302' help="Type of redirect/Rewrite:\n\n 301 Moved permanently: The browser will keep in cache the new url.\n 302 Moved temporarily: The browser will not keep in cache the new url and ask again the next time the new url.\n 404 Not Found: If you want remove a specific page/controller (e.g. Ecommerce is installed, but you don't want /shop on a specific website)\n 308 Redirect / Rewrite: If you want rename a controller with a new url. (Eg: /shop -> /garden - Both url will be accessible but /shop will automatically be redirected to /garden)\n " string='Action' args: [('404', '404 Not Found'), ('301', '301 Moved permanently'), ('302', '302 Moved temporarily'), ('308', '308 Redirect / Rewrite')]
  • route_id Many2one → website.route
    args: 'website.route'
  • sequence Integer
  • url_from Char
    index=True args: 'URL from'
  • url_to Char
    args: 'URL to'
  • website_id Many2one → website
    index=True ondelete='cascade' string='Website' args: 'website'
Public methods (5)
  • create(self, vals_list)
    @api.model_create_multi
  • get_import_templates(self)
    @api.model
  • refresh_routes(self)
  • unlink(self)
  • write(self, vals)

New fields (1)
  • content Text
    default=<expr>
Public methods (1)
  • action_save(self)

New fields (1)
  • path Char
    args: 'Route'
Public methods (1)
  • name_search(self, name='', domain=None, operator='ilike', limit=100)
    @api.model@api.readonly

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (6)
  • is_seo_optimized Boolean
    compute='_compute_is_seo_optimized' store=True args: 'SEO optimized'
  • seo_name Char
    prefetch=True translate=True args: 'Seo name'
  • website_meta_description Text
    prefetch='website_meta' translate=True args: 'Website meta description'
  • website_meta_keywords Char
    prefetch='website_meta' translate=True args: 'Website meta keywords'
  • website_meta_og_img Char
    args: 'Website opengraph image'
  • website_meta_title Char
    prefetch='website_meta' translate=True args: 'Website meta title'
Public methods (1)
  • get_website_meta(self)
    This method will return final meta information. It will replace default values with user's custom value (if user modified it from the seo popup of frontend) This method is not meant for overridden. To customize meta values override `_default_website_meta` method instead of this method. This method only replaces user custom values in defaults.

New fields (8)
  • action_server_id Many2one → ir.actions.server
    ondelete='cascade' args: 'ir.actions.server', 'Server Action'
  • field_names Char
    default='' help='A list of comma-separated field names' required=True
  • filter_id Many2one → ir.filters
    ondelete='cascade' args: 'ir.filters', 'Filter'
  • help Text
    help='Optional help text describing the filter usage and/or purpose.' string='Description' translate=True
  • limit Integer
    help='The limit is the maximum number of records retrieved' required=True
  • model_name Char
    compute='_compute_model_name' string='Model name'
  • name Char
    required=True translate=True
  • website_id Many2one → website
    ondelete='cascade' string='Website' args: 'website'
Public methods (0)

No public methods.

New fields (2)
  • name Char
    args: 'Page Name'
  • website_url Char
    args: 'Website Page URL'
Public methods (2)
  • get_static_routes(self)
    @ormcache(cache='routing')
    Returns a set of website content static routes.
  • open_website_url(self)
    Opens the technical page for the given URL and website.

New fields (4)
  • page_id Many2one → website.page
    index=True ondelete='cascade' readonly=True args: 'website.page'
  • url Text
    index=True args: 'Url'
  • visit_datetime Datetime
    default=fields.Datetime.now readonly=True required=True args: 'Visit Date'
  • visitor_id Many2one → website.visitor
    index=True ondelete='cascade' readonly=True required=True args: 'website.visitor'
Public methods (0)

No public methods.

New fields (21)
  • access_token Char
    copy=False default=_get_access_token required=True
  • country_flag Char
    related='country_id.image_url' string='Country Flag'
  • country_id Many2one → res.country
    readonly=True args: 'res.country', 'Country'
  • create_date Datetime
    readonly=True args: 'First Connection'
  • email Char
    compute='_compute_email_phone' compute_sudo=True string='Email'
  • is_connected Boolean
    compute='_compute_time_statistics' help='A visitor is considered as connected if his last page view was within the last 5 minutes.' args: 'Is connected?'
  • lang_id Many2one → res.lang
    help='Language from the website when visitor has been created' string='Language' args: 'res.lang'
  • last_connection_datetime Datetime
    default=fields.Datetime.now help='Last page view date' readonly=True args: 'Last Connection'
  • last_visited_page_id Many2one → website.page
    compute='_compute_last_visited_page_id' string='Last Visited Page' args: 'website.page'
  • mobile Char
    compute='_compute_email_phone' compute_sudo=True string='Mobile'
  • name Char
    related='partner_id.name' args: 'Name'
  • page_count Integer
    compute='_compute_page_statistics' help='Total number of tracked page visited' args: '# Visited Pages'
  • page_ids Many2many → website.page
    compute='_compute_page_statistics' groups='website.group_website_designer' search='_search_page_ids' string='Visited Pages' args: 'website.page'
  • partner_id Many2one → res.partner
    compute='_compute_partner_id' help='Partner of the last logged in user.' index='btree_not_null' store=True string='Contact' args: 'res.partner'
  • partner_image Binary
    related='partner_id.image_1920'
  • time_since_last_action Char
    compute='_compute_time_statistics' help='Time since last page view. E.g.: 2 minutes ago' args: 'Last action'
  • timezone Selection
    string='Timezone' args: _tz_get
  • visit_count Integer
    default=1 help='A new visit is considered if last connection was more than 8 hours ago.' readonly=True args: '# Visits'
  • visitor_page_count Integer
    compute='_compute_page_statistics' help='Total number of visits on tracked pages' args: 'Page Views'
  • website_id Many2one → website
    readonly=True args: 'website', 'Website'
  • website_track_ids One2many → website.track
    readonly=True string='Visited Pages History' args: 'website.track', 'visitor_id'
Public methods (1)
  • action_send_mail(self)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/18.0/website
VERSION
VERSION 1.0
CATEGORY
CATEGORYWebsite/Website
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Olivier Dony, Thibault Delavallée, Denis Ledoux, Xavier ALT, David Monjoie, Xavier Morel, Mohammed Shekha, Nicolas Lempereur, Aaron Bohy, Jeremy Kersten, Lucas Perais (lpe), Damien Bouvy, Yannick Tivisse, qsm-odoo, Odoo Online, Romain Derie, Christophe Monniez, Jorge Pinna Puissant, Lucas Perais, Alexandre Kühn, Julien Castiaux, Xavier-Do, Andreas Perhab, Paul Morelle, Julien Mougenot, Achraf (abz), Brice bib Bartoletti, Tiffany Chang (tic), Rémy Voet (ryv), Pierre Rousseau, Gorash, Mathieu Duckerts-Antoine, Pierre Paridans, abd-msyukyu-odoo, William Braeckman, Romain Estievenart, Benjamin Vray, odoo, Benoit Socias, Didier (did), Florian Vranckx, Antoine Guenet, Arthur Detroux (ard), Antoine Vandevenne (anv), Jinjiu Liu, Hubert Van De Walle, Mathieu Walravens, Valentin Chevalier, Renaud Thiry, Vincent Larcin, Weblate, Loan (LSE), Thomas Lefebvre (thle), alsh-odoo, Louis Wicket (wil), nda, Julien (jula), Mahamadasif Ansari, Gauthier Wala (gawa), Simon Genin (ges), Soukéina Bojabza, Robin Lejeune (role), xO-Tx, Louis (loco), Levi Siuzdak (sile), Maruan Aguerdouh (magm), Dylan Kiss (dyki), Antoine (ande), FrancoisGe, Michael (mcm), Chong Wang (cwg), bram1000, Anita (anko), Xavier Bol (xbo), Brieuc-brd, Alessandro Caldonazzi (alca), divy-odoo, Nguyễn Đại Dương, Mahdi Cheikh Rouhou (macr), omra-odoo, Walid (wasa), sesn-odoo, Deependra Solanki, visp-odoo, stefanorigano (SRI), Astik Singh, Benjamin Hanquin (beha), Parth Gajjar, mizosoft, Mehdi Outagant (MOU), Guillaume-gdi, Serge Bayet (seba), reka-odoo, AMZIL Ayoub, vava-odoo, jobl, Bastien Fafchamps (bafa), Julien Carion (juca), dhba, adsh-odoo, dere-odoo, duongnguyen-viindoo, Julien Segers (juse), Chrysanthe (chgo), Adnan Saiyed, Rodolpho Lima, shsa-odoo, adch-odoo, sami odoo, Louis (wil), Mohammed Basioni (basm), Junqi Wu, mano-odoo, Sanjay Sharma, aamo-odoo, Xavier Luyckx (xlu), Antoine (anso), Léo Gizard, LuCastagne, Aleksandar Gajic, antonag32, Rahil Ghanchi, panv-odoo, paru-odoo, Mohammed Basioni, Sébastien (blse), Pierre Pulinckx (PIPU), Denis Rygaert, Leonardo J. Caballero G, Arib Ansari, sben-odoo, Morgane (morm), Pierre Lamotte (pila), Michaël Mattiello, nikj-odoo, Pierre Pulinckx (pipu), Pierre Pulinckx, Bastien PIERRE, Thomas Carlier(thc), lse-odoo, Krzysztof Magusiak (krma), nipl-odoo, Ajit Singh, Akash Pandey, Hadi El Yakhni, Elier Ayala Bernal, mjvi-odoo, desh, bhna-odoo, mohannedah, Tudor-Calin Panzaru (tupan), Daniel Duato Catalán, ksbh-odoo, aans-odoo, rusp-odoo, Davide Bonetto, alap-odoo, Jay Panchal, Patrick Stooks, Subhadeep R. Dev, Alessandro Lupo, chdh-odoo, Parth Pujara, Garvish Panchal, dtda-odoo, Julien Launois (jula), Laetitia (ldau), Augustin (duau), romo, ptpu-odoo, Serhii Rubanskyi, Alice Gaudon, adip-odoo, h4818, Waleed Elgamal, Soumya M, saurabh, Rudra Patel, assk-odoo, Abdelouahab Laaroussi (abla), alan-odoo, Romaric MOYEUVRE, Ian (iacio), h4818 (ayh), Julien (jdeh), Perin Mangukiya (PERM), Alay Patel, Parth Vyas, Zachary (zavan), Joseph Maiarana
WEBSITE
WEBSITEhttps://www.odoo.com/app/website
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:25:54
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - digest
    - mail
    - base
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - resource
    - social_media
    - google_recaptcha
    - utm
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES geoip2
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (510)
XML IDNameModelTypeStatus
404_plausible Plausible 404 ir.ui.view qweb Inherits http_routing.404
action_website_rewrite_tree website.rewrite.list website.rewrite list New
asset_view_form_inherit_website ir.asset.form.inherit.website ir.asset field Inherits base.asset_view_form
asset_view_tree_inherit_website ir.asset.list.inherit.website ir.asset field Inherits base.asset_view_tree
brand_promotion Brand Promotion ir.ui.view qweb Inherits web.brand_promotion
bs_debug_view BS Debug t New
color_combinations_debug_view Color Combinations Debug t New
column_count_option column_count_option ir.ui.view qweb New
cookie_policy Cookie Policy ir.ui.view qweb New
cookies_bar Cookies Bar ir.ui.view qweb Inherits website.layout
custom_code_layout Custom Code Layout ir.ui.view qweb Inherits website.layout
default_css default_css ir.ui.view qweb New
default_csv default_csv ir.ui.view qweb New
default_js default_js ir.ui.view qweb New
default_less default_less ir.ui.view qweb New
default_page default_page ir.ui.view qweb New
default_scss default_scss ir.ui.view qweb New
default_xml default_xml ir.ui.view qweb New
dynamic_snippet_carousel_options_template dynamic_snippet_carousel_options_template ir.ui.view qweb New
external_snippets external_snippets ir.ui.view qweb Inherits website.snippets
footer_copyright_company_name footer_copyright_company_name ir.ui.view qweb Inherits website.layout
footer_custom Default ir.ui.view qweb Inherits website.layout
footer_language_selector_code Footer Language Selector Code ir.ui.view qweb Inherits portal.footer_language_selector
footer_language_selector_flag Footer Language Selector Flag ir.ui.view qweb Inherits portal.footer_language_selector
footer_language_selector_inline Footer Language Selector Inline ir.ui.view qweb Inherits portal.footer_language_selector
footer_language_selector_no_text Footer Language Selector No Text ir.ui.view qweb Inherits portal.footer_language_selector
footer_no_copyright Footer No Copyright ir.ui.view qweb Inherits website.layout
grid_layout_options grid_layout_options ir.ui.view qweb New
header_hoverable_dropdown Header Hoverable Dropdown ir.ui.view qweb Inherits website.layout
header_language_selector Header Language Selector ir.ui.view qweb Inherits website.placeholder_header_language_selector
header_language_selector_code Header Language Selector Code ir.ui.view qweb Inherits website.header_language_selector
header_language_selector_flag Header Language Selector Flag ir.ui.view qweb Inherits website.header_language_selector
header_language_selector_inline Header Language Selector Inline ir.ui.view qweb Inherits website.header_language_selector
header_language_selector_no_text Header Language Selector No Text ir.ui.view qweb Inherits website.header_language_selector
header_navbar_pills_style Navbar Links Style ir.ui.view qweb Inherits website.navbar_nav
header_search_box_input Header Search Box Input ir.ui.view qweb New
header_visibility_disappears Header Effect Disappears ir.ui.view qweb Inherits website.layout
header_visibility_fade_out Header Effect Fade Out ir.ui.view qweb Inherits website.layout
header_visibility_fixed Header Effect Fixed ir.ui.view qweb Inherits website.layout
header_visibility_standard Header Visibility Standard ir.ui.view qweb Inherits website.layout
iframefallback iframefallback ir.ui.view qweb Inherits web.layout
ir_model_fields_view website.ir.model.fields.view.form ir.model.fields xpath Inherits base.view_model_fields_form
ir_model_view website.ir.model.view.form ir.model xpath Inherits base.view_model_form
lang_flag Language Flag ir.ui.view qweb New
language_selector language_selector ir.ui.view qweb Inherits portal.language_selector
language_selector_inline language_selector_inline ir.ui.view qweb Inherits website.language_selector
layout Main layout ir.ui.view qweb Inherits portal.frontend_layout
list_hybrid Any Search Results ir.ui.view qweb New
list_website_public_pages Website Pages ir.ui.view qweb New
login_layout Website Login Layout ir.ui.view qweb Inherits web.login_layout
menu_search website.menu.search website.menu search New
menu_tree website.menu.list website.menu list New
navbar Navbar ir.ui.view qweb New
navbar_nav Navbar Nav ir.ui.view qweb New
navbar_toggler Navbar Toggler ir.ui.view qweb New
new_page_template_about_full_1_s_text_block_h1 new_page_template_about_full_1_s_text_block_h1 ir.ui.view qweb Inherits website.new_page_template_about_s_text_block_h1
new_page_template_about_full_1_s_text_block_h2 new_page_template_about_full_1_s_text_block_h2 ir.ui.view qweb Inherits website.new_page_template_about_s_text_block_h2
new_page_template_about_full_s_image_text new_page_template_about_full_s_image_text ir.ui.view qweb Inherits website.new_page_template_about_s_image_text
new_page_template_about_full_s_numbers new_page_template_about_full_s_numbers ir.ui.view qweb Inherits website.new_page_template_about_s_numbers
new_page_template_about_full_s_text_image new_page_template_about_full_s_text_image ir.ui.view qweb Inherits website.new_page_template_about_s_text_image
new_page_template_about_map_s_text_block_2nd new_page_template_about_map_s_text_block_2nd ir.ui.view qweb Inherits website.new_page_template_about_s_text_block_2nd
new_page_template_about_map_s_text_block_h1 new_page_template_about_map_s_text_block_h1 ir.ui.view qweb Inherits website.new_page_template_about_s_text_block_h1
new_page_template_about_map_s_text_block_h2 new_page_template_about_map_s_text_block_h2 ir.ui.view qweb Inherits website.new_page_template_about_s_text_block_h2
new_page_template_about_mini_s_text_block_h2 new_page_template_about_mini_s_text_block_h2 ir.ui.view qweb Inherits website.new_page_template_about_s_text_block_h2
new_page_template_about_personal_s_image_text new_page_template_about_personal_s_image_text ir.ui.view qweb Inherits website.new_page_template_about_s_image_text
new_page_template_about_personal_s_numbers new_page_template_about_personal_s_numbers ir.ui.view qweb Inherits website.new_page_template_about_s_numbers
new_page_template_about_personal_s_text_block_h2 new_page_template_about_personal_s_text_block_h2 ir.ui.view qweb Inherits website.new_page_template_about_s_text_block_h2
new_page_template_about_s_banner new_page_template_about_s_banner ir.ui.view qweb Inherits website.new_page_template_s_banner
new_page_template_about_s_company_team new_page_template_about_s_company_team ir.ui.view qweb Inherits website.new_page_template_s_company_team
new_page_template_about_s_cover new_page_template_about_s_cover ir.ui.view qweb Inherits website.new_page_template_s_cover
new_page_template_about_s_features new_page_template_about_s_features ir.ui.view qweb Inherits website.new_page_template_s_features
new_page_template_about_s_image_text new_page_template_about_s_image_text ir.ui.view qweb Inherits website.new_page_template_s_image_text
new_page_template_about_s_numbers new_page_template_about_s_numbers ir.ui.view qweb Inherits website.new_page_template_s_numbers
new_page_template_about_s_picture new_page_template_about_s_picture ir.ui.view qweb Inherits website.new_page_template_s_picture
new_page_template_about_s_text_block_2nd new_page_template_about_s_text_block_2nd ir.ui.view qweb Inherits website.new_page_template_s_text_block_2nd
new_page_template_about_s_text_block_h1 new_page_template_about_s_text_block_h1 ir.ui.view qweb Inherits website.new_page_template_s_text_block_h1
new_page_template_about_s_text_block_h2 new_page_template_about_s_text_block_h2 ir.ui.view qweb Inherits website.new_page_template_s_text_block_h2
new_page_template_about_s_text_cover new_page_template_about_s_text_cover ir.ui.view qweb Inherits website.new_page_template_s_text_cover
new_page_template_about_s_text_image new_page_template_about_s_text_image ir.ui.view qweb Inherits website.new_page_template_s_text_image
new_page_template_about_s_three_columns new_page_template_about_s_three_columns ir.ui.view qweb Inherits website.new_page_template_s_three_columns
new_page_template_about_timeline_s_text_block_h2 new_page_template_about_timeline_s_text_block_h2 ir.ui.view qweb Inherits website.new_page_template_about_s_text_block_h2
new_page_template_basic_2_s_text_block_h1 new_page_template_basic_2_s_text_block_h1 ir.ui.view qweb Inherits website.new_page_template_basic_s_text_block_h1
new_page_template_basic_s_picture new_page_template_basic_s_picture ir.ui.view qweb Inherits website.new_page_template_s_picture
new_page_template_basic_s_quotes_carousel new_page_template_basic_s_quotes_carousel ir.ui.view qweb Inherits website.new_page_template_s_quotes_carousel
new_page_template_basic_s_text_block_h1 new_page_template_basic_s_text_block_h1 ir.ui.view qweb Inherits website.new_page_template_s_text_block_h1
new_page_template_basic_s_text_cover new_page_template_basic_s_text_cover ir.ui.view qweb Inherits website.new_page_template_s_text_cover
new_page_template_gallery_s_banner new_page_template_gallery_s_banner ir.ui.view qweb Inherits website.new_page_template_s_banner
new_page_template_gallery_s_image_text_2nd new_page_template_gallery_s_image_text_2nd ir.ui.view qweb Inherits website.new_page_template_s_image_text_2nd
new_page_template_gallery_s_text_block_2nd new_page_template_gallery_s_text_block_2nd ir.ui.view qweb Inherits website.new_page_template_s_text_block_2nd
new_page_template_gallery_s_text_block_h2 new_page_template_gallery_s_text_block_h2 ir.ui.view qweb Inherits website.new_page_template_s_text_block_h2
new_page_template_groups new_page_template_groups ir.ui.view qweb New
new_page_template_landing_0_s_cover new_page_template_landing_0_s_cover ir.ui.view qweb Inherits website.new_page_template_landing_s_cover
new_page_template_landing_1_s_banner new_page_template_landing_1_s_banner ir.ui.view qweb Inherits website.new_page_template_landing_s_banner
new_page_template_landing_2_s_call_to_action new_page_template_landing_2_s_call_to_action ir.ui.view qweb Inherits new_page_template_landing_s_call_to_action
new_page_template_landing_2_s_cover new_page_template_landing_2_s_cover ir.ui.view qweb Inherits website.new_page_template_landing_s_cover
new_page_template_landing_2_s_text_block_h2 new_page_template_landing_2_s_text_block_h2 ir.ui.view qweb Inherits website.new_page_template_landing_s_text_block_h2
new_page_template_landing_2_s_three_columns new_page_template_landing_2_s_three_columns ir.ui.view qweb Inherits website.new_page_template_landing_s_three_columns
new_page_template_landing_3_s_call_to_action new_page_template_landing_3_s_call_to_action ir.ui.view qweb Inherits new_page_template_landing_s_call_to_action
new_page_template_landing_3_s_text_block_h2 new_page_template_landing_3_s_text_block_h2 ir.ui.view qweb Inherits website.new_page_template_landing_s_text_block_h2
new_page_template_landing_3_s_three_columns new_page_template_landing_3_s_three_columns ir.ui.view qweb Inherits website.new_page_template_landing_s_three_columns
new_page_template_landing_4_s_cover new_page_template_landing_4_s_cover ir.ui.view qweb Inherits website.new_page_template_landing_s_cover
new_page_template_landing_4_s_text_block_h2 new_page_template_landing_4_s_text_block_h2 ir.ui.view qweb Inherits website.new_page_template_landing_s_text_block_h2
new_page_template_landing_5_s_banner new_page_template_landing_5_s_banner ir.ui.view qweb Inherits website.new_page_template_landing_s_banner
new_page_template_landing_s_banner new_page_template_landing_s_banner ir.ui.view qweb Inherits website.new_page_template_s_banner
new_page_template_landing_s_call_to_action new_page_template_landing_s_call_to_action ir.ui.view qweb Inherits new_page_template_s_call_to_action
new_page_template_landing_s_color_blocks_2 new_page_template_landing_s_color_blocks_2 ir.ui.view qweb Inherits website.new_page_template_s_color_blocks_2
new_page_template_landing_s_cover new_page_template_landing_s_cover ir.ui.view qweb Inherits website.new_page_template_s_cover
new_page_template_landing_s_features new_page_template_landing_s_features ir.ui.view qweb Inherits website.new_page_template_s_features
new_page_template_landing_s_showcase new_page_template_landing_s_showcase ir.ui.view qweb Inherits website.new_page_template_s_showcase
new_page_template_landing_s_text_block_h2 new_page_template_landing_s_text_block_h2 ir.ui.view qweb Inherits website.new_page_template_s_text_block_h2
new_page_template_landing_s_text_cover new_page_template_landing_s_text_cover ir.ui.view qweb Inherits website.new_page_template_s_text_cover
new_page_template_landing_s_text_image new_page_template_landing_s_text_image ir.ui.view qweb Inherits website.new_page_template_s_text_image
new_page_template_landing_s_three_columns new_page_template_landing_s_three_columns ir.ui.view qweb Inherits website.new_page_template_s_three_columns
new_page_template_pricing_5_s_text_block_h1 new_page_template_pricing_5_s_text_block_h1 ir.ui.view qweb Inherits website.new_page_template_pricing_s_text_block_h1
new_page_template_pricing_s_image_text_2nd new_page_template_pricing_s_image_text_2nd ir.ui.view qweb Inherits website.new_page_template_s_image_text_2nd
new_page_template_pricing_s_text_block_2nd new_page_template_pricing_s_text_block_2nd ir.ui.view qweb Inherits website.new_page_template_s_text_block_2nd
new_page_template_pricing_s_text_block_h1 new_page_template_pricing_s_text_block_h1 ir.ui.view qweb Inherits website.new_page_template_s_text_block_h1
new_page_template_pricing_s_text_block_h2 new_page_template_pricing_s_text_block_h2 ir.ui.view qweb Inherits website.new_page_template_s_text_block_h2
new_page_template_s_banner new_page_template_s_banner ir.ui.view qweb Inherits website.s_banner
new_page_template_s_call_to_action new_page_template_s_call_to_action ir.ui.view qweb Inherits website.s_call_to_action
new_page_template_s_carousel new_page_template_s_carousel ir.ui.view qweb Inherits website.s_carousel
new_page_template_s_color_blocks_2 new_page_template_s_color_blocks_2 ir.ui.view qweb Inherits website.s_color_blocks_2
new_page_template_s_company_team new_page_template_s_company_team ir.ui.view qweb Inherits website.s_company_team
new_page_template_s_cover new_page_template_s_cover ir.ui.view qweb Inherits website.s_cover
new_page_template_s_features new_page_template_s_features ir.ui.view qweb Inherits website.s_features
new_page_template_s_image_gallery new_page_template_s_image_gallery ir.ui.view qweb Inherits website.s_image_gallery
new_page_template_s_image_text new_page_template_s_image_text ir.ui.view qweb Inherits website.s_image_text
new_page_template_s_image_text_2nd new_page_template_s_image_text_2nd ir.ui.view qweb Inherits website.s_image_text_2nd
new_page_template_s_images_wall new_page_template_s_images_wall ir.ui.view qweb Inherits website.s_images_wall
new_page_template_s_map new_page_template_s_map ir.ui.view qweb Inherits s_map
new_page_template_s_media_list new_page_template_s_media_list ir.ui.view qweb Inherits website.s_media_list
new_page_template_s_numbers new_page_template_s_numbers ir.ui.view qweb Inherits website.s_numbers
new_page_template_s_parallax new_page_template_s_parallax ir.ui.view qweb Inherits website.s_parallax
new_page_template_s_picture new_page_template_s_picture ir.ui.view qweb Inherits website.s_picture
new_page_template_s_quotes_carousel new_page_template_s_quotes_carousel ir.ui.view qweb Inherits website.s_quotes_carousel
new_page_template_s_references new_page_template_s_references ir.ui.view qweb Inherits website.s_references
new_page_template_s_showcase new_page_template_s_showcase ir.ui.view qweb Inherits website.s_showcase
new_page_template_s_text_block_2nd new_page_template_s_text_block_2nd ir.ui.view qweb Inherits website.s_text_block_2nd
new_page_template_s_text_block_h1 new_page_template_s_text_block_h1 ir.ui.view qweb Inherits website.s_text_block_h1
new_page_template_s_text_block_h2 new_page_template_s_text_block_h2 ir.ui.view qweb Inherits website.s_text_block_h2
new_page_template_s_text_cover new_page_template_s_text_cover ir.ui.view qweb Inherits website.s_text_cover
new_page_template_s_text_image new_page_template_s_text_image ir.ui.view qweb Inherits website.s_text_image
new_page_template_s_three_columns new_page_template_s_three_columns ir.ui.view qweb Inherits website.s_three_columns
new_page_template_s_website_form new_page_template_s_website_form ir.ui.view qweb Inherits s_website_form
new_page_template_services_0_s_three_columns new_page_template_services_0_s_three_columns ir.ui.view qweb Inherits website.new_page_template_services_s_three_columns
new_page_template_services_3_s_text_block_h1 new_page_template_services_3_s_text_block_h1 ir.ui.view qweb Inherits website.new_page_template_services_s_text_block_h1
new_page_template_services_s_image_text new_page_template_services_s_image_text ir.ui.view qweb Inherits website.new_page_template_s_image_text
new_page_template_services_s_image_text_2nd new_page_template_services_s_image_text_2nd ir.ui.view qweb Inherits website.new_page_template_s_image_text_2nd
new_page_template_services_s_parallax new_page_template_services_s_parallax ir.ui.view qweb Inherits website.new_page_template_s_parallax
new_page_template_services_s_text_block_2nd new_page_template_services_s_text_block_2nd ir.ui.view qweb Inherits website.new_page_template_s_text_block_2nd
new_page_template_services_s_text_block_h1 new_page_template_services_s_text_block_h1 ir.ui.view qweb Inherits website.new_page_template_s_text_block_h1
new_page_template_services_s_text_block_h2 new_page_template_services_s_text_block_h2 ir.ui.view qweb Inherits website.new_page_template_s_text_block_h2
new_page_template_services_s_text_cover new_page_template_services_s_text_cover ir.ui.view qweb Inherits website.new_page_template_s_text_cover
new_page_template_services_s_text_image new_page_template_services_s_text_image ir.ui.view qweb Inherits website.new_page_template_s_text_image
new_page_template_services_s_three_columns new_page_template_services_s_three_columns ir.ui.view qweb Inherits website.new_page_template_s_three_columns
new_page_template_team_0_s_three_columns new_page_template_team_0_s_three_columns ir.ui.view qweb Inherits website.new_page_template_team_s_three_columns
new_page_template_team_2_s_text_block_h1 new_page_template_team_2_s_text_block_h1 ir.ui.view qweb Inherits website.new_page_template_team_s_text_block_h1
new_page_template_team_s_image_gallery new_page_template_team_s_image_gallery ir.ui.view qweb Inherits website.new_page_template_s_image_gallery
new_page_template_team_s_image_text new_page_template_team_s_image_text ir.ui.view qweb Inherits website.new_page_template_s_image_text
new_page_template_team_s_image_text_2nd new_page_template_team_s_image_text_2nd ir.ui.view qweb Inherits website.new_page_template_s_image_text_2nd
new_page_template_team_s_images_wall new_page_template_team_s_images_wall ir.ui.view qweb Inherits website.new_page_template_s_images_wall
new_page_template_team_s_media_list new_page_template_team_s_media_list ir.ui.view qweb Inherits website.new_page_template_s_media_list
new_page_template_team_s_picture new_page_template_team_s_picture ir.ui.view qweb Inherits website.new_page_template_s_picture
new_page_template_team_s_text_block_h1 new_page_template_team_s_text_block_h1 ir.ui.view qweb Inherits website.new_page_template_s_text_block_h1
new_page_template_team_s_text_image new_page_template_team_s_text_image ir.ui.view qweb Inherits website.new_page_template_s_text_image
new_page_template_team_s_three_columns new_page_template_team_s_three_columns ir.ui.view qweb Inherits website.new_page_template_s_three_columns
no_autohide_menu no_autohide_menu ir.ui.view qweb Inherits website.layout
one_hybrid Single any Search Results ir.ui.view qweb New
option_footer_scrolltop option_footer_scrolltop ir.ui.view qweb Inherits website.layout
option_header_brand_logo Header Brand Logo ir.ui.view qweb Inherits website.placeholder_header_brand
option_header_brand_name Header Brand Name ir.ui.view qweb Inherits website.placeholder_header_brand
option_layout_hide_header option_layout_hide_header ir.ui.view qweb Inherits website.layout
page_404 Page Not Found ir.ui.view qweb New
pager Pager ir.ui.view qweb Inherits portal.pager
placeholder_header_brand Placeholder Header Brand ir.ui.view qweb New
placeholder_header_language_selector Placeholder Header Language Selector ir.ui.view qweb New
pricing Pricing ir.ui.view qweb New
privacy_policy Privacy Policy ir.ui.view qweb New
protected_403 Page Protected ir.ui.view qweb New
publish_management publish_management ir.ui.view qweb New
qweb_500 qweb_500 ir.ui.view qweb Inherits http_routing.500
record_cover record_cover ir.ui.view qweb New
res_config_settings_view_form res.config.settings.view.form.inherit.website res.config.settings xpath Inherits base.res_config_settings_view_form
res_config_settings_view_form_inherit_auth_signup res.config.settings.view.form.inherit.website res.config.settings xpath Inherits auth_signup.res_config_settings_view_form
reset_view_arch_wizard_view reset.view.arch.wizard field Inherits base.reset_view_arch_wizard_view
robots robots ir.ui.view qweb New
s_accordion Accordion ir.ui.view qweb New
s_accordion_image Accordion Image ir.ui.view qweb New
s_accordion_options s_accordion_options ir.ui.view qweb Inherits website.snippet_options
s_adventure Adventure ir.ui.view qweb New
s_alert Alert ir.ui.view qweb New
s_alert_options s_alert_options ir.ui.view qweb Inherits website.snippet_options
s_badge Badge ir.ui.view qweb New
s_badge_options s_badge_options ir.ui.view qweb Inherits website.snippet_options
s_banner Banner ir.ui.view qweb New
s_big_number Big number ir.ui.view qweb New
s_blockquote Blockquote ir.ui.view qweb New
s_blockquote_options s_blockquote_options ir.ui.view qweb Inherits website.snippet_options
s_button Button ir.ui.view qweb New
s_call_to_action Call to Action ir.ui.view qweb New
s_call_to_action_about s_call_to_action_about ir.ui.view qweb Inherits website.s_call_to_action
s_call_to_action_digital s_call_to_action_digital ir.ui.view qweb Inherits website.s_call_to_action
s_call_to_action_menu s_call_to_action_menu ir.ui.view qweb Inherits website.s_call_to_action
s_card Card ir.ui.view qweb New
s_card_offset Card Offset ir.ui.view qweb New
s_card_options s_card_options ir.ui.view qweb New
s_card_options_apply s_card_options_apply ir.ui.view qweb Inherits website.snippet_options
s_cards_grid Cards Grid ir.ui.view qweb New
s_cards_soft Cards Soft ir.ui.view qweb New
s_carousel Carousel ir.ui.view qweb New
s_carousel_intro Carousel Intro ir.ui.view qweb New
s_carousel_intro_options s_carousel_intro_options ir.ui.view qweb Inherits website.snippet_options
s_chart Chart ir.ui.view qweb New
s_chart_options s_chart_options ir.ui.view qweb Inherits website.snippet_options
s_closer_look Closer Look ir.ui.view qweb New
s_color_blocks_2 Big Boxes ir.ui.view qweb New
s_company_team Team ir.ui.view qweb New
s_company_team_basic Team Basic ir.ui.view qweb New
s_company_team_detail Team Detail ir.ui.view qweb New
s_company_team_shapes Team Shapes ir.ui.view qweb New
s_comparisons Comparisons ir.ui.view qweb New
s_contact_info Contact Info ir.ui.view qweb New
s_countdown Countdown ir.ui.view qweb New
s_countdown_options s_countdown_options ir.ui.view qweb Inherits website.snippet_options
s_cover Cover ir.ui.view qweb New
s_cta_badge CTA Badge ir.ui.view qweb New
s_cta_badge_options s_cta_badge_options ir.ui.view qweb Inherits website.snippet_options
s_cta_box Box Call to Action ir.ui.view qweb New
s_cta_card Card Call to Action ir.ui.view qweb New
s_cta_mockups Call to Action Mockups ir.ui.view qweb New
s_discovery Discovery ir.ui.view qweb New
s_dynamic_snippet Dynamic Snippet ir.ui.view qweb New
s_dynamic_snippet_carousel Dynamic Carousel ir.ui.view qweb New
s_dynamic_snippet_carousel_options s_dynamic_snippet_carousel_options ir.ui.view qweb Inherits website.snippet_options
s_dynamic_snippet_options s_dynamic_snippet_options ir.ui.view qweb Inherits website.snippet_options
s_embed_code Embed Code ir.ui.view qweb New
s_embed_code_options s_embed_code_options ir.ui.view qweb Inherits website.snippet_options
s_empowerment Empowerment ir.ui.view qweb New
s_facebook_page Facebook ir.ui.view qweb New
s_facebook_page_options s_facebook_page_options ir.ui.view qweb Inherits website.snippet_options
s_faq_collapse FAQ ir.ui.view qweb New
s_faq_horizontal Topics List ir.ui.view qweb New
s_faq_horizontal_options s_faq_horizontal_options ir.ui.view qweb Inherits website.snippet_options
s_faq_list FAQ List ir.ui.view qweb New
s_features Features ir.ui.view qweb New
s_features_grid Features Grid ir.ui.view qweb New
s_features_wall Features Wall ir.ui.view qweb New
s_features_wave Features Wave ir.ui.view qweb New
s_framed_intro Framed Intro ir.ui.view qweb New
s_freegrid Free grid ir.ui.view qweb New
s_google_map Google Map ir.ui.view qweb New
s_google_map_options s_google_map_options ir.ui.view qweb Inherits website.snippet_options
s_hr Separator ir.ui.view qweb New
s_hr_options s_hr_options ir.ui.view qweb Inherits website.snippet_options
s_image Image ir.ui.view qweb New
s_image_frame Image Frame ir.ui.view qweb New
s_image_gallery Image Gallery ir.ui.view qweb New
s_image_gallery_options s_image_gallery_options ir.ui.view qweb Inherits website.snippet_options
s_image_hexagonal Image Hexagonal ir.ui.view qweb New
s_image_options s_image_options ir.ui.view qweb Inherits website.snippet_options
s_image_punchy Image Punchy ir.ui.view qweb New
s_image_text Image - Text ir.ui.view qweb New
s_image_text_2nd s_image_text_2nd ir.ui.view qweb Inherits website.new_page_template_s_image_text
s_image_text_box Image Text Box ir.ui.view qweb New
s_image_text_overlap Image - Text Overlap ir.ui.view qweb New
s_image_title Image Title ir.ui.view qweb New
s_images_constellation Images Constellation ir.ui.view qweb New
s_images_mosaic Images Mosaic ir.ui.view qweb New
s_images_wall Images Wall ir.ui.view qweb New
s_instagram_page Instagram Page ir.ui.view qweb New
s_instagram_page_options s_instagram_page_options ir.ui.view qweb Inherits website.snippet_options
s_intro_pill Intro Pill ir.ui.view qweb New
s_key_benefits Key benefits ir.ui.view qweb New
s_key_images Key Images ir.ui.view qweb New
s_kickoff Kickoff ir.ui.view qweb New
s_map Map ir.ui.view qweb New
s_map_options s_map_options ir.ui.view qweb Inherits website.snippet_options
s_masonry_block Masonry ir.ui.view qweb New
s_masonry_block_alternation_image_text_template s_masonry_block_alternation_image_text_template ir.ui.view qweb New
s_masonry_block_alternation_text_image_template s_masonry_block_alternation_text_image_template ir.ui.view qweb New
s_masonry_block_alternation_text_image_text_template s_masonry_block_alternation_text_image_text_template ir.ui.view qweb New
s_masonry_block_alternation_text_template s_masonry_block_alternation_text_template ir.ui.view qweb New
s_masonry_block_default_template s_masonry_block_default_template ir.ui.view qweb New
s_masonry_block_image_texts_image_template s_masonry_block_image_texts_image_template ir.ui.view qweb New
s_masonry_block_images_template s_masonry_block_images_template ir.ui.view qweb New
s_masonry_block_mosaic_template s_masonry_block_mosaic_template ir.ui.view qweb New
s_masonry_block_options s_masonry_block_options ir.ui.view qweb Inherits website.snippet_options
s_masonry_block_reversed_template s_masonry_block_reversed_template ir.ui.view qweb New
s_masonry_block_texts_image_texts_template s_masonry_block_texts_image_texts_template ir.ui.view qweb New
s_media_list Media List ir.ui.view qweb New
s_media_list_options s_media_list_options ir.ui.view qweb Inherits website.snippet_options
s_mega_menu_big_icons_subtitles Menu - Big icons & subtitles ir.ui.view qweb New
s_mega_menu_big_icons_subtitles_item s_mega_menu_big_icons_subtitles_item ir.ui.view qweb New
s_mega_menu_cards Menu - Cards ir.ui.view qweb New
s_mega_menu_cards_item s_mega_menu_cards_item ir.ui.view qweb New
s_mega_menu_images_subtitles Menu - images & subtitles ir.ui.view qweb New
s_mega_menu_images_subtitles_item s_mega_menu_images_subtitles_item ir.ui.view qweb New
s_mega_menu_little_icons Menu - Little icons ir.ui.view qweb New
s_mega_menu_menu_image_menu Menu - Image - Menu ir.ui.view qweb New
s_mega_menu_menus_logos Menus & logos ir.ui.view qweb New
s_mega_menu_multi_menus Multi-Menus ir.ui.view qweb New
s_mega_menu_odoo_menu Odoo Menu ir.ui.view qweb New
s_mega_menu_thumbnails Menu - Thumbnails ir.ui.view qweb New
s_mega_menu_thumbnails_item s_mega_menu_thumbnails_item ir.ui.view qweb New
s_mockup_image Mockup Image ir.ui.view qweb New
s_motto Motto ir.ui.view qweb New
s_numbers Numbers ir.ui.view qweb New
s_numbers_charts Numbers Charts ir.ui.view qweb New
s_numbers_grid Numbers Grid ir.ui.view qweb New
s_numbers_list Numbers list ir.ui.view qweb New
s_numbers_showcase Numbers Showcase ir.ui.view qweb New
s_opening_hours Opening Hours ir.ui.view qweb New
s_parallax Parallax ir.ui.view qweb New
s_picture Title - Image ir.ui.view qweb New
s_picture_only s_picture_only ir.ui.view qweb Inherits website.new_page_template_s_picture
s_popup Popup ir.ui.view qweb New
s_popup_options s_popup_options ir.ui.view qweb Inherits website.snippet_options
s_pricelist_boxed Pricelist Boxed ir.ui.view qweb New
s_pricelist_boxed_add_product_widget s_pricelist_boxed_add_product_widget ir.ui.view qweb New
s_pricelist_boxed_item s_pricelist_boxed_item ir.ui.view qweb New
s_pricelist_boxed_options s_pricelist_boxed_options ir.ui.view qweb Inherits website.snippet_options
s_pricelist_cafe Pricelist Cafe ir.ui.view qweb New
s_pricelist_cafe_add_product_widget s_pricelist_cafe_add_product_widget ir.ui.view qweb New
s_pricelist_cafe_item s_pricelist_cafe_item ir.ui.view qweb New
s_pricelist_cafe_options s_pricelist_cafe_options ir.ui.view qweb Inherits website.snippet_options
s_process_steps Steps ir.ui.view qweb New
s_process_steps_options s_process_steps_options ir.ui.view qweb Inherits website.snippet_options
s_product_catalog Pricelist ir.ui.view qweb New
s_product_catalog_add_product_widget s_product_catalog_add_product_widget ir.ui.view qweb New
s_product_catalog_dish s_product_catalog_dish ir.ui.view qweb New
s_product_catalog_options s_product_catalog_options ir.ui.view qweb Inherits website.snippet_options
s_product_list Items ir.ui.view qweb New
s_progress_bar Progress Bar ir.ui.view qweb New
s_progress_bar_options s_progress_bar_options ir.ui.view qweb Inherits website.snippet_options
s_quadrant Quadrant ir.ui.view qweb New
s_quadrant_options s_quadrant_options ir.ui.view qweb Inherits website.snippet_options
s_quotes_carousel Quotes ir.ui.view qweb New
s_quotes_carousel_minimal Quotes Minimal ir.ui.view qweb New
s_rating Rating ir.ui.view qweb New
s_rating_options s_rating_options ir.ui.view qweb Inherits website.snippet_options
s_references References ir.ui.view qweb New
s_references_grid References Grid ir.ui.view qweb New
s_references_social References Social ir.ui.view qweb New
s_searchbar Search ir.ui.view qweb New
s_searchbar_input Search ir.ui.view qweb New
s_shape_image Shape image ir.ui.view qweb New
s_share Share ir.ui.view qweb New
s_showcase Showcase ir.ui.view qweb New
s_showcase_options s_showcase_options ir.ui.view qweb Inherits website.snippet_options
s_sidegrid Side Grid ir.ui.view qweb New
s_snippet_group Snippet Group ir.ui.view qweb New
s_social_media Social Media ir.ui.view qweb New
s_social_media_options s_social_media_options ir.ui.view qweb Inherits website.snippet_options
s_striped Striped section ir.ui.view qweb New
s_striped_center_top Striped Center Top ir.ui.view qweb New
s_striped_top Striped Top ir.ui.view qweb New
s_table_of_content Table of Content ir.ui.view qweb New
s_table_of_content_options s_table_of_content_options ir.ui.view qweb Inherits website.snippet_options
s_tabs Tabs ir.ui.view qweb New
s_tabs_options s_tabs_options ir.ui.view qweb Inherits website.snippet_options
s_text_block Text ir.ui.view qweb New
s_text_block_2nd s_text_block_2nd ir.ui.view qweb Inherits website.s_text_block
s_text_block_h1 s_text_block_h1 ir.ui.view qweb Inherits website.s_text_block
s_text_block_h2 s_text_block_h2 ir.ui.view qweb Inherits website.s_text_block
s_text_block_h2_contact s_text_block_h2_contact ir.ui.view qweb Inherits website.s_text_block_h2
s_text_cover Text Cover ir.ui.view qweb New
s_text_highlight Text Highlight ir.ui.view qweb New
s_text_image Text - Image ir.ui.view qweb New
s_three_columns Columns ir.ui.view qweb New
s_three_columns_2nd s_three_columns_2nd ir.ui.view qweb Inherits website.s_three_columns
s_three_columns_menu s_three_columns_menu ir.ui.view qweb Inherits website.s_three_columns
s_timeline Timeline ir.ui.view qweb New
s_timeline_list Timeline List ir.ui.view qweb New
s_timeline_list_options s_timeline_list_options ir.ui.view qweb Inherits website.snippet_options
s_timeline_options s_timeline_options ir.ui.view qweb Inherits website.snippet_options
s_title Title ir.ui.view qweb New
s_title_form Title - Form ir.ui.view qweb New
s_unveil Unveil ir.ui.view qweb New
s_video Video ir.ui.view qweb New
s_wavy_grid Wavy Grid ir.ui.view qweb New
s_website_controller_page_listing_layout Default layout ir.ui.view qweb Inherits website.snippet_options
s_website_form Form ir.ui.view qweb New
s_website_form_options s_website_form_options ir.ui.view qweb Inherits website.snippet_options
search_text_with_highlight Website Searchbox item highlight ir.ui.view qweb New
searchbar_input_snippet_options search bar snippet options ir.ui.view qweb Inherits website.snippet_options
shared_blocks Shared blocks ir.ui.view qweb Inherits website.layout
show_website_info Show Odoo Information ir.ui.view qweb Inherits website.website_info
sitemap_index_xml sitemap_index_xml ir.ui.view qweb New
sitemap_locs sitemap_locs ir.ui.view qweb New
sitemap_xml sitemap_xml ir.ui.view qweb New
snippet_options snippet_options ir.ui.view qweb Inherits web_editor.snippet_options
snippet_options_background_options snippet_options_background_options ir.ui.view qweb Inherits web_editor.snippet_options_background_options
snippet_options_border_line_widgets snippet_options_border_line_widgets ir.ui.view qweb New
snippet_options_border_widgets snippet_options_border_widgets ir.ui.view qweb New
snippet_options_carousel snippet_options_carousel ir.ui.view qweb New
snippet_options_carousel_intro snippet_options_carousel_intro ir.ui.view qweb Inherits website.snippet_options_carousel
snippet_options_conditional_visibility snippet_options_conditional_visibility ir.ui.view qweb New
snippet_options_header_box snippet_options_header_box ir.ui.view qweb New
snippet_options_shadow_widgets snippet_options_shadow_widgets ir.ui.view qweb New
snippets snippets ir.ui.view qweb Inherits web_editor.snippets
snippets_debug_view Snippet Debug t New
step_wizard Step Checkout ir.ui.view qweb New
submenu Submenu ir.ui.view qweb New
template_footer_call_to_action Call-to-Action ir.ui.view qweb Inherits website.layout
template_footer_centered Centered ir.ui.view qweb Inherits website.layout
template_footer_contact Contact ir.ui.view qweb Inherits website.layout
template_footer_descriptive Descriptive ir.ui.view qweb Inherits website.layout
template_footer_headline Headline ir.ui.view qweb Inherits website.layout
template_footer_links Links ir.ui.view qweb Inherits website.layout
template_footer_minimalist Minimalist ir.ui.view qweb Inherits website.layout
template_footer_slideout Template Footer Slideout ir.ui.view qweb Inherits website.layout
template_header_additional_color_primary template_header_additional_color_primary ir.ui.view qweb Inherits website.layout
template_header_additional_color_secondary template_header_additional_color_secondary ir.ui.view qweb Inherits website.layout
template_header_boxed Template Header Rounded Box ir.ui.view qweb Inherits website.layout
template_header_boxed_align_center template_header_boxed_align_center ir.ui.view qweb Inherits website.template_header_boxed
template_header_boxed_align_right template_header_boxed_align_right ir.ui.view qweb Inherits website.template_header_boxed
template_header_default Template Header Default ir.ui.view qweb Inherits website.layout
template_header_default_align_center template_header_default_align_center ir.ui.view qweb Inherits website.template_header_default
template_header_default_align_right template_header_default_align_right ir.ui.view qweb Inherits website.template_header_default
template_header_hamburger Template Header Hamburger ir.ui.view qweb Inherits website.layout
template_header_hamburger_align_right template_header_hamburger_align_right ir.ui.view qweb Inherits website.template_header_hamburger
template_header_hamburger_mobile_align_center template_header_hamburger_mobile_align_center ir.ui.view qweb Inherits website.template_header_hamburger
template_header_hamburger_mobile_align_right template_header_hamburger_mobile_align_right ir.ui.view qweb Inherits website.template_header_hamburger
template_header_mobile Template Header Mobile ir.ui.view qweb New
template_header_mobile_align_center template_header_mobile_align_center ir.ui.view qweb Inherits website.template_header_mobile
template_header_mobile_align_right template_header_mobile_align_right ir.ui.view qweb Inherits website.template_header_mobile
template_header_sales_four Template Header Sale 4 ir.ui.view qweb Inherits website.layout
template_header_sales_four_align_center template_header_sales_four_align_center ir.ui.view qweb Inherits website.template_header_sales_four
template_header_sales_four_align_right template_header_sales_four_align_right ir.ui.view qweb Inherits website.template_header_sales_four
template_header_sales_one Template Header Sale 1 ir.ui.view qweb Inherits website.layout
template_header_sales_one_align_center template_header_sales_one_align_center ir.ui.view qweb Inherits website.template_header_sales_one
template_header_sales_one_align_right template_header_sales_one_align_right ir.ui.view qweb Inherits website.template_header_sales_one
template_header_sales_three Template Header Sale 3 ir.ui.view qweb Inherits website.layout
template_header_sales_two Template Header Sale 2 ir.ui.view qweb Inherits website.layout
template_header_sales_two_align_center template_header_sales_two_align_center ir.ui.view qweb Inherits website.template_header_sales_two
template_header_sales_two_align_right template_header_sales_two_align_right ir.ui.view qweb Inherits website.template_header_sales_two
template_header_search Template Header Search ir.ui.view qweb Inherits website.layout
template_header_search_align_center template_header_search_align_center ir.ui.view qweb Inherits website.template_header_search
template_header_search_align_right template_header_search_align_right ir.ui.view qweb Inherits website.template_header_search
template_header_sidebar Template Header Sidebar ir.ui.view qweb Inherits website.layout
template_header_sidebar_align_center template_header_sidebar_align_center ir.ui.view qweb Inherits website.template_header_sidebar
template_header_sidebar_align_right template_header_sidebar_align_right ir.ui.view qweb Inherits website.template_header_sidebar
template_header_stretch Template Header Stretch ir.ui.view qweb Inherits website.layout
template_header_stretch_align_center template_header_stretch_align_center ir.ui.view qweb Inherits website.template_header_stretch
template_header_stretch_align_right template_header_stretch_align_right ir.ui.view qweb Inherits website.template_header_stretch
template_header_vertical Template Header Vertical ir.ui.view qweb Inherits website.layout
theme_view_form_preview website.form ir.module.module form New
theme_view_kanban Themes Kanban ir.module.module kanban New
theme_view_search Themes Search ir.module.module search New
user_dropdown user_dropdown ir.ui.view qweb Inherits portal.user_dropdown
vertical_alignment_option vertical_alignment_option ir.ui.view qweb New
view_arch_only website.ir_ui_view.arch_only ir.ui.view form New
view_attachment_form_inherit_website ir.attachment.form.inherit.website ir.attachment field Inherits base.view_attachment_form
view_attachment_tree_inherit_website ir.attachment.list.inherit.website ir.attachment field Inherits base.view_attachment_tree
view_base_language_install view_base_language_install.inherit base.language.install group Inherits base.view_base_language_install
view_edit_robots Edit Robots.txt website.robots form New
view_edit_third_party_domains Block 3rd-party service domains website.custom_blocked_third_party_domains form New
view_partner_form_inherit_website res.partner.form.website.inherit res.partner xpath Inherits base.view_partner_form
view_rewrite_search website.rewrite.search website.rewrite search New
view_server_action_form_website ir.actions.server.form.website ir.actions.server data Inherits base.view_server_action_form
view_server_action_search_website ir.actions.server.search.website ir.actions.server xpath Inherits base.view_server_action_search
view_server_action_tree_website ir.actions.server.list.website ir.actions.server xpath Inherits base.view_server_action_tree
view_view_form_extend ir.ui.view field Inherits base.view_view_form
view_view_tree_inherit_website ir.ui.view list Inherits base.view_view_tree
view_website_form website.form website form New
view_website_form_view_themes_modal website.modal.form website xpath Inherits website.view_website_form
view_website_rewrite_form website.rewrite form New
view_website_tree website.list website list New
website.aboutus About Us ir.ui.view qweb New
website.contactus Contact Us ir.ui.view qweb New
website.header_call_to_action Header Call to Action ir.ui.view qweb Inherits website.placeholder_header_call_to_action
website.header_call_to_action_large Header Call to Action - Large ir.ui.view qweb Inherits website.header_call_to_action
website.header_call_to_action_sidebar Header Call to Action - Sidebar ir.ui.view qweb Inherits website.header_call_to_action_large
website.header_call_to_action_stretched Header Call to Action - Stretched ir.ui.view qweb Inherits website.header_call_to_action
website.header_search_box Header Search Bar ir.ui.view qweb Inherits website.placeholder_header_search_box
website.header_social_links Header Social Links ir.ui.view qweb Inherits website.placeholder_header_social_links
website.header_text_element Header Text element ir.ui.view qweb Inherits website.placeholder_header_text_element
website.homepage Home ir.ui.view qweb New
website.neutralize_ribbon Neutralize Ribbon ir.ui.view qweb Inherits website.layout
website.our_services Services ir.ui.view qweb New
website.placeholder_header_call_to_action Placeholder Header Call to Action ir.ui.view qweb New
website.placeholder_header_search_box Placeholder Header Search Bar ir.ui.view qweb New
website.placeholder_header_social_links Placeholder Header Social Links ir.ui.view qweb New
website.placeholder_header_text_element Placeholder Header Text element ir.ui.view qweb New
website.s_dynamic_snippet_options_template website.s_dynamic_snippet_options_template ir.ui.view qweb New
website.s_dynamic_snippet_template website.s_dynamic_snippet_template ir.ui.view qweb New
website_controller_pages_form_view website.controller.page.form website.controller.page form New
website_controller_pages_kanban_view website.controller.page.kanban website.controller.page kanban New
website_controller_pages_search_view website.controller.page.search website.controller.page search New
website_controller_pages_tree_view website.controller.page.list website.controller.page list New
website_info Odoo Information ir.ui.view qweb New
website_menus_form_view website.menu.form website.menu form New
website_page_properties_base_view_form website.page.properties.base.form.view website.page.properties.base form New
website_page_properties_view_form website.page.properties.form.view website.page.properties xpath Inherits website_page_properties_base_view_form
website_pages_form_view website.page.form website.page form New
website_pages_kanban_view website.page.kanban website.page kanban New
website_pages_tree_view website.page.list website.page list New
website_pages_view_search website.page.view.search website.page search New
website_search_box Website Searchbox ir.ui.view qweb New
website_search_box_input website_search_box_input ir.ui.view qweb Inherits website.website_search_box
website_visitor_page_view_graph website.track.view.graph website.track graph New
website_visitor_page_view_search website.track.view.search website.track search New
website_visitor_page_view_tree website.track.view.list website.track list New
website_visitor_track_view_graph website.track.view.graph website.track graph New
website_visitor_track_view_tree website.track.view.list website.track list New
website_visitor_view_form website.visitor.view.form website.visitor form New
website_visitor_view_graph website.visitor.view.graph website.visitor graph New
website_visitor_view_kanban website.visitor.view.kanban website.visitor kanban New
website_visitor_view_search website.visitor.view.search website.visitor search New
website_visitor_view_tree website.visitor.view.list website.visitor list New
Models touched (56)

New fields (0)

No new fields.

Public methods (2)
  • get_base_url(self)
    Returns the base url for a given record, given the following priority: 1. If the record has a `website_id` field, we use the url from this website as base url, if set. 2. If the record has a `company_id` field, we use the website from that company (if set). Note that a company doesn't really have a website, it is retrieve through some heuristic in its `website_id`'s compute. 3. Use the ICP `web.base.url` (super) :return: the base url for this record :rtype: string
  • get_website_meta(self)

New fields (1)
  • website_ids Many2many → website
    string='Websites to translate' args: 'website'
Public methods (2)
  • default_get(self, fields)
    @api.model
  • lang_install(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (4)
  • website_path Char
    args: 'Website Path'
  • website_published Boolean
    copy=False help='A code server action can be executed from the website, using a dedicated controller. The address is <base>/website/action/<website_path>. Set this field as True to allow users to run this action. If it is set to False the action cannot be run through the website.' args: 'Available on the Website'
  • website_url Char
    compute='_get_website_url' help='The full URL to access the server action through the website.' args: 'Website Url'
  • xml_id Char
    compute='_compute_xml_id' help='ID of the action if defined in a XML file' args: 'External ID'
Public methods (0)

No public methods.

New fields (2)
  • key Char
    copy=False
  • website_id Many2one → website
    ondelete='cascade' args: 'website'
Public methods (2)
  • filter_duplicate(self, website_id=None)
    Filter current recordset only keeping the most suitable asset per distinct name. Every non-accessible asset will be removed from the set: * In non website context, every asset with a website will be removed * In a website context, every asset from another website
  • write(self, vals)
    COW for ir.asset. This way editing websites does not impact other websites. Also this way newly created websites will only contain the default assets.

New fields (1)
  • theme_template_id Many2one → theme.ir.asset
    copy=False args: 'theme.ir.asset'
Public methods (0)

No public methods.

New fields (2)
  • key Char
  • website_id Many2one → website
    args: 'website'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • get_serving_groups(self)
    @api.model

New fields (2)
  • key Char
    copy=False
  • theme_template_id Many2one → theme.ir.attachment
    copy=False args: 'theme.ir.attachment'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • get_frontend_session_info(self)
    @api.model
  • get_nearest_lang(self, lang_code)
    @api.model
  • routing_map(self, key=None)

New fields (4)
  • website_form_access Boolean
    help='Enable the form builder feature for this model.' args: 'Allowed to use in forms'
  • website_form_default_field_id Many2one → ir.model.fields
    domain="[('model', '=', model), ('ttype', '=', 'text')]" help='Specify the field which will contain meta and custom form fields datas.' args: 'ir.model.fields', 'Field for custom form data'
  • website_form_key Char
    help='Used in FormBuilder Registry'
  • website_form_label Char
    help="Form action label. Ex: crm.lead could be 'Send an e-mail' and project.issue could be 'Create an Issue'." args: 'Label for form action'
Public methods (2)
  • get_authorized_fields(self, model_name, property_origins)
    @api.model
    Return the fields of the given model name as a mapping like method `fields_get`.
  • get_compatible_form_models(self)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • website_form_blacklisted Boolean
    default=True help='Blacklist this field for web forms' index=True args: 'Blacklisted in web forms'
Public methods (2)
  • formbuilder_whitelist(self, model, fields)
    @api.model
    :param str model: name of the model on which to whitelist fields :param list(str) fields: list of fields to whitelist on the model :return: nothing of import
  • init(self)

New fields (2)
  • image_ids One2many → ir.attachment
    domain=[('res_model', '=', _name), ('mimetype', '=like', 'image/%')] readonly=True string='Screenshots' args: 'ir.attachment', 'res_id'
  • is_installed_on_current_website Boolean
    compute='_compute_is_installed_on_current_website'
Public methods (7)
  • button_choose_theme(self)
    Remove any existing theme on the current website and install the theme ``self`` instead. The actual loading of the theme on the current website will be done automatically on ``write`` thanks to the upgrade and/or install. When installating a new theme, upgrade the upstream chain first to make sure we have the latest version of the dependencies to prevent inconsistencies. :return: dict with the next action to execute
  • button_refresh_theme(self)
    Refresh the current theme of the current website. To refresh it, we only need to upgrade the modules. Indeed the (re)loading of the theme will be done automatically on ``write``.
  • button_remove_theme(self)
    Remove the current theme of the current website.
  • get_themes_domain(self)
    Returns the 'ir.module.module' search domain matching all available themes.
  • update_list(self)
    @api.model
  • update_theme_images(self)
    @api.model
  • write(self, vals)
    Override to correctly upgrade themes after upgrade/installation of modules. # Install If this theme wasn't installed before, then load it for every website for which it is in the stream. eg. The very first installation of a theme on a website will trigger this. eg. If a website uses theme_A and we install sale, then theme_A_sale will be autoinstalled, and in this case we need to load theme_A_sale for the website. # Upgrade There are 2 cases to handle when upgrading a theme: * When clicking on the theme upgrade button on the interface, in which case there will be an http request made. -> We want to upgrade the current website only, not any other. * When upgrading with -u, in which case no request should be set. -> We want to upgrade every website using this theme.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • get_available_options(self)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • value_to_html(self, value, 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_menus_root(self)
    @api.model@tools.ormcache_context('self._uid', keys=('lang', 'force_action'))

New fields (8)
  • controller_page_ids One2many → website.controller.page
    args: 'website.controller.page', 'view_id'
  • first_page_id Many2one → website.page
    compute='_compute_first_page_id' help='First page linked to this view' string='Website Page' args: 'website.page'
  • page_ids One2many → website.page
    args: 'website.page', 'view_id'
  • track Boolean
    default=False help='Allow to specify for one page of the website to be trackable or not' string='Track'
  • visibility Selection
    default='' args: [('', 'Public'), ('connected', 'Signed In'), ('restricted_group', 'Restricted Group'), ('password', 'With Password')]
  • visibility_password Char
    copy=False groups='base.group_system'
  • visibility_password_display Char
    compute='_get_pwd' groups='website.group_website_designer' inverse='_set_pwd'
  • website_id Many2one → website
    ondelete='cascade' string='Website' args: 'website'
Public methods (8)
  • create(self, vals_list)
    @api.model_create_multi
    SOC for ir.ui.view creation. If a view is created without a website_id, it should get one if one is present in the context. Also check that an explicit website_id in create values matches the one in the context.
  • filter_duplicate(self)
    Filter current recordset only keeping the most suitable view per distinct key. Every non-accessible view will be removed from the set: * In non website context, every view with a website will be removed * In a website context, every view from another website
  • get_default_lang_code(self)
    @api.model
  • get_related_views(self, key, bundles=False)
    @api.model
    Make this only return most specific views for website.
  • get_view_hierarchy(self)
  • save(self, value, xpath=None)
  • unlink(self)
    This implements COU (copy-on-unlink). When deleting a generic page website-specific pages will be created so only the current website is affected.
  • write(self, vals)
    COW for ir.ui.view. This way editing websites does not impact other websites. Also this way newly created websites will only contain the default views.

New fields (1)
  • theme_template_id Many2one → theme.ir.ui.view
    copy=False args: 'theme.ir.ui.view'
Public methods (1)
  • write(self, vals)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • website_id Many2one → website
    compute='_compute_website_id' store=True args: 'website'
Public methods (3)
  • action_open_website_theme_selector(self)
    @api.model
  • google_map_img(self, zoom=8, width=298, height=298)
  • google_map_link(self, zoom=8)

New fields (30)
  • auth_signup_uninvited Selection
    compute='_compute_auth_signup_uninvited' config_parameter=False default=None inverse='_inverse_auth_signup_uninvited'
  • cdn_activated Boolean
    readonly=False related='website_id.cdn_activated'
  • cdn_filters Text
    readonly=False related='website_id.cdn_filters'
  • cdn_url Char
    readonly=False related='website_id.cdn_url'
  • favicon Binary
    readonly=False related='website_id.favicon' args: 'Favicon'
  • google_analytics_key Char
    readonly=False related='website_id.google_analytics_key' args: 'Google Analytics Key'
  • google_search_console Char
    readonly=False related='website_id.google_search_console' args: 'Google Search Console Key'
  • group_multi_website Boolean
    implied_group='website.group_multi_website' args: 'Multi-website'
  • has_default_share_image Boolean
    compute='_compute_has_default_share_image' inverse='_inverse_has_default_share_image' args: 'Use a image by default for sharing'
  • has_google_analytics Boolean
    compute='_compute_has_google_analytics' inverse='_inverse_has_google_analytics' args: 'Google Analytics'
  • has_google_search_console Boolean
    compute='_compute_has_google_search_console' inverse='_inverse_has_google_search_console' args: 'Google Search Console'
  • has_plausible_shared_key Boolean
    compute='_compute_has_plausible_shared_key' inverse='_inverse_has_plausible_shared_key' args: 'Plausible Analytics'
  • language_ids Many2many
    readonly=False related='website_id.language_ids'
  • module_marketing_automation Boolean
  • module_website_livechat Boolean
  • plausible_shared_key Char
    readonly=False related='website_id.plausible_shared_key' args: 'Plausible auth Key'
  • plausible_site Char
    readonly=False related='website_id.plausible_site' args: 'Plausible Site (e.g. domain.com)'
  • shared_user_account Boolean
    compute='_compute_shared_user_account' inverse='_inverse_shared_user_account' string='Shared Customer Accounts'
  • social_default_image Binary
    readonly=False related='website_id.social_default_image' args: 'Default Social Share Image'
  • website_block_third_party_domains Boolean
    readonly=False related='website_id.block_third_party_domains' args: 'Block 3rd-party domains'
  • website_company_id Many2one
    readonly=False related='website_id.company_id' string='Website Company'
  • website_cookies_bar Boolean
    readonly=False related='website_id.cookies_bar'
  • website_default_lang_code Char
    readonly=False related='website_id.default_lang_id.code' args: 'Default language code'
  • website_default_lang_id Many2one
    readonly=False related='website_id.default_lang_id' string='Default language'
  • website_domain Char
    readonly=False related='website_id.domain' args: 'Website Domain'
  • website_homepage_url Char
    readonly=False related='website_id.homepage_url'
  • website_id Many2one → website
    default=_default_website ondelete='cascade' string='website' args: 'website'
  • website_language_count Integer
    readonly=True related='website_id.language_count' string='Number of languages'
  • website_logo Binary
    readonly=False related='website_id.logo'
  • website_name Char
    readonly=False related='website_id.name' args: 'Website Name'
Public methods (3)
  • action_open_blocked_third_party_domains(self)
  • action_open_robots(self)
  • action_website_create_new(self)

New fields (0)

No new fields.

Public methods (2)
  • action_activate_langs(self)
    Open wizard to install language(s), so user can select the website(s) to translate in that language.
  • write(self, vals)

New fields (1)
  • visitor_ids One2many → website.visitor
    string='Visitors' args: 'website.visitor', 'partner_id'
Public methods (2)
  • google_map_img(self, zoom=8, width=298, height=298)
  • google_map_link(self, zoom=10)

New fields (1)
  • website_id Many2one → website
    readonly=False related='partner_id.website_id' related_sudo=False store=True args: 'website'
Public methods (2)
  • authenticate(cls, db, credential, user_agent_env)
    @classmethod
    Override to link the logged in user's res.partner to website.visitor. If a visitor already exists for that user, assign it data from the current anonymous visitor (if exists). Purpose is to try to aggregate as much sub-records (tracked pages, leads, ...) as possible.
  • website_publish_button(self)

New fields (9)
  • active Boolean
    default=True
  • bundle Char
    required=True
  • copy_ids One2many → ir.asset
    copy=False readonly=True args: 'ir.asset', 'theme_template_id', 'Assets using a copy of me'
  • directive Selection
    default=APPEND_DIRECTIVE selection=[(APPEND_DIRECTIVE, 'Append'), (PREPEND_DIRECTIVE, 'Prepend'), (AFTER_DIRECTIVE, 'After'), (BEFORE_DIRECTIVE, 'Before'), (REMOVE_DIRECTIVE, 'Remove'), (REPLACE_DIRECTIVE, 'Replace'), (INCLUDE_DIRECTIVE, 'Include')]
  • key Char
  • name Char
    required=True
  • path Char
    required=True
  • sequence Integer
    default=DEFAULT_SEQUENCE required=True
  • target Char
Public methods (0)

No public methods.

New fields (4)
  • copy_ids One2many → ir.attachment
    copy=False readonly=True args: 'ir.attachment', 'theme_template_id', 'Attachment using a copy of me'
  • key Char
    required=True
  • name Char
    required=True
  • url Char
Public methods (0)

No public methods.

New fields (11)
  • active Boolean
    default=True
  • arch Text
    translate=xml_translate
  • arch_fs Char
    default=compute_arch_fs
  • copy_ids One2many → ir.ui.view
    copy=False readonly=True args: 'ir.ui.view', 'theme_template_id', 'Views using a copy of me'
  • customize_show Boolean
  • inherit_id Reference
    selection=[('ir.ui.view', 'ir.ui.view'), ('theme.ir.ui.view', 'theme.ir.ui.view')]
  • key Char
  • mode Selection
    args: [('primary', 'Base view'), ('extension', 'Extension View')]
  • name Char
    required=True
  • priority Integer
    default=DEFAULT_SEQUENCE required=True
  • type Char
Public methods (1)
  • compute_arch_fs(self)

New fields (0)

No new fields.

Public methods (4)
  • disable_asset(self, name)
    @api.model
  • disable_view(self, xml_id)
    @api.model
  • enable_asset(self, name)
    @api.model
  • enable_view(self, xml_id)
    @api.model

New fields (10)
  • copy_ids One2many → website.menu
    copy=False readonly=True args: 'website.menu', 'theme_template_id', 'Menu using a copy of me'
  • mega_menu_classes Char
  • mega_menu_content Html
  • name Char
    required=True translate=True
  • new_window Boolean
    args: 'New Window'
  • page_id Many2one → theme.website.page
    ondelete='cascade' args: 'theme.website.page'
  • parent_id Many2one → theme.website.menu
    index=True ondelete='cascade' args: 'theme.website.menu'
  • sequence Integer
  • url Char
    default=''
  • use_main_menu_as_parent Boolean
    default=True
Public methods (0)

No public methods.

New fields (10)
  • copy_ids One2many → website.page
    copy=False readonly=True args: 'website.page', 'theme_template_id', 'Page using a copy of me'
  • footer_visible Boolean
    default=True
  • header_color Char
  • header_overlay Boolean
  • header_visible Boolean
    default=True
  • is_new_page_template Boolean
    string='New Page Template'
  • is_published Boolean
  • url Char
  • view_id Many2one → theme.ir.ui.view
    ondelete='cascade' required=True args: 'theme.ir.ui.view'
  • website_indexed Boolean
    default=True args: 'Page Indexed'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • make_scss_customization(self, url, values)
    @api.model
    Makes a scss customization of the given file. That file must contain a scss map including a line comment containing the word 'hook', to indicate the location where to write the new key,value pairs. Params: url (str): the URL of the scss file to customize (supposed to be a variable file which will appear in the assets_frontend bundle) values (dict): key,value mapping to integrate in the file's map (containing the word hook). If a key is already in the file's map, its value is overridden.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (43)
  • auth_signup_uninvited Selection
    default='b2b' string='Customer Account' args: [('b2b', 'On invitation'), ('b2c', 'Free sign up')]
  • auto_redirect_lang Boolean
    default=True help="Should users be redirected to their browser's language" args: 'Autoredirect Language'
  • block_third_party_domains Boolean
    default=True help='Block 3rd-party domains that may track users (YouTube, Google Maps, etc.).' args: 'Block 3rd-party domains'
  • blocked_third_party_domains Text
    compute='_compute_blocked_third_party_domains' args: 'List of blocked 3rd-party domains'
  • cdn_activated Boolean
    args: 'Content Delivery Network (CDN)'
  • cdn_filters Text
    default=<expr> help='URL matching those filters will be rewritten using the CDN Base URL' args: 'CDN Filters'
  • cdn_url Char
    default='' args: 'CDN Base URL'
  • company_id Many2one → res.company
    default=<expr> required=True string='Company' args: 'res.company'
  • configurator_done Boolean
    help='True if configurator has been completed or ignored'
  • cookies_bar Boolean
    help='Display a customizable cookies bar on your website.' args: 'Cookies Bar'
  • custom_blocked_third_party_domains Text
    groups='website.group_website_designer' translate=False args: 'User list of blocked 3rd-party domains'
  • custom_code_footer Html
    sanitize=False args: 'Custom end of <body> code'
  • custom_code_head Html
    sanitize=False args: 'Custom <head> code'
  • default_lang_id Many2one → res.lang
    default=_default_language required=True string='Default Language' args: 'res.lang'
  • domain Char
    help='E.g. https://www.mydomain.com' args: 'Website Domain'
  • domain_punycode Char
    compute='_compute_domain_punycode' readonly=True store=False string='Punycode Domain'
  • favicon Binary
    default=_default_favicon help='This field holds the image used to display a favicon on the website.' string='Website Favicon'
  • google_analytics_key Char
    args: 'Google Analytics Key'
  • google_maps_api_key Char
    args: 'Google Maps API Key'
  • google_search_console Char
    help='Google key, or Enable to access first reply'
  • has_social_default_image Boolean
    compute='_compute_has_social_default_image' store=True
  • homepage_url Char
    help='E.g. /contactus or /shop'
  • language_count Integer
    compute='_compute_language_count' args: 'Number of languages'
  • language_ids Many2many → res.lang
    default=_active_languages required=True string='Languages' args: 'res.lang', 'website_lang_rel', 'website_id', 'lang_id'
  • logo Binary
    default=_default_logo help='Display this logo on the website.' args: 'Website Logo'
  • menu_id Many2one → website.menu
    compute='_compute_menu' string='Main Menu' args: 'website.menu'
  • name Char
    required=True args: 'Website Name'
  • partner_id Many2one
    readonly=False related='user_id.partner_id' string='Public Partner'
  • plausible_shared_key Char
  • plausible_site Char
  • robots_txt Html
    groups='website.group_website_designer' sanitize=False translate=False args: 'Robots.txt'
  • sequence Integer
    default=10
  • social_default_image Binary
    help='If set, replaces the website logo as the default social share image.' string='Default Social Share Image'
  • social_facebook Char
    default=_default_social_facebook args: 'Facebook Account'
  • social_github Char
    default=_default_social_github args: 'GitHub Account'
  • social_instagram Char
    default=_default_social_instagram args: 'Instagram Account'
  • social_linkedin Char
    default=_default_social_linkedin args: 'LinkedIn Account'
  • social_tiktok Char
    default=_default_social_tiktok args: 'TikTok Account'
  • social_twitter Char
    default=_default_social_twitter args: 'X Account'
  • social_youtube Char
    default=_default_social_youtube args: 'Youtube Account'
  • specific_user_account Boolean
    help='If True, new accounts will be associated to the current website' args: 'Specific User Account'
  • theme_id Many2one → ir.module.module
    help='Installed theme' args: 'ir.module.module'
  • user_id Many2one → res.users
    required=True string='Public User' args: 'res.users'
Public methods (36)
  • action_dashboard_redirect(self)
    @api.model
  • button_go_website(self, path='/')
  • configurator_apply(self, **kwargs)
    @api.model
  • configurator_get_footer_links(self)
  • configurator_init(self)
    @api.model
  • configurator_missing_industry(self, unknown_industry)
    @api.model
  • configurator_recommended_themes(self, industry_id, palette, result_nbr_max=3)
    @api.model
  • configurator_set_menu_links(self, menu_company, module_data)
  • configurator_skip(self)
    @api.model
  • copy_menu_hierarchy(self, top_menu)
  • create(self, vals_list)
    @api.model_create_multi
  • create_and_redirect_configurator(self)
  • get_cdn_url(self, uri)
  • get_client_action(self, url, mode_edit=False, website_id=False)
  • get_client_action_url(self, url, mode_edit=False, mode_debug=0)
  • get_cta_data(self, website_purpose, website_type)
  • get_current_website(self, fallback=True)
    @api.model
    The current website is returned in the following order: - the website forced in session `force_website_id` - the website set in context - (if frontend or fallback) the website matching the request's "domain" - arbitrary the first website found in the database if `fallback` is set to `True` - empty browse record
  • get_suggested_controllers(self)
    Returns a tuple (name, url, icon). Where icon can be a module name, or a path
  • get_template(self, template)
    @api.model
  • get_theme_configurator_snippets(self, theme_name)
    @api.model
  • get_unique_key(self, string, template_module=False)
    Given a string, return an unique key including module prefix. It will be suffixed by a counter if it already exists to garantee uniqueness. :param string : the key to be checked for uniqueness, you can pass it with 'website.' or not :param template_module : the module to be prefixed on the key, if not set, we will use website
  • get_unique_path(self, page_url)
    Given an url, return that url suffixed by counter if it already exists :param page_url : the url to be checked for uniqueness
  • get_website_page_ids(self)
  • image_url(self, record, field, size=None)
    @api.model
    Returns a local url that points to the image field of a given browse record.
  • is_menu_cache_disabled(self)
    @tools.ormcache('self.env.uid', 'self.id', cache='templates')
    Checks if the website menu contains a record like url. :return: True if the menu contains a record like url
  • is_public_user(self)
    @api.model
  • is_view_active(self, key)
    @api.model@tools.ormcache('key', 'self._context.get("website_id")', cache='templates')
    Return True if active, False if not active, None if not found
  • new_page(self, name=False, add_menu=False, template='website.default_page', ispage=True, namespace=None, page_values=None, menu_values=None, sections_arch=None)
    @api.model
    Create a new website page, and assign it a xmlid based on the given one :param name: the name of the page :param add_menu: if True, add a menu for that page :param template: potential xml_id of the page to create :param namespace: module part of the xml_id if none, the template module name is used :param page_values: default values for the page to be created :param menu_values: default values for the menu to be created :param sections_arch: HTML content of sections
  • pager(self, url, total, page=1, step=30, scope=5, url_args=None)
    @api.model
  • rule_is_enumerable(self, rule)
    Checks that it is possible to generate sensible GET queries for a given rule (if the endpoint matches its own requirements) :type rule: werkzeug.routing.Rule :rtype: bool
  • search_pages(self, needle=None, limit=None)
  • search_url_dependencies(self, res_model, res_ids)
    @api.model
    Search dependencies just for information. It will not catch 100% of dependencies and False positive is more than possible Each module could add dependences in this dict :returns a dictionnary where key is the 'categorie' of object related to the given view, and the value is the list of text and link to the resource using given page
  • unlink(self)
  • viewref(self, view_id, raise_if_not_found=True)
    @api.model
    Given an xml_id or a view_id, return the corresponding view record. In case of website context, return the most specific one. If no website_id is in the context, it will return the generic view, instead of a random one like `_get_view_id`. Look also for archived views, no matter the context. :param view_id: either a string xml_id or an integer view_id :param raise_if_not_found: should the method raise an error if no view found :return: The view record or empty recordset
  • website_domain(self, website_id=False)
    @api.model
  • write(self, values)

New fields (11)
  • description Char
    translate=True
  • feature_url Char
  • iap_page_code Char
    help='Page code used to tell IAP website_service for which page a snippet list should be generated'
  • icon Char
  • menu_company Boolean
    help='If set, add the menu as a second level menu, as a child of "Company" menu.'
  • menu_sequence Integer
    help='If set, a website menu will be created for the feature.'
  • module_id Many2one → ir.module.module
    ondelete='cascade' args: 'ir.module.module'
  • name Char
    translate=True
  • page_view_id Many2one → ir.ui.view
    ondelete='cascade' args: 'ir.ui.view'
  • sequence Integer
  • website_config_preselection Char
    help='Comma-separated list of website type/purpose for which this feature should be pre-selected'
Public methods (0)

No public methods.

New fields (9)
  • default_layout Selection
    default='grid' selection=[('grid', 'Grid'), ('list', 'List')]
  • menu_ids One2many → website.menu
    args: 'website.menu', 'controller_page_id', 'Related Menus'
  • name Char
    compute='_compute_name' inverse='_inverse_name' required=True store=True string='The name is used to generate the URL and is shown in the browser title bar'
  • name_slugified Char
    compute='_compute_name_slugified' help='The name of the page usable in a URL' inverse='_inverse_name_slugified' store=True string='URL'
  • record_domain Char
    help='Domain to restrict records that can be viewed publicly' string='Domain'
  • record_view_id Many2one → ir.ui.view
    ondelete='cascade' string='Record view' args: 'ir.ui.view'
  • url_demo Char
    compute='_compute_url_demo' string='Demo URL'
  • view_id Many2one → ir.ui.view
    ondelete='cascade' required=True string='Listing view' args: 'ir.ui.view'
  • website_id Many2one
    ondelete='cascade' readonly=False related='view_id.website_id' store=True
Public methods (3)
  • open_website_url(self)
  • unlink(self)
  • write(self, vals)

New fields (1)
  • cover_properties Text
    default=<expr> args: 'Cover Properties'
Public methods (1)
  • write(self, vals)

New fields (1)
  • content Text
    default=<expr>
Public methods (1)
  • action_save(self)

New fields (15)
  • child_id One2many → website.menu
    string='Child Menus' args: 'website.menu', 'parent_id'
  • controller_page_id Many2one → website.controller.page
    ondelete='cascade' args: 'website.controller.page', 'Related Model Page'
  • group_ids Many2many → res.groups
    help='User needs to be at least in one of these groups to see the menu' string='Visible Groups' args: 'res.groups'
  • is_mega_menu Boolean
    compute=_compute_field_is_mega_menu inverse=_set_field_is_mega_menu
  • is_visible Boolean
    compute='_compute_visible' string='Is Visible'
  • mega_menu_classes Char
  • mega_menu_content Html
    prefetch=True sanitize=False translate=html_translate
  • name Char
    required=True translate=True args: 'Menu'
  • new_window Boolean
    args: 'New Window'
  • page_id Many2one → website.page
    ondelete='cascade' args: 'website.page', 'Related Page'
  • parent_id Many2one → website.menu
    index=True ondelete='cascade' args: 'website.menu', 'Parent Menu'
  • parent_path Char
    index=True
  • sequence Integer
    default=_default_sequence
  • url Char
    default='' args: 'Url'
  • website_id Many2one → website
    ondelete='cascade' args: 'website', 'Website'
Public methods (5)
  • create(self, vals_list)
    @api.model_create_multi
    In case a menu without a website_id is trying to be created, we duplicate it for every website. Note: Particularly useful when installing a module that adds a menu like /shop. So every website has the shop menu. Be careful to return correct record for ir.model.data xml_id in case of default main menus creation.
  • get_tree(self, website_id, menu_id=None)
    @api.model
  • save(self, website_id, data)
    @api.model
  • unlink(self)
  • write(self, values)

New fields (1)
  • theme_template_id Many2one → theme.website.menu
    copy=False args: 'theme.website.menu'
Public methods (0)

No public methods.

New fields (1)
  • website_id Many2one → website
    help='Restrict to a specific website.' index=True ondelete='restrict' string='Website' args: 'website'
Public methods (1)
  • can_access_from_current_website(self, website_id=False)

New fields (16)
  • arch Text
    depends_context=('website_id') readonly=False related='view_id.arch'
  • date_publish Datetime
    args: 'Publishing Date'
  • footer_visible Boolean
    default=True
  • header_color Char
  • header_overlay Boolean
  • header_text_color Char
  • header_visible Boolean
    default=True
  • is_homepage Boolean
    compute='_compute_is_homepage' string='Homepage'
  • is_in_menu Boolean
    compute='_compute_website_menu'
  • is_new_page_template Boolean
    help='Add this page to the "+New" page templates. It will be added to the "Custom" category.' string='New Page Template'
  • is_visible Boolean
    compute='_compute_visible' string='Is Visible'
  • menu_ids One2many → website.menu
    args: 'website.menu', 'page_id', 'Related Menus'
  • url Char
    required=True args: 'Page URL'
  • view_id Many2one → ir.ui.view
    ondelete='cascade' required=True string='View' args: 'ir.ui.view'
  • website_id Many2one
    ondelete='cascade' readonly=False related='view_id.website_id' store=True
  • website_indexed Boolean
    default=True args: 'Is Indexed'
Public methods (6)
  • action_page_debug_view(self)
  • clone_page(self, page_id, page_name=None, clone_menu=True)
    @api.model
    Clone a page, given its identifier :param page_id : website.page identifier
  • copy_data(self, default=None)
  • get_website_meta(self)
  • unlink(self)
  • write(self, vals)

New fields (1)
  • theme_template_id Many2one → theme.website.page
    copy=False args: 'theme.website.page'
Public methods (0)

No public methods.

New fields (12)
  • date_publish Datetime
    readonly=False related='target_model_id.date_publish'
  • groups_id Many2many
    readonly=False related='target_model_id.groups_id'
  • is_new_page_template Boolean
    readonly=False related='target_model_id.is_new_page_template'
  • name Char
    readonly=False related='target_model_id.name'
  • old_url Char
  • redirect_old_url Boolean
    default=False store=False
  • redirect_type Selection
    default='301' required=True store=False args: [('301', '301 Moved permanently'), ('302', '302 Moved temporarily')]
  • target_model_id Many2one → website.page
    args: 'website.page'
  • url Char
    readonly=False related='target_model_id.url'
  • visibility Selection
    readonly=False related='target_model_id.visibility'
  • visibility_password_display Char
    readonly=False related='target_model_id.visibility_password_display'
  • website_indexed Boolean
    readonly=False related='target_model_id.website_indexed'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (8)
  • can_publish Boolean
    compute='_compute_can_publish'
  • is_homepage Boolean
    compute='_compute_is_homepage' inverse='_inverse_is_homepage' string='Homepage'
  • is_in_menu Boolean
    compute='_compute_is_in_menu' inverse='_inverse_is_in_menu'
  • is_published Boolean
    compute='_compute_is_published' inverse='_inverse_is_published'
  • menu_ids One2many → website.menu
    compute='_compute_menu_ids' args: 'website.menu'
  • target_model_id Reference
    required=True selection='_selection_target_model_id'
  • url Char
    required=True
  • website_id Many2one → website
    required=True args: 'website'
Public methods (0)

No public methods.

New fields (4)
  • can_publish Boolean
    compute='_compute_can_publish' args: 'Can Publish'
  • is_published Boolean
    copy=False default=<expr> index=True args: 'Is Published'
  • website_published Boolean
    readonly=False related='is_published' args: 'Visible on current website'
  • website_url Char
    compute='_compute_website_url' help='The full URL to access the document through the website.' args: 'Website URL'
Public methods (5)
  • create(self, vals_list)
    @api.model_create_multi
  • create_and_get_website_url(self, **kwargs)
  • open_website_url(self)
  • website_publish_button(self)
  • write(self, values)

New fields (8)
  • active Boolean
    default=True
  • name Char
    required=True args: 'Name'
  • redirect_type Selection
    default='302' help="Type of redirect/Rewrite:\n\n 301 Moved permanently: The browser will keep in cache the new url.\n 302 Moved temporarily: The browser will not keep in cache the new url and ask again the next time the new url.\n 404 Not Found: If you want remove a specific page/controller (e.g. Ecommerce is installed, but you don't want /shop on a specific website)\n 308 Redirect / Rewrite: If you want rename a controller with a new url. (Eg: /shop -> /garden - Both url will be accessible but /shop will automatically be redirected to /garden)\n " string='Action' args: [('404', '404 Not Found'), ('301', '301 Moved permanently'), ('302', '302 Moved temporarily'), ('308', '308 Redirect / Rewrite')]
  • route_id Many2one → website.route
    args: 'website.route'
  • sequence Integer
  • url_from Char
    index=True args: 'URL from'
  • url_to Char
    args: 'URL to'
  • website_id Many2one → website
    index=True ondelete='cascade' string='Website' args: 'website'
Public methods (4)
  • create(self, vals_list)
    @api.model_create_multi
  • refresh_routes(self)
  • unlink(self)
  • write(self, vals)

New fields (1)
  • content Text
    default=<expr>
Public methods (1)
  • action_save(self)

New fields (1)
  • path Char
    args: 'Route'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (6)
  • is_seo_optimized Boolean
    compute='_compute_is_seo_optimized' args: 'SEO optimized'
  • seo_name Char
    prefetch=True translate=True args: 'Seo name'
  • website_meta_description Text
    prefetch='website_meta' translate=True args: 'Website meta description'
  • website_meta_keywords Char
    prefetch='website_meta' translate=True args: 'Website meta keywords'
  • website_meta_og_img Char
    args: 'Website opengraph image'
  • website_meta_title Char
    prefetch='website_meta' translate=True args: 'Website meta title'
Public methods (1)
  • get_website_meta(self)
    This method will return final meta information. It will replace default values with user's custom value (if user modified it from the seo popup of frontend) This method is not meant for overridden. To customize meta values override `_default_website_meta` method instead of this method. This method only replaces user custom values in defaults.

New fields (7)
  • action_server_id Many2one → ir.actions.server
    ondelete='cascade' args: 'ir.actions.server', 'Server Action'
  • field_names Char
    help='A list of comma-separated field names' required=True
  • filter_id Many2one → ir.filters
    ondelete='cascade' args: 'ir.filters', 'Filter'
  • limit Integer
    help='The limit is the maximum number of records retrieved' required=True
  • model_name Char
    compute='_compute_model_name' string='Model name'
  • name Char
    required=True translate=True
  • website_id Many2one → website
    ondelete='cascade' string='Website' args: 'website'
Public methods (0)

No public methods.

New fields (4)
  • page_id Many2one → website.page
    index=True ondelete='cascade' readonly=True args: 'website.page'
  • url Text
    index=True args: 'Url'
  • visit_datetime Datetime
    default=fields.Datetime.now readonly=True required=True args: 'Visit Date'
  • visitor_id Many2one → website.visitor
    index=True ondelete='cascade' readonly=True required=True args: 'website.visitor'
Public methods (0)

No public methods.

New fields (21)
  • access_token Char
    copy=False default=_get_access_token required=True
  • country_flag Char
    related='country_id.image_url' string='Country Flag'
  • country_id Many2one → res.country
    readonly=True args: 'res.country', 'Country'
  • create_date Datetime
    readonly=True args: 'First Connection'
  • email Char
    compute='_compute_email_phone' compute_sudo=True string='Email'
  • is_connected Boolean
    compute='_compute_time_statistics' help='A visitor is considered as connected if his last page view was within the last 5 minutes.' args: 'Is connected?'
  • lang_id Many2one → res.lang
    help='Language from the website when visitor has been created' string='Language' args: 'res.lang'
  • last_connection_datetime Datetime
    default=fields.Datetime.now help='Last page view date' readonly=True args: 'Last Connection'
  • last_visited_page_id Many2one → website.page
    compute='_compute_last_visited_page_id' string='Last Visited Page' args: 'website.page'
  • mobile Char
    compute='_compute_email_phone' compute_sudo=True string='Mobile'
  • name Char
    related='partner_id.name' args: 'Name'
  • page_count Integer
    compute='_compute_page_statistics' help='Total number of tracked page visited' args: '# Visited Pages'
  • page_ids Many2many → website.page
    compute='_compute_page_statistics' groups='website.group_website_designer' search='_search_page_ids' string='Visited Pages' args: 'website.page'
  • partner_id Many2one → res.partner
    compute='_compute_partner_id' help='Partner of the last logged in user.' index='btree_not_null' store=True string='Contact' args: 'res.partner'
  • partner_image Binary
    related='partner_id.image_1920'
  • time_since_last_action Char
    compute='_compute_time_statistics' help='Time since last page view. E.g.: 2 minutes ago' args: 'Last action'
  • timezone Selection
    string='Timezone' args: _tz_get
  • visit_count Integer
    default=1 help='A new visit is considered if last connection was more than 8 hours ago.' readonly=True args: '# Visits'
  • visitor_page_count Integer
    compute='_compute_page_statistics' help='Total number of visits on tracked pages' args: 'Page Views'
  • website_id Many2one → website
    readonly=True args: 'website', 'Website'
  • website_track_ids One2many → website.track
    readonly=True string='Visited Pages History' args: 'website.track', 'visitor_id'
Public methods (1)
  • action_send_mail(self)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/17.0/website
VERSION
VERSION 1.0
CATEGORY
CATEGORYWebsite/Website
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Thibault Delavallée, Denis Ledoux, Fabien Meghazi, Xavier ALT, Christophe Simonis, David Monjoie, Xavier Morel, Nicolas Lempereur, Géry Debongnie, Aaron Bohy, Jeremy Kersten, Lucas Perais (lpe), Damien Bouvy, Wolfgang Taferner, Yannick Tivisse, qsm-odoo, Odoo Online, Pierre Masereel, Romain Derie, Christophe Monniez, Jorge Pinna Puissant, Lucas Perais, Alexandre Kühn, Julien Castiaux, Xavier-Do, Romeo Fragomeli, Victor Feyens, Adrien Dieudonné, Sébastien Theys, Joseph Caburnay, Julien Mougenot, Samuel Degueldre, Achraf (abz), David Beguin, Nasreddin Boulif (bon), Tiffany Chang (tic), Rémy Voet (ryv), Pierre Rousseau, Gorash, Younn Olivier, Mathieu Duckerts-Antoine, Pierre Paridans, abd-msyukyu-odoo, William Braeckman, Romain Estievenart, Benjamin Vray, odoo, Arnaud Baes, Benoit Socias, pedrambiria, Guillaume (gdi), william-andre, Csaba Tóth, Huy Le, Antoine Guenet, Arthur Detroux (ard), Florian Charlier, Louis Baudoux, Nicolas Bayet, Antoine Vandevenne (anv), Jinjiu Liu, Hubert Van De Walle, Mathieu Walravens, luvi, Valentin Chevalier, Renaud Thiry, Thomas Lefebvre (thle), alsh-odoo, Louis Wicket (wil), tsm-odoo, nda, Julien (jula), Mahamadasif Ansari, Gauthier Wala (gawa), Simon Genin (ges), Pierre-Yves Dufays, Saurabh Mishra, Chintan Panchal (can), Om Rabara, Soukéina Bojabza, Robin Lejeune (role), xO-Tx, Louis (loco), Levi Siuzdak (sile), Maruan Aguerdouh (magm), Dylan Kiss (dyki), Jinane Maksoud, Sébastien Geelen (sge), Sanket Brahmbhatt, Bruno Boi, Antoine (ande), flvr-odoo, FrancoisGe, imanie383, Michael (mcm), Chong Wang (cwg), Simon Goffaux (sigo), bram1000, stcc-odoo, Brieuc-brd, Adesh Jolhe, Renilkumar Kajavadra, Alessandro Caldonazzi (alca), divy-odoo, Nguyễn Đại Dương, Mahdi Cheikh Rouhou (macr), Walid (wasa), sesn-odoo, Deependra Solanki, visp-odoo, ravb-odoo, Benjamin Hanquin (beha), Mohamed Lamine LALMI, mizosoft, Mehdi Outagant (MOU), David Ramia, Rodopho Cammarosano de Lima (rcdl), Guillaume-gdi, Serge Bayet (seba), Tran Truong Son, Jérémy Hennecart (jeh), AMZIL Ayoub, Bastien Fafchamps (bafa), Julien Carion (juca), adsh-odoo, dere-odoo, smna-odoo, duongnguyen-viindoo, Julien Segers (juse), Chrysanthe (chgo), Adnan Saiyed, Rodolpho Lima, shsa-odoo, utag-odoo, adch-odoo, Louis (wil), Junqi Wu, Sanjay Sharma, Xavier Luyckx (xlu), Antoine (anso), LuCastagne, Aleksandar Gajic, antonag32, VAN BOSSUYT Nicolas, Rahil Ghanchi, panv-odoo, paru-odoo, Mohammed Basioni, Sébastien (blse), Pierre Pulinckx (PIPU), Evgeniia Kotova, Denis Rygaert, Leonardo J. Caballero G, Arib Ansari, Jonathan Castillo (jcs), Morgane (morm), Michaël Mattiello, Pierre Pulinckx (pipu), fdardenne, Bastien PIERRE, Sahil Patel, lse-odoo, Akash Pandey, Pulinckx Pierre (PIPU), Elier Ayala Bernal, Tudor-Calin Panzaru (tupan), Daniel Duato Catalán, ksbh-odoo, aans-odoo, rusp-odoo, Davide Bonetto, alap-odoo, Jay Panchal, Patrick Stooks, Subhadeep R. Dev, Alessandro Lupo, chdh-odoo, Parth Pujara, Garvish Panchal, dtda-odoo, Julien Launois (jula), Laetitia (ldau), Augustin (duau), romo, ptpu-odoo, Serhii Rubanskyi, Alice Gaudon, adip-odoo
WEBSITE
WEBSITEhttps://www.odoo.com/app/website
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:02:05
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - digest
    - mail
    - base
    - base_setup
    - web
    - bus
    - web_tour
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - resource
    - social_media
    - google_recaptcha
    - utm
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES geoip2
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (427)
XML IDNameModelTypeStatus
404_plausible Plausible 404 ir.ui.view qweb Inherits http_routing.404
action_website_rewrite_tree website.rewrite.list website.rewrite tree New
asset_view_form_inherit_website ir.asset.form.inherit.website ir.asset field Inherits base.asset_view_form
asset_view_tree_inherit_website ir.asset.tree.inherit.website ir.asset field Inherits base.asset_view_tree
brand_promotion Brand Promotion ir.ui.view qweb Inherits web.brand_promotion
bs_debug_view BS Debug t New
color_combinations_debug_view Color Combinations Debug t New
column_count_option column_count_option ir.ui.view qweb New
cookie_policy Cookie Policy ir.ui.view qweb New
cookies_bar Cookies Bar ir.ui.view qweb Inherits website.layout
custom_code_layout Custom Code Layout ir.ui.view qweb Inherits website.layout
default_css default_css ir.ui.view qweb New
default_csv default_csv ir.ui.view qweb New
default_js default_js ir.ui.view qweb New
default_less default_less ir.ui.view qweb New
default_page default_page ir.ui.view qweb New
default_scss default_scss ir.ui.view qweb New
default_xml default_xml ir.ui.view qweb New
dynamic_snippet_carousel_options_template dynamic_snippet_carousel_options_template ir.ui.view qweb New
external_snippets external_snippets ir.ui.view qweb Inherits website.snippets
footer_copyright_company_name footer_copyright_company_name ir.ui.view qweb Inherits website.layout
footer_custom Default ir.ui.view qweb Inherits website.layout
footer_language_selector_code Footer Language Selector Code ir.ui.view qweb Inherits portal.footer_language_selector
footer_language_selector_flag Footer Language Selector Flag ir.ui.view qweb Inherits portal.footer_language_selector
footer_language_selector_inline Footer Language Selector Inline ir.ui.view qweb Inherits portal.footer_language_selector
footer_language_selector_no_text Footer Language Selector No Text ir.ui.view qweb Inherits portal.footer_language_selector
footer_no_copyright Footer No Copyright ir.ui.view qweb Inherits website.layout
grid_layout_options grid_layout_options ir.ui.view qweb New
header_hoverable_dropdown Header Hoverable Dropdown ir.ui.view qweb Inherits website.layout
header_language_selector Header Language Selector ir.ui.view qweb Inherits website.placeholder_header_language_selector
header_language_selector_code Header Language Selector Code ir.ui.view qweb Inherits website.header_language_selector
header_language_selector_flag Header Language Selector Flag ir.ui.view qweb Inherits website.header_language_selector
header_language_selector_inline Header Language Selector Inline ir.ui.view qweb Inherits website.header_language_selector
header_language_selector_no_text Header Language Selector No Text ir.ui.view qweb Inherits website.header_language_selector
header_navbar_pills_style Navbar Links Style ir.ui.view qweb Inherits website.navbar_nav
header_search_box_input Header Search Box Input ir.ui.view qweb New
header_visibility_disappears Header Effect Disappears ir.ui.view qweb Inherits website.layout
header_visibility_fade_out Header Effect Fade Out ir.ui.view qweb Inherits website.layout
header_visibility_fixed Header Effect Fixed ir.ui.view qweb Inherits website.layout
header_visibility_standard Header Visibility Standard ir.ui.view qweb Inherits website.layout
iframefallback iframefallback ir.ui.view qweb Inherits web.layout
ir_model_fields_view website.ir.model.fields.view.form ir.model.fields xpath Inherits base.view_model_fields_form
ir_model_view website.ir.model.view.form ir.model xpath Inherits base.view_model_form
lang_flag Language Flag ir.ui.view qweb New
language_selector language_selector ir.ui.view qweb Inherits portal.language_selector
language_selector_inline language_selector_inline ir.ui.view qweb Inherits website.language_selector
layout Main layout ir.ui.view qweb Inherits portal.frontend_layout
list_hybrid Any Search Results ir.ui.view qweb New
list_website_public_pages Website Pages ir.ui.view qweb New
login_layout Website Login Layout ir.ui.view qweb Inherits web.login_layout
menu_search website.menu.search website.menu search New
menu_tree website.menu.tree website.menu tree New
navbar Navbar ir.ui.view qweb New
navbar_nav Navbar Nav ir.ui.view qweb New
navbar_toggler Navbar Toggler ir.ui.view qweb New
new_page_template_about_full_1_s_text_block_h1 new_page_template_about_full_1_s_text_block_h1 ir.ui.view qweb Inherits website.new_page_template_about_s_text_block_h1
new_page_template_about_full_1_s_text_block_h2 new_page_template_about_full_1_s_text_block_h2 ir.ui.view qweb Inherits website.new_page_template_about_s_text_block_h2
new_page_template_about_full_s_image_text new_page_template_about_full_s_image_text ir.ui.view qweb Inherits website.new_page_template_about_s_image_text
new_page_template_about_full_s_numbers new_page_template_about_full_s_numbers ir.ui.view qweb Inherits website.new_page_template_about_s_numbers
new_page_template_about_full_s_text_image new_page_template_about_full_s_text_image ir.ui.view qweb Inherits website.new_page_template_about_s_text_image
new_page_template_about_map_s_text_block_2nd new_page_template_about_map_s_text_block_2nd ir.ui.view qweb Inherits website.new_page_template_about_s_text_block_2nd
new_page_template_about_map_s_text_block_h1 new_page_template_about_map_s_text_block_h1 ir.ui.view qweb Inherits website.new_page_template_about_s_text_block_h1
new_page_template_about_map_s_text_block_h2 new_page_template_about_map_s_text_block_h2 ir.ui.view qweb Inherits website.new_page_template_about_s_text_block_h2
new_page_template_about_mini_s_text_block_h2 new_page_template_about_mini_s_text_block_h2 ir.ui.view qweb Inherits website.new_page_template_about_s_text_block_h2
new_page_template_about_personal_s_image_text new_page_template_about_personal_s_image_text ir.ui.view qweb Inherits website.new_page_template_about_s_image_text
new_page_template_about_personal_s_numbers new_page_template_about_personal_s_numbers ir.ui.view qweb Inherits website.new_page_template_about_s_numbers
new_page_template_about_personal_s_text_block_h2 new_page_template_about_personal_s_text_block_h2 ir.ui.view qweb Inherits website.new_page_template_about_s_text_block_h2
new_page_template_about_s_banner new_page_template_about_s_banner ir.ui.view qweb Inherits website.new_page_template_s_banner
new_page_template_about_s_company_team new_page_template_about_s_company_team ir.ui.view qweb Inherits website.new_page_template_s_company_team
new_page_template_about_s_cover new_page_template_about_s_cover ir.ui.view qweb Inherits website.new_page_template_s_cover
new_page_template_about_s_features new_page_template_about_s_features ir.ui.view qweb Inherits website.new_page_template_s_features
new_page_template_about_s_image_text new_page_template_about_s_image_text ir.ui.view qweb Inherits website.new_page_template_s_image_text
new_page_template_about_s_numbers new_page_template_about_s_numbers ir.ui.view qweb Inherits website.new_page_template_s_numbers
new_page_template_about_s_picture new_page_template_about_s_picture ir.ui.view qweb Inherits website.new_page_template_s_picture
new_page_template_about_s_text_block_2nd new_page_template_about_s_text_block_2nd ir.ui.view qweb Inherits website.new_page_template_s_text_block_2nd
new_page_template_about_s_text_block_h1 new_page_template_about_s_text_block_h1 ir.ui.view qweb Inherits website.new_page_template_s_text_block_h1
new_page_template_about_s_text_block_h2 new_page_template_about_s_text_block_h2 ir.ui.view qweb Inherits website.new_page_template_s_text_block_h2
new_page_template_about_s_text_cover new_page_template_about_s_text_cover ir.ui.view qweb Inherits website.new_page_template_s_text_cover
new_page_template_about_s_text_image new_page_template_about_s_text_image ir.ui.view qweb Inherits website.new_page_template_s_text_image
new_page_template_about_s_three_columns new_page_template_about_s_three_columns ir.ui.view qweb Inherits website.new_page_template_s_three_columns
new_page_template_about_timeline_s_text_block_h2 new_page_template_about_timeline_s_text_block_h2 ir.ui.view qweb Inherits website.new_page_template_about_s_text_block_h2
new_page_template_basic_2_s_text_block_h1 new_page_template_basic_2_s_text_block_h1 ir.ui.view qweb Inherits website.new_page_template_basic_s_text_block_h1
new_page_template_basic_s_picture new_page_template_basic_s_picture ir.ui.view qweb Inherits website.new_page_template_s_picture
new_page_template_basic_s_quotes_carousel new_page_template_basic_s_quotes_carousel ir.ui.view qweb Inherits website.new_page_template_s_quotes_carousel
new_page_template_basic_s_text_block_h1 new_page_template_basic_s_text_block_h1 ir.ui.view qweb Inherits website.new_page_template_s_text_block_h1
new_page_template_basic_s_text_cover new_page_template_basic_s_text_cover ir.ui.view qweb Inherits website.new_page_template_s_text_cover
new_page_template_gallery_s_banner new_page_template_gallery_s_banner ir.ui.view qweb Inherits website.new_page_template_s_banner
new_page_template_gallery_s_image_text_2nd new_page_template_gallery_s_image_text_2nd ir.ui.view qweb Inherits website.new_page_template_s_image_text_2nd
new_page_template_gallery_s_text_block_2nd new_page_template_gallery_s_text_block_2nd ir.ui.view qweb Inherits website.new_page_template_s_text_block_2nd
new_page_template_gallery_s_text_block_h2 new_page_template_gallery_s_text_block_h2 ir.ui.view qweb Inherits website.new_page_template_s_text_block_h2
new_page_template_groups new_page_template_groups ir.ui.view qweb New
new_page_template_landing_0_s_cover new_page_template_landing_0_s_cover ir.ui.view qweb Inherits website.new_page_template_landing_s_cover
new_page_template_landing_1_s_banner new_page_template_landing_1_s_banner ir.ui.view qweb Inherits website.new_page_template_landing_s_banner
new_page_template_landing_2_s_call_to_action new_page_template_landing_2_s_call_to_action ir.ui.view qweb Inherits new_page_template_landing_s_call_to_action
new_page_template_landing_2_s_cover new_page_template_landing_2_s_cover ir.ui.view qweb Inherits website.new_page_template_landing_s_cover
new_page_template_landing_2_s_text_block_h2 new_page_template_landing_2_s_text_block_h2 ir.ui.view qweb Inherits website.new_page_template_landing_s_text_block_h2
new_page_template_landing_2_s_three_columns new_page_template_landing_2_s_three_columns ir.ui.view qweb Inherits website.new_page_template_landing_s_three_columns
new_page_template_landing_3_s_call_to_action new_page_template_landing_3_s_call_to_action ir.ui.view qweb Inherits new_page_template_landing_s_call_to_action
new_page_template_landing_3_s_text_block_h2 new_page_template_landing_3_s_text_block_h2 ir.ui.view qweb Inherits website.new_page_template_landing_s_text_block_h2
new_page_template_landing_3_s_three_columns new_page_template_landing_3_s_three_columns ir.ui.view qweb Inherits website.new_page_template_landing_s_three_columns
new_page_template_landing_4_s_cover new_page_template_landing_4_s_cover ir.ui.view qweb Inherits website.new_page_template_landing_s_cover
new_page_template_landing_4_s_text_block_h2 new_page_template_landing_4_s_text_block_h2 ir.ui.view qweb Inherits website.new_page_template_landing_s_text_block_h2
new_page_template_landing_5_s_banner new_page_template_landing_5_s_banner ir.ui.view qweb Inherits website.new_page_template_landing_s_banner
new_page_template_landing_s_banner new_page_template_landing_s_banner ir.ui.view qweb Inherits website.new_page_template_s_banner
new_page_template_landing_s_call_to_action new_page_template_landing_s_call_to_action ir.ui.view qweb Inherits new_page_template_s_call_to_action
new_page_template_landing_s_color_blocks_2 new_page_template_landing_s_color_blocks_2 ir.ui.view qweb Inherits website.new_page_template_s_color_blocks_2
new_page_template_landing_s_cover new_page_template_landing_s_cover ir.ui.view qweb Inherits website.new_page_template_s_cover
new_page_template_landing_s_features new_page_template_landing_s_features ir.ui.view qweb Inherits website.new_page_template_s_features
new_page_template_landing_s_showcase new_page_template_landing_s_showcase ir.ui.view qweb Inherits website.new_page_template_s_showcase
new_page_template_landing_s_text_block_h2 new_page_template_landing_s_text_block_h2 ir.ui.view qweb Inherits website.new_page_template_s_text_block_h2
new_page_template_landing_s_text_cover new_page_template_landing_s_text_cover ir.ui.view qweb Inherits website.new_page_template_s_text_cover
new_page_template_landing_s_text_image new_page_template_landing_s_text_image ir.ui.view qweb Inherits website.new_page_template_s_text_image
new_page_template_landing_s_three_columns new_page_template_landing_s_three_columns ir.ui.view qweb Inherits website.new_page_template_s_three_columns
new_page_template_pricing_5_s_text_block_h1 new_page_template_pricing_5_s_text_block_h1 ir.ui.view qweb Inherits website.new_page_template_pricing_s_text_block_h1
new_page_template_pricing_s_image_text_2nd new_page_template_pricing_s_image_text_2nd ir.ui.view qweb Inherits website.new_page_template_s_image_text_2nd
new_page_template_pricing_s_text_block_2nd new_page_template_pricing_s_text_block_2nd ir.ui.view qweb Inherits website.new_page_template_s_text_block_2nd
new_page_template_pricing_s_text_block_h1 new_page_template_pricing_s_text_block_h1 ir.ui.view qweb Inherits website.new_page_template_s_text_block_h1
new_page_template_pricing_s_text_block_h2 new_page_template_pricing_s_text_block_h2 ir.ui.view qweb Inherits website.new_page_template_s_text_block_h2
new_page_template_s_banner new_page_template_s_banner ir.ui.view qweb Inherits website.s_banner
new_page_template_s_call_to_action new_page_template_s_call_to_action ir.ui.view qweb Inherits website.s_call_to_action
new_page_template_s_carousel new_page_template_s_carousel ir.ui.view qweb Inherits website.s_carousel
new_page_template_s_color_blocks_2 new_page_template_s_color_blocks_2 ir.ui.view qweb Inherits website.s_color_blocks_2
new_page_template_s_company_team new_page_template_s_company_team ir.ui.view qweb Inherits website.s_company_team
new_page_template_s_cover new_page_template_s_cover ir.ui.view qweb Inherits website.s_cover
new_page_template_s_features new_page_template_s_features ir.ui.view qweb Inherits website.s_features
new_page_template_s_image_gallery new_page_template_s_image_gallery ir.ui.view qweb Inherits website.s_image_gallery
new_page_template_s_image_text new_page_template_s_image_text ir.ui.view qweb Inherits website.s_image_text
new_page_template_s_image_text_2nd new_page_template_s_image_text_2nd ir.ui.view qweb Inherits website.s_image_text_2nd
new_page_template_s_images_wall new_page_template_s_images_wall ir.ui.view qweb Inherits website.s_images_wall
new_page_template_s_map new_page_template_s_map ir.ui.view qweb Inherits s_map
new_page_template_s_media_list new_page_template_s_media_list ir.ui.view qweb Inherits website.s_media_list
new_page_template_s_numbers new_page_template_s_numbers ir.ui.view qweb Inherits website.s_numbers
new_page_template_s_parallax new_page_template_s_parallax ir.ui.view qweb Inherits website.s_parallax
new_page_template_s_picture new_page_template_s_picture ir.ui.view qweb Inherits website.s_picture
new_page_template_s_quotes_carousel new_page_template_s_quotes_carousel ir.ui.view qweb Inherits website.s_quotes_carousel
new_page_template_s_references new_page_template_s_references ir.ui.view qweb Inherits website.s_references
new_page_template_s_showcase new_page_template_s_showcase ir.ui.view qweb Inherits website.s_showcase
new_page_template_s_text_block_2nd new_page_template_s_text_block_2nd ir.ui.view qweb Inherits website.s_text_block_2nd
new_page_template_s_text_block_h1 new_page_template_s_text_block_h1 ir.ui.view qweb Inherits website.s_text_block_h1
new_page_template_s_text_block_h2 new_page_template_s_text_block_h2 ir.ui.view qweb Inherits website.s_text_block_h2
new_page_template_s_text_cover new_page_template_s_text_cover ir.ui.view qweb Inherits website.s_text_cover
new_page_template_s_text_image new_page_template_s_text_image ir.ui.view qweb Inherits website.s_text_image
new_page_template_s_three_columns new_page_template_s_three_columns ir.ui.view qweb Inherits website.s_three_columns
new_page_template_s_website_form new_page_template_s_website_form ir.ui.view qweb Inherits s_website_form
new_page_template_services_0_s_three_columns new_page_template_services_0_s_three_columns ir.ui.view qweb Inherits website.new_page_template_services_s_three_columns
new_page_template_services_3_s_text_block_h1 new_page_template_services_3_s_text_block_h1 ir.ui.view qweb Inherits website.new_page_template_services_s_text_block_h1
new_page_template_services_s_image_text new_page_template_services_s_image_text ir.ui.view qweb Inherits website.new_page_template_s_image_text
new_page_template_services_s_image_text_2nd new_page_template_services_s_image_text_2nd ir.ui.view qweb Inherits website.new_page_template_s_image_text_2nd
new_page_template_services_s_parallax new_page_template_services_s_parallax ir.ui.view qweb Inherits website.new_page_template_s_parallax
new_page_template_services_s_text_block_2nd new_page_template_services_s_text_block_2nd ir.ui.view qweb Inherits website.new_page_template_s_text_block_2nd
new_page_template_services_s_text_block_h1 new_page_template_services_s_text_block_h1 ir.ui.view qweb Inherits website.new_page_template_s_text_block_h1
new_page_template_services_s_text_block_h2 new_page_template_services_s_text_block_h2 ir.ui.view qweb Inherits website.new_page_template_s_text_block_h2
new_page_template_services_s_text_cover new_page_template_services_s_text_cover ir.ui.view qweb Inherits website.new_page_template_s_text_cover
new_page_template_services_s_text_image new_page_template_services_s_text_image ir.ui.view qweb Inherits website.new_page_template_s_text_image
new_page_template_services_s_three_columns new_page_template_services_s_three_columns ir.ui.view qweb Inherits website.new_page_template_s_three_columns
new_page_template_team_0_s_three_columns new_page_template_team_0_s_three_columns ir.ui.view qweb Inherits website.new_page_template_team_s_three_columns
new_page_template_team_2_s_text_block_h1 new_page_template_team_2_s_text_block_h1 ir.ui.view qweb Inherits website.new_page_template_team_s_text_block_h1
new_page_template_team_s_image_gallery new_page_template_team_s_image_gallery ir.ui.view qweb Inherits website.new_page_template_s_image_gallery
new_page_template_team_s_image_text new_page_template_team_s_image_text ir.ui.view qweb Inherits website.new_page_template_s_image_text
new_page_template_team_s_image_text_2nd new_page_template_team_s_image_text_2nd ir.ui.view qweb Inherits website.new_page_template_s_image_text_2nd
new_page_template_team_s_images_wall new_page_template_team_s_images_wall ir.ui.view qweb Inherits website.new_page_template_s_images_wall
new_page_template_team_s_media_list new_page_template_team_s_media_list ir.ui.view qweb Inherits website.new_page_template_s_media_list
new_page_template_team_s_picture new_page_template_team_s_picture ir.ui.view qweb Inherits website.new_page_template_s_picture
new_page_template_team_s_text_block_h1 new_page_template_team_s_text_block_h1 ir.ui.view qweb Inherits website.new_page_template_s_text_block_h1
new_page_template_team_s_text_image new_page_template_team_s_text_image ir.ui.view qweb Inherits website.new_page_template_s_text_image
new_page_template_team_s_three_columns new_page_template_team_s_three_columns ir.ui.view qweb Inherits website.new_page_template_s_three_columns
no_autohide_menu no_autohide_menu ir.ui.view qweb Inherits website.layout
one_hybrid Single any Search Results ir.ui.view qweb New
option_footer_scrolltop option_footer_scrolltop ir.ui.view qweb Inherits website.layout
option_header_brand_logo Header Brand Logo ir.ui.view qweb Inherits website.placeholder_header_brand
option_header_brand_name Header Brand Name ir.ui.view qweb Inherits website.placeholder_header_brand
option_layout_hide_header option_layout_hide_header ir.ui.view qweb Inherits website.layout
page_404 Page Not Found ir.ui.view qweb New
pager Pager ir.ui.view qweb Inherits portal.pager
placeholder_header_brand Placeholder Header Brand ir.ui.view qweb New
placeholder_header_language_selector Placeholder Header Language Selector ir.ui.view qweb New
pricing Pricing ir.ui.view qweb New
privacy_policy Privacy Policy ir.ui.view qweb New
protected_403 Page Protected ir.ui.view qweb New
publish_management publish_management ir.ui.view qweb New
qweb_500 qweb_500 ir.ui.view qweb Inherits http_routing.500
record_cover record_cover ir.ui.view qweb New
res_config_settings_view_form res.config.settings.view.form.inherit.website res.config.settings xpath Inherits base.res_config_settings_view_form
res_config_settings_view_form_inherit_auth_signup res.config.settings.view.form.inherit.website res.config.settings xpath Inherits auth_signup.res_config_settings_view_form
reset_view_arch_wizard_view reset.view.arch.wizard field Inherits base.reset_view_arch_wizard_view
robots robots ir.ui.view qweb New
s_alert Alert ir.ui.view qweb New
s_alert_options s_alert_options ir.ui.view qweb Inherits website.snippet_options
s_badge Badge ir.ui.view qweb New
s_badge_options s_badge_options ir.ui.view qweb Inherits website.snippet_options
s_banner Banner ir.ui.view qweb New
s_blockquote Blockquote ir.ui.view qweb New
s_blockquote_options s_blockquote_options ir.ui.view qweb Inherits website.snippet_options
s_button Button ir.ui.view qweb New
s_call_to_action Call to Action ir.ui.view qweb New
s_call_to_action_about s_call_to_action_about ir.ui.view qweb Inherits website.s_call_to_action
s_call_to_action_digital s_call_to_action_digital ir.ui.view qweb Inherits website.s_call_to_action
s_call_to_action_menu s_call_to_action_menu ir.ui.view qweb Inherits website.s_call_to_action
s_card Card ir.ui.view qweb New
s_carousel Carousel ir.ui.view qweb New
s_chart Chart ir.ui.view qweb New
s_chart_options s_chart_options ir.ui.view qweb Inherits website.snippet_options
s_color_blocks_2 Big Boxes ir.ui.view qweb New
s_company_team Team ir.ui.view qweb New
s_comparisons Comparisons ir.ui.view qweb New
s_countdown Countdown ir.ui.view qweb New
s_countdown_options s_countdown_options ir.ui.view qweb Inherits website.snippet_options
s_cover Cover ir.ui.view qweb New
s_dynamic_snippet Dynamic Snippet ir.ui.view qweb New
s_dynamic_snippet_carousel Dynamic Carousel ir.ui.view qweb New
s_dynamic_snippet_carousel_options s_dynamic_snippet_carousel_options ir.ui.view qweb Inherits website.snippet_options
s_dynamic_snippet_options s_dynamic_snippet_options ir.ui.view qweb Inherits website.snippet_options
s_embed_code Embed Code ir.ui.view qweb New
s_embed_code_options s_embed_code_options ir.ui.view qweb Inherits website.snippet_options
s_facebook_page Facebook ir.ui.view qweb New
s_facebook_page_options s_facebook_page_options ir.ui.view qweb Inherits website.snippet_options
s_faq_collapse Accordion ir.ui.view qweb New
s_faq_collapse_options s_faq_collapse_options ir.ui.view qweb Inherits website.snippet_options
s_features Features ir.ui.view qweb New
s_features_grid Features Grid ir.ui.view qweb New
s_google_map Google Map ir.ui.view qweb New
s_google_map_options s_google_map_options ir.ui.view qweb Inherits website.snippet_options
s_hr Separator ir.ui.view qweb New
s_hr_options s_hr_options ir.ui.view qweb Inherits website.snippet_options
s_image Image ir.ui.view qweb New
s_image_gallery Image Gallery ir.ui.view qweb New
s_image_gallery_options s_image_gallery_options ir.ui.view qweb Inherits website.snippet_options
s_image_text Image - Text ir.ui.view qweb New
s_image_text_2nd s_image_text_2nd ir.ui.view qweb Inherits website.new_page_template_s_image_text
s_images_wall Images Wall ir.ui.view qweb New
s_instagram_page Instagram Page ir.ui.view qweb New
s_instagram_page_options s_instagram_page_options ir.ui.view qweb Inherits website.snippet_options
s_map Map ir.ui.view qweb New
s_map_options s_map_options ir.ui.view qweb Inherits website.snippet_options
s_masonry_block Masonry ir.ui.view qweb New
s_masonry_block_alternation_image_text_template s_masonry_block_alternation_image_text_template ir.ui.view qweb New
s_masonry_block_alternation_text_image_template s_masonry_block_alternation_text_image_template ir.ui.view qweb New
s_masonry_block_alternation_text_image_text_template s_masonry_block_alternation_text_image_text_template ir.ui.view qweb New
s_masonry_block_alternation_text_template s_masonry_block_alternation_text_template ir.ui.view qweb New
s_masonry_block_default_template s_masonry_block_default_template ir.ui.view qweb New
s_masonry_block_image_texts_image_template s_masonry_block_image_texts_image_template ir.ui.view qweb New
s_masonry_block_images_template s_masonry_block_images_template ir.ui.view qweb New
s_masonry_block_mosaic_template s_masonry_block_mosaic_template ir.ui.view qweb New
s_masonry_block_options s_masonry_block_options ir.ui.view qweb Inherits website.snippet_options
s_masonry_block_reversed_template s_masonry_block_reversed_template ir.ui.view qweb New
s_masonry_block_texts_image_texts_template s_masonry_block_texts_image_texts_template ir.ui.view qweb New
s_media_list Media List ir.ui.view qweb New
s_media_list_options s_media_list_options ir.ui.view qweb Inherits website.snippet_options
s_mega_menu_big_icons_subtitles Menu - Big icons & subtitles ir.ui.view qweb New
s_mega_menu_big_icons_subtitles_item s_mega_menu_big_icons_subtitles_item ir.ui.view qweb New
s_mega_menu_cards Menu - Cards ir.ui.view qweb New
s_mega_menu_cards_item s_mega_menu_cards_item ir.ui.view qweb New
s_mega_menu_images_subtitles Menu - images & subtitles ir.ui.view qweb New
s_mega_menu_images_subtitles_item s_mega_menu_images_subtitles_item ir.ui.view qweb New
s_mega_menu_little_icons Menu - Little icons ir.ui.view qweb New
s_mega_menu_menu_image_menu Menu - Image - Menu ir.ui.view qweb New
s_mega_menu_menus_logos Menus & logos ir.ui.view qweb New
s_mega_menu_multi_menus Multi-Menus ir.ui.view qweb New
s_mega_menu_odoo_menu Odoo Menu ir.ui.view qweb New
s_mega_menu_thumbnails Menu - Thumbnails ir.ui.view qweb New
s_mega_menu_thumbnails_item s_mega_menu_thumbnails_item ir.ui.view qweb New
s_numbers Numbers ir.ui.view qweb New
s_parallax Parallax ir.ui.view qweb New
s_picture Picture ir.ui.view qweb New
s_picture_only s_picture_only ir.ui.view qweb Inherits website.new_page_template_s_picture
s_popup Popup ir.ui.view qweb New
s_popup_options s_popup_options ir.ui.view qweb Inherits website.snippet_options
s_process_steps Steps ir.ui.view qweb New
s_process_steps_options s_process_steps_options ir.ui.view qweb Inherits website.snippet_options
s_product_catalog Pricelist ir.ui.view qweb New
s_product_catalog_add_product_widget s_product_catalog_add_product_widget ir.ui.view qweb New
s_product_catalog_dish s_product_catalog_dish ir.ui.view qweb New
s_product_catalog_options s_product_catalog_options ir.ui.view qweb Inherits website.snippet_options
s_product_list Items ir.ui.view qweb New
s_progress_bar Progress Bar ir.ui.view qweb New
s_progress_bar_options s_progress_bar_options ir.ui.view qweb Inherits website.snippet_options
s_quotes_carousel Quotes ir.ui.view qweb New
s_rating Rating ir.ui.view qweb New
s_rating_options s_rating_options ir.ui.view qweb Inherits website.snippet_options
s_references References ir.ui.view qweb New
s_searchbar Search ir.ui.view qweb New
s_searchbar_input Search ir.ui.view qweb New
s_share Share ir.ui.view qweb New
s_showcase Showcase ir.ui.view qweb New
s_showcase_options s_showcase_options ir.ui.view qweb Inherits website.snippet_options
s_social_media Social Media ir.ui.view qweb New
s_social_media_options s_social_media_options ir.ui.view qweb Inherits website.snippet_options
s_table_of_content Table of Content ir.ui.view qweb New
s_table_of_content_options s_table_of_content_options ir.ui.view qweb Inherits website.snippet_options
s_tabs Tabs ir.ui.view qweb New
s_tabs_options s_tabs_options ir.ui.view qweb Inherits website.snippet_options
s_text_block Text ir.ui.view qweb New
s_text_block_2nd s_text_block_2nd ir.ui.view qweb Inherits website.s_text_block
s_text_block_h1 s_text_block_h1 ir.ui.view qweb Inherits website.s_text_block
s_text_block_h2 s_text_block_h2 ir.ui.view qweb Inherits website.s_text_block
s_text_block_h2_contact s_text_block_h2_contact ir.ui.view qweb Inherits website.s_text_block_h2
s_text_cover Text Cover ir.ui.view qweb New
s_text_highlight Text Highlight ir.ui.view qweb New
s_text_image Text - Image ir.ui.view qweb New
s_three_columns Columns ir.ui.view qweb New
s_three_columns_2nd s_three_columns_2nd ir.ui.view qweb Inherits website.s_three_columns
s_three_columns_menu s_three_columns_menu ir.ui.view qweb Inherits website.s_three_columns
s_timeline Timeline ir.ui.view qweb New
s_timeline_options s_timeline_options ir.ui.view qweb Inherits website.snippet_options
s_title Title ir.ui.view qweb New
s_video Video ir.ui.view qweb New
s_website_controller_page_listing_layout Default layout ir.ui.view qweb Inherits website.snippet_options
s_website_form Form ir.ui.view qweb New
s_website_form_options s_website_form_options ir.ui.view qweb Inherits website.snippet_options
search_text_with_highlight Website Searchbox item highlight ir.ui.view qweb New
searchbar_input_snippet_options search bar snippet options ir.ui.view qweb Inherits website.snippet_options
shared_blocks Shared blocks ir.ui.view qweb Inherits website.layout
show_website_info Show Odoo Information ir.ui.view qweb Inherits website.website_info
sitemap_index_xml sitemap_index_xml ir.ui.view qweb New
sitemap_locs sitemap_locs ir.ui.view qweb New
sitemap_xml sitemap_xml ir.ui.view qweb New
snippet_options snippet_options ir.ui.view qweb Inherits web_editor.snippet_options
snippet_options_background_options snippet_options_background_options ir.ui.view qweb Inherits web_editor.snippet_options_background_options
snippet_options_border_line_widgets snippet_options_border_line_widgets ir.ui.view qweb New
snippet_options_border_widgets snippet_options_border_widgets ir.ui.view qweb New
snippet_options_conditional_visibility snippet_options_conditional_visibility ir.ui.view qweb New
snippet_options_header_box snippet_options_header_box ir.ui.view qweb New
snippet_options_shadow_widgets snippet_options_shadow_widgets ir.ui.view qweb New
snippets snippets ir.ui.view qweb Inherits web_editor.snippets
snippets_debug_view Snippet Debug t New
step_wizard Step Checkout ir.ui.view qweb New
submenu Submenu ir.ui.view qweb New
template_footer_call_to_action Call-to-Action ir.ui.view qweb Inherits website.layout
template_footer_centered Centered ir.ui.view qweb Inherits website.layout
template_footer_contact Contact ir.ui.view qweb Inherits website.layout
template_footer_descriptive Descriptive ir.ui.view qweb Inherits website.layout
template_footer_headline Headline ir.ui.view qweb Inherits website.layout
template_footer_links Links ir.ui.view qweb Inherits website.layout
template_footer_minimalist Minimalist ir.ui.view qweb Inherits website.layout
template_footer_slideout Template Footer Slideout ir.ui.view qweb Inherits website.layout
template_header_boxed Template Header Rounded Box ir.ui.view qweb Inherits website.layout
template_header_boxed_align_center template_header_boxed_align_center ir.ui.view qweb Inherits website.template_header_boxed
template_header_boxed_align_right template_header_boxed_align_right ir.ui.view qweb Inherits website.template_header_boxed
template_header_default Template Header Default ir.ui.view qweb Inherits website.layout
template_header_default_align_center template_header_default_align_center ir.ui.view qweb Inherits website.template_header_default
template_header_default_align_right template_header_default_align_right ir.ui.view qweb Inherits website.template_header_default
template_header_hamburger Template Header Hamburger ir.ui.view qweb Inherits website.layout
template_header_hamburger_align_right template_header_hamburger_align_right ir.ui.view qweb Inherits website.template_header_hamburger
template_header_hamburger_mobile_align_center template_header_hamburger_mobile_align_center ir.ui.view qweb Inherits website.template_header_hamburger
template_header_hamburger_mobile_align_right template_header_hamburger_mobile_align_right ir.ui.view qweb Inherits website.template_header_hamburger
template_header_mobile Template Header Mobile ir.ui.view qweb New
template_header_mobile_align_center template_header_mobile_align_center ir.ui.view qweb Inherits website.template_header_mobile
template_header_mobile_align_right template_header_mobile_align_right ir.ui.view qweb Inherits website.template_header_mobile
template_header_sales_four Template Header Sale 4 ir.ui.view qweb Inherits website.layout
template_header_sales_four_align_center template_header_sales_four_align_center ir.ui.view qweb Inherits website.template_header_sales_four
template_header_sales_four_align_right template_header_sales_four_align_right ir.ui.view qweb Inherits website.template_header_sales_four
template_header_sales_one Template Header Sale 1 ir.ui.view qweb Inherits website.layout
template_header_sales_one_align_center template_header_sales_one_align_center ir.ui.view qweb Inherits website.template_header_sales_one
template_header_sales_one_align_right template_header_sales_one_align_right ir.ui.view qweb Inherits website.template_header_sales_one
template_header_sales_three Template Header Sale 3 ir.ui.view qweb Inherits website.layout
template_header_sales_two Template Header Sale 2 ir.ui.view qweb Inherits website.layout
template_header_sales_two_align_center template_header_sales_two_align_center ir.ui.view qweb Inherits website.template_header_sales_two
template_header_sales_two_align_right template_header_sales_two_align_right ir.ui.view qweb Inherits website.template_header_sales_two
template_header_search Template Header Search ir.ui.view qweb Inherits website.layout
template_header_search_align_center template_header_search_align_center ir.ui.view qweb Inherits website.template_header_search
template_header_search_align_right template_header_search_align_right ir.ui.view qweb Inherits website.template_header_search
template_header_sidebar Template Header Sidebar ir.ui.view qweb Inherits website.layout
template_header_sidebar_align_center template_header_sidebar_align_center ir.ui.view qweb Inherits website.template_header_sidebar
template_header_sidebar_align_right template_header_sidebar_align_right ir.ui.view qweb Inherits website.template_header_sidebar
template_header_stretch Template Header Stretch ir.ui.view qweb Inherits website.layout
template_header_stretch_align_center template_header_stretch_align_center ir.ui.view qweb Inherits website.template_header_stretch
template_header_stretch_align_right template_header_stretch_align_right ir.ui.view qweb Inherits website.template_header_stretch
template_header_vertical Template Header Vertical ir.ui.view qweb Inherits website.layout
theme_view_form_preview website.form ir.module.module form New
theme_view_kanban Themes Kanban ir.module.module kanban New
theme_view_search Themes Search ir.module.module search New
user_dropdown user_dropdown ir.ui.view qweb Inherits portal.user_dropdown
view_arch_only website.ir_ui_view.arch_only ir.ui.view form New
view_attachment_form_inherit_website ir.attachment.form.inherit.website ir.attachment field Inherits base.view_attachment_form
view_attachment_tree_inherit_website ir.attachment.tree.inherit.website ir.attachment field Inherits base.view_attachment_tree
view_base_language_install view_base_language_install.inherit base.language.install group Inherits base.view_base_language_install
view_edit_robots Edit Robots.txt website.robots form New
view_partner_form_inherit_website res.partner.form.website.inherit res.partner xpath Inherits base.view_partner_form
view_rewrite_search website.rewrite.search website.rewrite search New
view_server_action_form_website ir.actions.server.form.website ir.actions.server data Inherits base.view_server_action_form
view_server_action_search_website ir.actions.server.search.website ir.actions.server xpath Inherits base.view_server_action_search
view_server_action_tree_website ir.actions.server.tree.website ir.actions.server xpath Inherits base.view_server_action_tree
view_view_form_extend ir.ui.view field Inherits base.view_view_form
view_view_tree_inherit_website ir.ui.view tree Inherits base.view_view_tree
view_website_form website.form website form New
view_website_form_view_themes_modal website.modal.form website xpath Inherits website.view_website_form
view_website_rewrite_form website.rewrite form New
view_website_tree website.tree website tree New
website.aboutus About Us ir.ui.view qweb New
website.contactus Contact Us ir.ui.view qweb New
website.header_call_to_action Header Call to Action ir.ui.view qweb Inherits website.placeholder_header_call_to_action
website.header_call_to_action_large Header Call to Action - Large ir.ui.view qweb Inherits website.header_call_to_action
website.header_call_to_action_sidebar Header Call to Action - Sidebar ir.ui.view qweb Inherits website.header_call_to_action_large
website.header_call_to_action_stretched Header Call to Action - Stretched ir.ui.view qweb Inherits website.header_call_to_action
website.header_search_box Header Search Bar ir.ui.view qweb Inherits website.placeholder_header_search_box
website.header_social_links Header Social Links ir.ui.view qweb Inherits website.placeholder_header_social_links
website.header_text_element Header Text element ir.ui.view qweb Inherits website.placeholder_header_text_element
website.homepage Home ir.ui.view qweb New
website.neutralize_ribbon Neutralize Ribbon ir.ui.view qweb Inherits website.layout
website.our_services Services ir.ui.view qweb New
website.placeholder_header_call_to_action Placeholder Header Call to Action ir.ui.view qweb New
website.placeholder_header_search_box Placeholder Header Search Bar ir.ui.view qweb New
website.placeholder_header_social_links Placeholder Header Social Links ir.ui.view qweb New
website.placeholder_header_text_element Placeholder Header Text element ir.ui.view qweb New
website.s_dynamic_snippet_options_template website.s_dynamic_snippet_options_template ir.ui.view qweb New
website.s_dynamic_snippet_template website.s_dynamic_snippet_template ir.ui.view qweb New
website_controller_pages_form_view website.controller.page.form website.controller.page form New
website_controller_pages_tree_view website.controller.page.list website.controller.page tree New
website_info Odoo Information ir.ui.view qweb New
website_menus_form_view website.menu.form website.menu form New
website_page_properties_view_form website.page.properties.form.view website.page form New
website_pages_form_view website.page.form website.page form New
website_pages_kanban_view website.page.kanban website.page kanban New
website_pages_tree_view website.page.list website.page tree New
website_pages_view_search website.page.view.search website.page search New
website_search_box Website Searchbox ir.ui.view qweb New
website_search_box_input website_search_box_input ir.ui.view qweb Inherits website.website_search_box
website_visitor_page_view_graph website.track.view.graph website.track graph New
website_visitor_page_view_search website.track.view.search website.track search New
website_visitor_page_view_tree website.track.view.tree website.track tree New
website_visitor_track_view_graph website.track.view.graph website.track graph New
website_visitor_track_view_tree website.track.view.tree website.track tree New
website_visitor_view_form website.visitor.view.form website.visitor form New
website_visitor_view_graph website.visitor.view.graph website.visitor graph New
website_visitor_view_kanban website.visitor.view.kanban website.visitor kanban New
website_visitor_view_search website.visitor.view.search website.visitor search New
website_visitor_view_tree website.visitor.view.tree website.visitor tree New
Models touched (53)

New fields (0)

No new fields.

Public methods (2)
  • get_base_url(self)
    Returns the base url for a given record, given the following priority: 1. If the record has a `website_id` field, we use the url from this website as base url, if set. 2. If the record has a `company_id` field, we use the website from that company (if set). Note that a company doesn't really have a website, it is retrieve through some heuristic in its `website_id`'s compute. 3. Use the ICP `web.base.url` (super) :return: the base url for this record :rtype: string
  • get_website_meta(self)

New fields (1)
  • website_ids Many2many → website
    string='Websites to translate' args: 'website'
Public methods (2)
  • default_get(self, fields)
    @api.model
  • lang_install(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (4)
  • website_path Char
    args: 'Website Path'
  • website_published Boolean
    copy=False help='A code server action can be executed from the website, using a dedicated controller. The address is <base>/website/action/<website_path>. Set this field as True to allow users to run this action. If it is set to False the action cannot be run through the website.' args: 'Available on the Website'
  • website_url Char
    compute='_get_website_url' help='The full URL to access the server action through the website.' args: 'Website Url'
  • xml_id Char
    compute='_compute_xml_id' help='ID of the action if defined in a XML file' args: 'External ID'
Public methods (0)

No public methods.

New fields (2)
  • key Char
    copy=False
  • website_id Many2one → website
    ondelete='cascade' args: 'website'
Public methods (2)
  • filter_duplicate(self, website_id=None)
    Filter current recordset only keeping the most suitable asset per distinct name. Every non-accessible asset will be removed from the set: * In non website context, every asset with a website will be removed * In a website context, every asset from another website
  • write(self, vals)
    COW for ir.asset. This way editing websites does not impact other websites. Also this way newly created websites will only contain the default assets.

New fields (1)
  • theme_template_id Many2one → theme.ir.asset
    copy=False args: 'theme.ir.asset'
Public methods (0)

No public methods.

New fields (2)
  • key Char
  • website_id Many2one → website
    args: 'website'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • get_serving_groups(self)
    @api.model

New fields (2)
  • key Char
    copy=False
  • theme_template_id Many2one → theme.ir.attachment
    copy=False args: 'theme.ir.attachment'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • get_frontend_session_info(self)
    @api.model
  • routing_map(self, key=None)

New fields (4)
  • website_form_access Boolean
    help='Enable the form builder feature for this model.' args: 'Allowed to use in forms'
  • website_form_default_field_id Many2one → ir.model.fields
    domain="[('model', '=', model), ('ttype', '=', 'text')]" help='Specify the field which will contain meta and custom form fields datas.' args: 'ir.model.fields', 'Field for custom form data'
  • website_form_key Char
    help='Used in FormBuilder Registry'
  • website_form_label Char
    help="Form action label. Ex: crm.lead could be 'Send an e-mail' and project.issue could be 'Create an Issue'." args: 'Label for form action'
Public methods (2)
  • get_authorized_fields(self, model_name)
    @api.model
    Return the fields of the given model name as a mapping like method `fields_get`.
  • get_compatible_form_models(self)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • website_form_blacklisted Boolean
    default=True help='Blacklist this field for web forms' index=True args: 'Blacklisted in web forms'
Public methods (2)
  • formbuilder_whitelist(self, model, fields)
    @api.model
    :param str model: name of the model on which to whitelist fields :param list(str) fields: list of fields to whitelist on the model :return: nothing of import
  • init(self)

New fields (2)
  • image_ids One2many → ir.attachment
    domain=[('res_model', '=', _name), ('mimetype', '=like', 'image/%')] readonly=True string='Screenshots' args: 'ir.attachment', 'res_id'
  • is_installed_on_current_website Boolean
    compute='_compute_is_installed_on_current_website'
Public methods (7)
  • button_choose_theme(self)
    Remove any existing theme on the current website and install the theme ``self`` instead. The actual loading of the theme on the current website will be done automatically on ``write`` thanks to the upgrade and/or install. When installating a new theme, upgrade the upstream chain first to make sure we have the latest version of the dependencies to prevent inconsistencies. :return: dict with the next action to execute
  • button_refresh_theme(self)
    Refresh the current theme of the current website. To refresh it, we only need to upgrade the modules. Indeed the (re)loading of the theme will be done automatically on ``write``.
  • button_remove_theme(self)
    Remove the current theme of the current website.
  • get_themes_domain(self)
    Returns the 'ir.module.module' search domain matching all available themes.
  • update_list(self)
    @api.model
  • update_theme_images(self)
    @api.model
  • write(self, vals)
    Override to correctly upgrade themes after upgrade/installation of modules. # Install If this theme wasn't installed before, then load it for every website for which it is in the stream. eg. The very first installation of a theme on a website will trigger this. eg. If a website uses theme_A and we install sale, then theme_A_sale will be autoinstalled, and in this case we need to load theme_A_sale for the website. # Upgrade There are 2 cases to handle when upgrading a theme: * When clicking on the theme upgrade button on the interface, in which case there will be an http request made. -> We want to upgrade the current website only, not any other. * When upgrading with -u, in which case no request should be set. -> We want to upgrade every website using this theme.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • get_available_options(self)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • value_to_html(self, value, 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_menus_root(self)
    @api.model@tools.ormcache_context('self._uid', keys=('lang', 'force_action'))

New fields (8)
  • controller_page_ids One2many → website.controller.page
    args: 'website.controller.page', 'view_id'
  • first_page_id Many2one → website.page
    compute='_compute_first_page_id' help='First page linked to this view' string='Website Page' args: 'website.page'
  • page_ids One2many → website.page
    args: 'website.page', 'view_id'
  • track Boolean
    default=False help='Allow to specify for one page of the website to be trackable or not' string='Track'
  • visibility Selection
    default='' args: [('', 'All'), ('connected', 'Signed In'), ('restricted_group', 'Restricted Group'), ('password', 'With Password')]
  • visibility_password Char
    copy=False groups='base.group_system'
  • visibility_password_display Char
    compute='_get_pwd' groups='website.group_website_designer' inverse='_set_pwd'
  • website_id Many2one → website
    ondelete='cascade' string='Website' args: 'website'
Public methods (8)
  • create(self, vals_list)
    @api.model_create_multi
    SOC for ir.ui.view creation. If a view is created without a website_id, it should get one if one is present in the context. Also check that an explicit website_id in create values matches the one in the context.
  • filter_duplicate(self)
    Filter current recordset only keeping the most suitable view per distinct key. Every non-accessible view will be removed from the set: * In non website context, every view with a website will be removed * In a website context, every view from another website
  • get_default_lang_code(self)
    @api.model
  • get_related_views(self, key, bundles=False)
    @api.model
    Make this only return most specific views for website.
  • get_view_hierarchy(self)
  • save(self, value, xpath=None)
  • unlink(self)
    This implements COU (copy-on-unlink). When deleting a generic page website-specific pages will be created so only the current website is affected.
  • write(self, vals)
    COW for ir.ui.view. This way editing websites does not impact other websites. Also this way newly created websites will only contain the default views.

New fields (1)
  • theme_template_id Many2one → theme.ir.ui.view
    copy=False args: 'theme.ir.ui.view'
Public methods (1)
  • write(self, vals)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • website_id Many2one → website
    compute='_compute_website_id' store=True args: 'website'
Public methods (3)
  • action_open_website_theme_selector(self)
    @api.model
  • google_map_img(self, zoom=8, width=298, height=298)
  • google_map_link(self, zoom=8)

New fields (29)
  • auth_signup_uninvited Selection
    compute='_compute_auth_signup_uninvited' config_parameter=False default=None inverse='_inverse_auth_signup_uninvited'
  • cdn_activated Boolean
    readonly=False related='website_id.cdn_activated'
  • cdn_filters Text
    readonly=False related='website_id.cdn_filters'
  • cdn_url Char
    readonly=False related='website_id.cdn_url'
  • favicon Binary
    readonly=False related='website_id.favicon' args: 'Favicon'
  • google_analytics_key Char
    readonly=False related='website_id.google_analytics_key' args: 'Google Analytics Key'
  • google_search_console Char
    readonly=False related='website_id.google_search_console' args: 'Google Search Console'
  • group_multi_website Boolean
    implied_group='website.group_multi_website' args: 'Multi-website'
  • has_default_share_image Boolean
    compute='_compute_has_default_share_image' inverse='_inverse_has_default_share_image' args: 'Use a image by default for sharing'
  • has_google_analytics Boolean
    compute='_compute_has_google_analytics' inverse='_inverse_has_google_analytics' args: 'Google Analytics'
  • has_google_search_console Boolean
    compute='_compute_has_google_search_console' inverse='_inverse_has_google_search_console' args: 'Console Google Search'
  • has_plausible_shared_key Boolean
    compute='_compute_has_plausible_shared_key' inverse='_inverse_has_plausible_shared_key' args: 'Plausible Analytics'
  • language_ids Many2many
    readonly=False related='website_id.language_ids' relation='res.lang'
  • module_marketing_automation Boolean
  • module_website_livechat Boolean
  • plausible_shared_key Char
    readonly=False related='website_id.plausible_shared_key' args: 'Plausible auth Key'
  • plausible_site Char
    readonly=False related='website_id.plausible_site' args: 'Plausible Site (e.g. domain.com)'
  • shared_user_account Boolean
    compute='_compute_shared_user_account' inverse='_inverse_shared_user_account' string='Shared Customer Accounts'
  • social_default_image Binary
    readonly=False related='website_id.social_default_image' args: 'Default Social Share Image'
  • website_company_id Many2one
    readonly=False related='website_id.company_id' string='Website Company'
  • website_cookies_bar Boolean
    readonly=False related='website_id.cookies_bar'
  • website_default_lang_code Char
    readonly=False related='website_id.default_lang_id.code' args: 'Default language code'
  • website_default_lang_id Many2one
    readonly=False related='website_id.default_lang_id' string='Default language'
  • website_domain Char
    readonly=False related='website_id.domain' args: 'Website Domain'
  • website_homepage_url Char
    readonly=False related='website_id.homepage_url'
  • website_id Many2one → website
    default=_default_website ondelete='cascade' string='website' args: 'website'
  • website_language_count Integer
    readonly=True related='website_id.language_count' string='Number of languages'
  • website_logo Binary
    readonly=False related='website_id.logo'
  • website_name Char
    readonly=False related='website_id.name' args: 'Website Name'
Public methods (3)
  • action_open_robots(self)
  • action_ping_sitemap(self)
  • action_website_create_new(self)

New fields (0)

No new fields.

Public methods (3)
  • action_activate_langs(self)
    Open wizard to install language(s), so user can select the website(s) to translate in that language.
  • get_available(self)
    @api.model@tools.ormcache_context(keys=('website_id'))
  • write(self, vals)

New fields (1)
  • visitor_ids One2many → website.visitor
    string='Visitors' args: 'website.visitor', 'partner_id'
Public methods (2)
  • google_map_img(self, zoom=8, width=298, height=298)
  • google_map_link(self, zoom=10)

New fields (1)
  • website_id Many2one → website
    readonly=False related='partner_id.website_id' related_sudo=False store=True args: 'website'
Public methods (1)
  • authenticate(cls, db, login, password, user_agent_env)
    @classmethod
    Override to link the logged in user's res.partner to website.visitor. If a visitor already exists for that user, assign it data from the current anonymous visitor (if exists). Purpose is to try to aggregate as much sub-records (tracked pages, leads, ...) as possible.

New fields (9)
  • active Boolean
    default=True
  • bundle Char
    required=True
  • copy_ids One2many → ir.asset
    copy=False readonly=True args: 'ir.asset', 'theme_template_id', 'Assets using a copy of me'
  • directive Selection
    default=APPEND_DIRECTIVE selection=[(APPEND_DIRECTIVE, 'Append'), (PREPEND_DIRECTIVE, 'Prepend'), (AFTER_DIRECTIVE, 'After'), (BEFORE_DIRECTIVE, 'Before'), (REMOVE_DIRECTIVE, 'Remove'), (REPLACE_DIRECTIVE, 'Replace'), (INCLUDE_DIRECTIVE, 'Include')]
  • key Char
  • name Char
    required=True
  • path Char
    required=True
  • sequence Integer
    default=DEFAULT_SEQUENCE required=True
  • target Char
Public methods (0)

No public methods.

New fields (4)
  • copy_ids One2many → ir.attachment
    copy=False readonly=True args: 'ir.attachment', 'theme_template_id', 'Attachment using a copy of me'
  • key Char
    required=True
  • name Char
    required=True
  • url Char
Public methods (0)

No public methods.

New fields (11)
  • active Boolean
    default=True
  • arch Text
    translate=xml_translate
  • arch_fs Char
    default=compute_arch_fs
  • copy_ids One2many → ir.ui.view
    copy=False readonly=True args: 'ir.ui.view', 'theme_template_id', 'Views using a copy of me'
  • customize_show Boolean
  • inherit_id Reference
    selection=[('ir.ui.view', 'ir.ui.view'), ('theme.ir.ui.view', 'theme.ir.ui.view')]
  • key Char
  • mode Selection
    args: [('primary', 'Base view'), ('extension', 'Extension View')]
  • name Char
    required=True
  • priority Integer
    default=DEFAULT_SEQUENCE required=True
  • type Char
Public methods (1)
  • compute_arch_fs(self)

New fields (0)

No new fields.

Public methods (4)
  • disable_asset(self, name)
    @api.model
  • disable_view(self, xml_id)
    @api.model
  • enable_asset(self, name)
    @api.model
  • enable_view(self, xml_id)
    @api.model

New fields (10)
  • copy_ids One2many → website.menu
    copy=False readonly=True args: 'website.menu', 'theme_template_id', 'Menu using a copy of me'
  • mega_menu_classes Char
  • mega_menu_content Html
  • name Char
    required=True translate=True
  • new_window Boolean
    args: 'New Window'
  • page_id Many2one → theme.website.page
    ondelete='cascade' args: 'theme.website.page'
  • parent_id Many2one → theme.website.menu
    index=True ondelete='cascade' args: 'theme.website.menu'
  • sequence Integer
  • url Char
    default=''
  • use_main_menu_as_parent Boolean
    default=True
Public methods (0)

No public methods.

New fields (9)
  • copy_ids One2many → website.page
    copy=False readonly=True args: 'website.page', 'theme_template_id', 'Page using a copy of me'
  • footer_visible Boolean
    default=True
  • header_color Char
  • header_overlay Boolean
  • header_visible Boolean
    default=True
  • is_published Boolean
  • url Char
  • view_id Many2one → theme.ir.ui.view
    ondelete='cascade' required=True args: 'theme.ir.ui.view'
  • website_indexed Boolean
    default=True args: 'Page Indexed'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • make_scss_customization(self, url, values)
    @api.model
    Makes a scss customization of the given file. That file must contain a scss map including a line comment containing the word 'hook', to indicate the location where to write the new key,value pairs. Params: url (str): the URL of the scss file to customize (supposed to be a variable file which will appear in the assets_frontend bundle) values (dict): key,value mapping to integrate in the file's map (containing the word hook). If a key is already in the file's map, its value is overridden.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (39)
  • auth_signup_uninvited Selection
    default='b2b' string='Customer Account' args: [('b2b', 'On invitation'), ('b2c', 'Free sign up')]
  • auto_redirect_lang Boolean
    default=True help="Should users be redirected to their browser's language" args: 'Autoredirect Language'
  • cdn_activated Boolean
    args: 'Content Delivery Network (CDN)'
  • cdn_filters Text
    default=<expr> help='URL matching those filters will be rewritten using the CDN Base URL' args: 'CDN Filters'
  • cdn_url Char
    default='' args: 'CDN Base URL'
  • company_id Many2one → res.company
    default=<expr> required=True string='Company' args: 'res.company'
  • configurator_done Boolean
    help='True if configurator has been completed or ignored'
  • cookies_bar Boolean
    help='Display a customizable cookies bar on your website.' args: 'Cookies Bar'
  • custom_code_footer Html
    sanitize=False args: 'Custom end of <body> code'
  • custom_code_head Html
    sanitize=False args: 'Custom <head> code'
  • default_lang_id Many2one → res.lang
    default=_default_language required=True string='Default Language' args: 'res.lang'
  • domain Char
    help='E.g. https://www.mydomain.com' args: 'Website Domain'
  • favicon Binary
    default=_default_favicon help='This field holds the image used to display a favicon on the website.' string='Website Favicon'
  • google_analytics_key Char
    args: 'Google Analytics Key'
  • google_maps_api_key Char
    args: 'Google Maps API Key'
  • google_search_console Char
    help='Google key, or Enable to access first reply'
  • has_social_default_image Boolean
    compute='_compute_has_social_default_image' store=True
  • homepage_url Char
    help='E.g. /contactus or /shop'
  • language_count Integer
    compute='_compute_language_count' args: 'Number of languages'
  • language_ids Many2many → res.lang
    default=_active_languages required=True string='Languages' args: 'res.lang', 'website_lang_rel', 'website_id', 'lang_id'
  • logo Binary
    default=_default_logo help='Display this logo on the website.' args: 'Website Logo'
  • menu_id Many2one → website.menu
    compute='_compute_menu' string='Main Menu' args: 'website.menu'
  • name Char
    required=True args: 'Website Name'
  • partner_id Many2one
    readonly=False related='user_id.partner_id' string='Public Partner'
  • plausible_shared_key Char
  • plausible_site Char
  • robots_txt Html
    groups='website.group_website_designer' sanitize=False translate=False args: 'Robots.txt'
  • sequence Integer
    default=10
  • social_default_image Binary
    help='If set, replaces the website logo as the default social share image.' string='Default Social Share Image'
  • social_facebook Char
    default=_default_social_facebook args: 'Facebook Account'
  • social_github Char
    default=_default_social_github args: 'GitHub Account'
  • social_instagram Char
    default=_default_social_instagram args: 'Instagram Account'
  • social_linkedin Char
    default=_default_social_linkedin args: 'LinkedIn Account'
  • social_tiktok Char
    default=_default_social_tiktok args: 'TikTok Account'
  • social_twitter Char
    default=_default_social_twitter args: 'Twitter Account'
  • social_youtube Char
    default=_default_social_youtube args: 'Youtube Account'
  • specific_user_account Boolean
    help='If True, new accounts will be associated to the current website' args: 'Specific User Account'
  • theme_id Many2one → ir.module.module
    help='Installed theme' args: 'ir.module.module'
  • user_id Many2one → res.users
    required=True string='Public User' args: 'res.users'
Public methods (36)
  • action_dashboard_redirect(self)
    @api.model
  • button_go_website(self, path='/', mode_edit=False)
  • configurator_apply(self, **kwargs)
    @api.model
  • configurator_get_footer_links(self)
  • configurator_init(self)
    @api.model
  • configurator_missing_industry(self, unknown_industry)
    @api.model
  • configurator_recommended_themes(self, industry_id, palette)
    @api.model
  • configurator_set_menu_links(self, menu_company, module_data)
  • configurator_skip(self)
    @api.model
  • copy_menu_hierarchy(self, top_menu)
  • create(self, vals_list)
    @api.model_create_multi
  • create_and_redirect_configurator(self)
  • get_cdn_url(self, uri)
  • get_client_action(self, url, mode_edit=False, website_id=False)
  • get_client_action_url(self, url, mode_edit=False)
  • get_cta_data(self, website_purpose, website_type)
  • get_current_website(self, fallback=True)
    @api.model
    The current website is returned in the following order: - the website forced in session `force_website_id` - the website set in context - (if frontend or fallback) the website matching the request's "domain" - arbitrary the first website found in the database if `fallback` is set to `True` - empty browse record
  • get_suggested_controllers(self)
    Returns a tuple (name, url, icon). Where icon can be a module name, or a path
  • get_template(self, template)
    @api.model
  • get_theme_configurator_snippets(self, theme_name)
    @api.model
  • get_unique_key(self, string, template_module=False)
    Given a string, return an unique key including module prefix. It will be suffixed by a counter if it already exists to garantee uniqueness. :param string : the key to be checked for uniqueness, you can pass it with 'website.' or not :param template_module : the module to be prefixed on the key, if not set, we will use website
  • get_unique_path(self, page_url)
    Given an url, return that url suffixed by counter if it already exists :param page_url : the url to be checked for uniqueness
  • get_website_page_ids(self)
  • image_url(self, record, field, size=None)
    @api.model
    Returns a local url that points to the image field of a given browse record.
  • is_menu_cache_disabled(self)
    @tools.ormcache('self.env.uid', 'self.id', cache='templates')
    Checks if the website menu contains a record like url. :return: True if the menu contains a record like url
  • is_public_user(self)
    @api.model
  • is_view_active(self, key)
    @api.model@tools.ormcache('key', 'self._context.get("website_id")', cache='templates')
    Return True if active, False if not active, None if not found
  • new_page(self, name=False, add_menu=False, template='website.default_page', ispage=True, namespace=None, page_values=None, menu_values=None, sections_arch=None)
    @api.model
    Create a new website page, and assign it a xmlid based on the given one :param name: the name of the page :param add_menu: if True, add a menu for that page :param template: potential xml_id of the page to create :param namespace: module part of the xml_id if none, the template module name is used :param page_values: default values for the page to be created :param menu_values: default values for the menu to be created :param sections_arch: HTML content of sections
  • pager(self, url, total, page=1, step=30, scope=5, url_args=None)
    @api.model
  • rule_is_enumerable(self, rule)
    Checks that it is possible to generate sensible GET queries for a given rule (if the endpoint matches its own requirements) :type rule: werkzeug.routing.Rule :rtype: bool
  • search_pages(self, needle=None, limit=None)
  • search_url_dependencies(self, res_model, res_ids)
    @api.model
    Search dependencies just for information. It will not catch 100% of dependencies and False positive is more than possible Each module could add dependences in this dict :returns a dictionnary where key is the 'categorie' of object related to the given view, and the value is the list of text and link to the resource using given page
  • unlink(self)
  • viewref(self, view_id, raise_if_not_found=True)
    @api.model
    Given an xml_id or a view_id, return the corresponding view record. In case of website context, return the most specific one. If no website_id is in the context, it will return the generic view, instead of a random one like `_get_view_id`. Look also for archived views, no matter the context. :param view_id: either a string xml_id or an integer view_id :param raise_if_not_found: should the method raise an error if no view found :return: The view record or empty recordset
  • website_domain(self, website_id=False)
    @api.model
  • write(self, values)

New fields (11)
  • description Char
    translate=True
  • feature_url Char
  • iap_page_code Char
    help='Page code used to tell IAP website_service for which page a snippet list should be generated'
  • icon Char
  • menu_company Boolean
    help='If set, add the menu as a second level menu, as a child of "Company" menu.'
  • menu_sequence Integer
    help='If set, a website menu will be created for the feature.'
  • module_id Many2one → ir.module.module
    ondelete='cascade' args: 'ir.module.module'
  • name Char
    translate=True
  • page_view_id Many2one → ir.ui.view
    ondelete='cascade' args: 'ir.ui.view'
  • sequence Integer
  • website_config_preselection Char
    help='Comma-separated list of website type/purpose for which this feature should be pre-selected'
Public methods (0)

No public methods.

New fields (8)
  • default_layout Selection
    default='grid' selection=[('grid', 'Grid'), ('list', 'List')]
  • menu_ids One2many → website.menu
    args: 'website.menu', 'controller_page_id', 'Related Menus'
  • name_slugified Char
    compute='_compute_name_slugified' help='The name of the page usable in a URL' store=True string='URL'
  • page_name Char
    help='The name is used to generate the URL and is shown in the browser title bar' required=True string='Name'
  • page_type Selection
    default='listing' help='The type of the page. If set, it indicates whether the page displays a list of records or a single record' selection=[('listing', 'Listing'), ('single', 'Single record')] string='Page Type'
  • record_domain Char
    help='Domain to restrict records that can be viewed publicly' string='Domain'
  • view_id Many2one → ir.ui.view
    ondelete='cascade' required=True string='View' args: 'ir.ui.view'
  • website_id Many2one
    ondelete='cascade' readonly=False related='view_id.website_id' store=True
Public methods (1)
  • unlink(self)

New fields (1)
  • cover_properties Text
    default=<expr> args: 'Cover Properties'
Public methods (1)
  • write(self, vals)

New fields (14)
  • child_id One2many → website.menu
    string='Child Menus' args: 'website.menu', 'parent_id'
  • controller_page_id Many2one → website.controller.page
    ondelete='cascade' args: 'website.controller.page', 'Related Model Page'
  • is_mega_menu Boolean
    compute=_compute_field_is_mega_menu inverse=_set_field_is_mega_menu
  • is_visible Boolean
    compute='_compute_visible' string='Is Visible'
  • mega_menu_classes Char
  • mega_menu_content Html
    prefetch=True sanitize=False translate=html_translate
  • name Char
    required=True translate=True args: 'Menu'
  • new_window Boolean
    args: 'New Window'
  • page_id Many2one → website.page
    ondelete='cascade' args: 'website.page', 'Related Page'
  • parent_id Many2one → website.menu
    index=True ondelete='cascade' args: 'website.menu', 'Parent Menu'
  • parent_path Char
    index=True unaccent=False
  • sequence Integer
    default=_default_sequence
  • url Char
    default='' args: 'Url'
  • website_id Many2one → website
    ondelete='cascade' args: 'website', 'Website'
Public methods (5)
  • create(self, vals_list)
    @api.model_create_multi
    In case a menu without a website_id is trying to be created, we duplicate it for every website. Note: Particularly useful when installing a module that adds a menu like /shop. So every website has the shop menu. Be careful to return correct record for ir.model.data xml_id in case of default main menus creation.
  • get_tree(self, website_id, menu_id=None)
    @api.model
  • save(self, website_id, data)
    @api.model
  • unlink(self)
  • write(self, values)

New fields (1)
  • theme_template_id Many2one → theme.website.menu
    copy=False args: 'theme.website.menu'
Public methods (0)

No public methods.

New fields (1)
  • website_id Many2one → website
    help='Restrict publishing to this website.' index=True ondelete='restrict' string='Website' args: 'website'
Public methods (1)
  • can_access_from_current_website(self, website_id=False)

New fields (15)
  • arch Text
    depends_context=('website_id') readonly=False related='view_id.arch'
  • date_publish Datetime
    args: 'Publishing Date'
  • footer_visible Boolean
    default=True
  • header_color Char
  • header_overlay Boolean
  • header_text_color Char
  • header_visible Boolean
    default=True
  • is_homepage Boolean
    compute='_compute_is_homepage' inverse='_set_is_homepage' string='Homepage'
  • is_in_menu Boolean
    compute='_compute_website_menu' inverse='_inverse_website_menu'
  • is_visible Boolean
    compute='_compute_visible' string='Is Visible'
  • menu_ids One2many → website.menu
    args: 'website.menu', 'page_id', 'Related Menus'
  • url Char
    required=True args: 'Page URL'
  • view_id Many2one → ir.ui.view
    ondelete='cascade' required=True string='View' args: 'ir.ui.view'
  • website_id Many2one
    ondelete='cascade' readonly=False related='view_id.website_id' store=True
  • website_indexed Boolean
    default=True args: 'Is Indexed'
Public methods (6)
  • action_page_debug_view(self)
  • clone_page(self, page_id, page_name=None, clone_menu=True)
    @api.model
    Clone a page, given its identifier :param page_id : website.page identifier
  • copy(self, default=None)
    @api.returns('self', <expr>)
  • get_website_meta(self)
  • unlink(self)
  • write(self, vals)

New fields (1)
  • theme_template_id Many2one → theme.website.page
    copy=False args: 'theme.website.page'
Public methods (0)

No public methods.

New fields (4)
  • can_publish Boolean
    compute='_compute_can_publish' args: 'Can Publish'
  • is_published Boolean
    copy=False default=<expr> index=True args: 'Is Published'
  • website_published Boolean
    readonly=False related='is_published' args: 'Visible on current website'
  • website_url Char
    compute='_compute_website_url' help='The full URL to access the document through the website.' args: 'Website URL'
Public methods (5)
  • create(self, vals_list)
    @api.model_create_multi
  • create_and_get_website_url(self, **kwargs)
  • open_website_url(self)
  • website_publish_button(self)
  • write(self, values)

New fields (8)
  • active Boolean
    default=True
  • name Char
    required=True args: 'Name'
  • redirect_type Selection
    default='302' help="Type of redirect/Rewrite:\n\n 301 Moved permanently: The browser will keep in cache the new url.\n 302 Moved temporarily: The browser will not keep in cache the new url and ask again the next time the new url.\n 404 Not Found: If you want remove a specific page/controller (e.g. Ecommerce is installed, but you don't want /shop on a specific website)\n 308 Redirect / Rewrite: If you want rename a controller with a new url. (Eg: /shop -> /garden - Both url will be accessible but /shop will automatically be redirected to /garden)\n " string='Action' args: [('404', '404 Not Found'), ('301', '301 Moved permanently'), ('302', '302 Moved temporarily'), ('308', '308 Redirect / Rewrite')]
  • route_id Many2one → website.route
    args: 'website.route'
  • sequence Integer
  • url_from Char
    index=True args: 'URL from'
  • url_to Char
    args: 'URL to'
  • website_id Many2one → website
    index=True ondelete='cascade' string='Website' args: 'website'
Public methods (4)
  • create(self, vals_list)
    @api.model_create_multi
  • refresh_routes(self)
  • unlink(self)
  • write(self, vals)

New fields (1)
  • content Text
    default=<expr>
Public methods (1)
  • action_save(self)

New fields (1)
  • path Char
    args: 'Route'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (6)
  • is_seo_optimized Boolean
    compute='_compute_is_seo_optimized' args: 'SEO optimized'
  • seo_name Char
    prefetch=True translate=True args: 'Seo name'
  • website_meta_description Text
    prefetch='website_meta' translate=True args: 'Website meta description'
  • website_meta_keywords Char
    prefetch='website_meta' translate=True args: 'Website meta keywords'
  • website_meta_og_img Char
    args: 'Website opengraph image'
  • website_meta_title Char
    prefetch='website_meta' translate=True args: 'Website meta title'
Public methods (1)
  • get_website_meta(self)
    This method will return final meta information. It will replace default values with user's custom value (if user modified it from the seo popup of frontend) This method is not meant for overridden. To customize meta values override `_default_website_meta` method instead of this method. This method only replaces user custom values in defaults.

New fields (7)
  • action_server_id Many2one → ir.actions.server
    ondelete='cascade' args: 'ir.actions.server', 'Server Action'
  • field_names Char
    help='A list of comma-separated field names' required=True
  • filter_id Many2one → ir.filters
    ondelete='cascade' args: 'ir.filters', 'Filter'
  • limit Integer
    help='The limit is the maximum number of records retrieved' required=True
  • model_name Char
    compute='_compute_model_name' string='Model name'
  • name Char
    required=True translate=True
  • website_id Many2one → website
    ondelete='cascade' string='Website' args: 'website'
Public methods (0)

No public methods.

New fields (4)
  • page_id Many2one → website.page
    index=True ondelete='cascade' readonly=True args: 'website.page'
  • url Text
    index=True args: 'Url'
  • visit_datetime Datetime
    default=fields.Datetime.now readonly=True required=True args: 'Visit Date'
  • visitor_id Many2one → website.visitor
    index=True ondelete='cascade' readonly=True required=True args: 'website.visitor'
Public methods (0)

No public methods.

New fields (21)
  • access_token Char
    copy=False default=_get_access_token required=True
  • country_flag Char
    related='country_id.image_url' string='Country Flag'
  • country_id Many2one → res.country
    readonly=True args: 'res.country', 'Country'
  • create_date Datetime
    readonly=True args: 'First Connection'
  • email Char
    compute='_compute_email_phone' compute_sudo=True string='Email'
  • is_connected Boolean
    compute='_compute_time_statistics' help='A visitor is considered as connected if his last page view was within the last 5 minutes.' args: 'Is connected?'
  • lang_id Many2one → res.lang
    help='Language from the website when visitor has been created' string='Language' args: 'res.lang'
  • last_connection_datetime Datetime
    default=fields.Datetime.now help='Last page view date' readonly=True args: 'Last Connection'
  • last_visited_page_id Many2one → website.page
    compute='_compute_last_visited_page_id' string='Last Visited Page' args: 'website.page'
  • mobile Char
    compute='_compute_email_phone' compute_sudo=True string='Mobile'
  • name Char
    related='partner_id.name' args: 'Name'
  • page_count Integer
    compute='_compute_page_statistics' help='Total number of tracked page visited' args: '# Visited Pages'
  • page_ids Many2many → website.page
    compute='_compute_page_statistics' groups='website.group_website_designer' search='_search_page_ids' string='Visited Pages' args: 'website.page'
  • partner_id Many2one → res.partner
    compute='_compute_partner_id' help='Partner of the last logged in user.' index='btree_not_null' store=True string='Contact' args: 'res.partner'
  • partner_image Binary
    related='partner_id.image_1920'
  • time_since_last_action Char
    compute='_compute_time_statistics' help='Time since last page view. E.g.: 2 minutes ago' args: 'Last action'
  • timezone Selection
    string='Timezone' args: _tz_get
  • visit_count Integer
    default=1 help='A new visit is considered if last connection was more than 8 hours ago.' readonly=True args: '# Visits'
  • visitor_page_count Integer
    compute='_compute_page_statistics' help='Total number of visits on tracked pages' args: 'Page Views'
  • website_id Many2one → website
    readonly=True args: 'website', 'Website'
  • website_track_ids One2many → website.track
    readonly=True string='Visited Pages History' args: 'website.track', 'visitor_id'
Public methods (1)
  • action_send_mail(self)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/16.0/website
VERSION
VERSION 1.0
CATEGORY
CATEGORYWebsite/Website
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
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, Mohammed Shekha, Nicolas Lempereur, Géry Debongnie, Aaron Bohy, Jeremy Kersten, GitHub, Damien Bouvy, Barad Mahendra, Wolfgang Taferner, Yannick Tivisse, qsm-odoo, SEINLET Nicolas, Pierre Masereel, Romain Derie, Adrien Dieudonne, Christophe Monniez, Jorge Pinna Puissant, Lucas Perais, Julien Castiaux, Aurélien Warnon, Xavier-Do, Romeo Fragomeli, Victor Feyens, Adrien Dieudonné, Paul Morelle, Loan (lse), Sébastien Theys, alt-odoo, Julien Mougenot, Samuel Degueldre, std-odoo, Achraf (abz), Ivan Yelizariev, Nasreddin Boulif (bon), Tiffany Chang (tic), Rémy Voet (ryv), Gorash, Younn Olivier, Pierre Paridans, Kamen Zhekov, William Braeckman, Romain Estievenart, Benjamin Vray, Kishan Gajjar, Arnaud Baes, roen-odoo, Benoit Socias, Stanislas Sobieski, pedrambiria, Guillaume (gdi), Florian Damhaut, diagnoza, Krzysztof Magusiak, Sébastien Mottet (oms), Huy Le, Antoine Guenet, Arthur Detroux (ard), Florian Charlier, Patrick Hoste, Walid HANNICHE (waha), Abdelouahab (abla), Nicolas Bayet, Antoine Vandevenne (anv), Thibault Libioulle, Jinjiu Liu, Mathieu Walravens, Federico (fega), luvi, Fabio Barbero, Cocographique, Julien Banken, Francois (fge), Thomas Lefebvre (thle), Louis Wicket (wil), nda, Julien (jula), Mahamadasif Ansari, Gauthier Wala (gawa), Tom De Caluwé, Pierre-Yves Dufays, Saurabh Mishra, Om Rabara, Huy Lee, Soukéina Bojabza, Robin Lejeune (role), xO-Tx, Louis (loco), Levi Siuzdak (sile), Maruan Aguerdouh (magm), Antoine Dupuis (andu), Dylan Kiss (dyki), Jinane Maksoud, Sébastien Geelen (sge), Bruno Boi, flvr-odoo, FrancoisGe, Michael (mcm), Chong Wang (cwg), Simon Goffaux (sigo), bram1000, stcc-odoo, Brieuc-brd, Adesh Jolhe, Renilkumar Kajavadra, divy-odoo, Mahdi Cheikh Rouhou (macr), Deependra Solanki, stefanorigano (SRI), Benjamin Hanquin (beha), Mohamed Lamine LALMI, mizosoft, Mehdi Outagant (MOU), David Ramia, Rodopho Cammarosano de Lima (rcdl), Guillaume-gdi, Serge Bayet (seba), Sahil patel, Nguyen Hong Quang, Tran Truong Son, Rithwik, Jérémy Hennecart (jeh), AMZIL Ayoub, Julien Carion (juca), Martin Trigaux (mat), smna-odoo, Adnan Saiyed, Rodolpho Lima, utag-odoo, Junqi Wu, Sanjay Sharma, Xavier Luyckx (xlu), Antoine (anso), LuCastagne, Aleksandar Gajic, antonag32, VAN BOSSUYT Nicolas, Rahil Ghanchi, panv-odoo, paru-odoo, Mohammed Basioni, Sébastien (blse), LauraCForgeFlow, Pierre Pulinckx (PIPU), Evgeniia Kotova, Denis Rygaert, Leonardo J. Caballero G, Arib Ansari, Jonathan Castillo (jcs)
WEBSITE
WEBSITEhttps://www.odoo.com/app/website
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:47
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - digest
    - mail
    - base
    - base_setup
    - web
    - bus
    - web_tour
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - resource
    - social_media
    - google_recaptcha
    - utm
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (285)
XML IDNameModelTypeStatus
404_plausible Plausible 404 ir.ui.view qweb Inherits http_routing.404
action_website_rewrite_tree website.rewrite.list website.rewrite tree New
asset_view_form_inherit_website ir.asset.form.inherit.website ir.asset field Inherits base.asset_view_form
asset_view_tree_inherit_website ir.asset.tree.inherit.website ir.asset field Inherits base.asset_view_tree
brand_promotion Brand Promotion ir.ui.view qweb Inherits web.brand_promotion
bs_debug_view BS Debug t New
color_combinations_debug_view Color Combinations Debug t New
cookie_policy Cookie Policy ir.ui.view qweb New
cookies_bar Cookies Bar ir.ui.view qweb Inherits website.layout
custom_code_layout Custom Code Layout ir.ui.view qweb Inherits website.layout
default_css default_css ir.ui.view qweb New
default_csv default_csv ir.ui.view qweb New
default_js default_js ir.ui.view qweb New
default_less default_less ir.ui.view qweb New
default_page default_page ir.ui.view qweb New
default_scss default_scss ir.ui.view qweb New
default_xml default_xml ir.ui.view qweb New
dynamic_snippet_carousel_options_template dynamic_snippet_carousel_options_template ir.ui.view qweb New
external_snippets external_snippets ir.ui.view qweb Inherits website.snippets
footer_copyright_company_name footer_copyright_company_name ir.ui.view qweb Inherits website.layout
footer_custom Default ir.ui.view qweb Inherits website.layout
footer_language_selector_flag Footer Language Selector Flag ir.ui.view qweb Inherits portal.footer_language_selector
footer_language_selector_inline Footer Language Selector Inline ir.ui.view qweb Inherits portal.footer_language_selector
footer_language_selector_no_text Footer Language Selector No Text ir.ui.view qweb Inherits portal.footer_language_selector
footer_no_copyright Footer No Copyright ir.ui.view qweb Inherits website.layout
header_hoverable_dropdown Header Hoverable Dropdown ir.ui.view qweb Inherits website.layout
header_language_selector Header Language Selector ir.ui.view qweb Inherits website.placeholder_header_language_selector
header_language_selector_flag Header Language Selector Flag ir.ui.view qweb Inherits website.header_language_selector
header_language_selector_inline Header Language Selector Inline ir.ui.view qweb Inherits website.header_language_selector
header_language_selector_no_text Header Language Selector No Text ir.ui.view qweb Inherits website.header_language_selector
header_navbar_pills_style Navbar Links Style ir.ui.view qweb Inherits website.navbar_nav
header_visibility_disappears Header Effect Disappears ir.ui.view qweb Inherits website.layout
header_visibility_fade_out Header Effect Fade Out ir.ui.view qweb Inherits website.layout
header_visibility_fixed Header Effect Fixed ir.ui.view qweb Inherits website.layout
header_visibility_standard Header Visibility Standard ir.ui.view qweb Inherits website.layout
iframefallback iframefallback ir.ui.view qweb Inherits web.layout
ir_model_fields_view website.ir.model.fields.view.form ir.model.fields xpath Inherits base.view_model_fields_form
ir_model_view website.ir.model.view.form ir.model xpath Inherits base.view_model_form
lang_flag Language Flag ir.ui.view qweb New
language_selector language_selector ir.ui.view qweb Inherits portal.language_selector
language_selector_add_language language_selector_add_language ir.ui.view qweb New
language_selector_inline language_selector_inline ir.ui.view qweb Inherits website.language_selector
layout Main layout ir.ui.view qweb Inherits portal.frontend_layout
list_hybrid Any Search Results ir.ui.view qweb New
list_website_public_pages Website Pages ir.ui.view qweb New
login_layout Website Login Layout ir.ui.view qweb Inherits web.login_layout
menu_search website.menu.search website.menu search New
menu_tree website.menu.tree website.menu tree New
navbar Navbar ir.ui.view qweb New
navbar_nav Navbar Nav ir.ui.view qweb New
navbar_toggler Navbar Toggler ir.ui.view qweb New
no_autohide_menu no_autohide_menu ir.ui.view qweb Inherits website.layout
one_hybrid Single any Search Results ir.ui.view qweb New
option_footer_scrolltop option_footer_scrolltop ir.ui.view qweb Inherits website.layout
option_header_brand_logo Header Brand Logo ir.ui.view qweb Inherits website.placeholder_header_brand
option_header_brand_name Header Brand Name ir.ui.view qweb Inherits website.placeholder_header_brand
option_header_no_mobile_hamburger option_header_no_mobile_hamburger ir.ui.view qweb Inherits website.navbar
option_header_off_canvas Off-Canvas Header ir.ui.view qweb Inherits website.navbar_nav
option_header_off_canvas_logo_show Show Logo (Off-Canvas) ir.ui.view qweb Inherits website.option_header_off_canvas
option_header_off_canvas_template_header_hamburger option_header_off_canvas_template_header_hamburger ir.ui.view qweb Inherits website.template_header_hamburger
option_header_off_canvas_template_header_hamburger_full option_header_off_canvas_template_header_hamburger_full ir.ui.view qweb Inherits website.template_header_hamburger_full
option_header_off_canvas_template_header_sidebar option_header_off_canvas_template_header_sidebar ir.ui.view qweb Inherits website.template_header_sidebar
option_layout_hide_header option_layout_hide_header ir.ui.view qweb Inherits website.layout
page_404 Page Not Found ir.ui.view qweb New
pager Pager ir.ui.view qweb Inherits portal.pager
placeholder_header_brand Placeholder Header Brand ir.ui.view qweb New
placeholder_header_language_selector Placeholder Header Language Selector ir.ui.view qweb New
pricing Pricing ir.ui.view qweb New
privacy_policy Privacy Policy ir.ui.view qweb New
protected_403 Page Protected ir.ui.view qweb New
publish_management publish_management ir.ui.view qweb New
qweb_500 qweb_500 ir.ui.view qweb Inherits http_routing.500
record_cover record_cover ir.ui.view qweb New
report_viewhierarchy_children report_viewhierarchy_children ir.ui.view qweb New
res_config_settings_view_form res.config.settings.view.form.inherit.website res.config.settings xpath Inherits base.res_config_settings_view_form
res_config_settings_view_form_inherit_auth_signup res.config.settings.view.form.inherit.website res.config.settings xpath Inherits auth_signup.res_config_settings_view_form
reset_view_arch_wizard_view reset.view.arch.wizard field Inherits base.reset_view_arch_wizard_view
robots robots ir.ui.view qweb New
s_alert Alert ir.ui.view qweb New
s_alert_options s_alert_options ir.ui.view qweb Inherits website.snippet_options
s_badge Badge ir.ui.view qweb New
s_badge_options s_badge_options ir.ui.view qweb Inherits website.snippet_options
s_banner Banner ir.ui.view qweb New
s_blockquote Blockquote ir.ui.view qweb New
s_blockquote_options s_blockquote_options ir.ui.view qweb Inherits website.snippet_options
s_call_to_action Call to Action ir.ui.view qweb New
s_card Card ir.ui.view qweb New
s_carousel Carousel ir.ui.view qweb New
s_chart Chart ir.ui.view qweb New
s_chart_options s_chart_options ir.ui.view qweb Inherits website.snippet_options
s_color_blocks_2 Big Boxes ir.ui.view qweb New
s_company_team Team ir.ui.view qweb New
s_comparisons Comparisons ir.ui.view qweb New
s_countdown Countdown ir.ui.view qweb New
s_countdown_options s_countdown_options ir.ui.view qweb Inherits website.snippet_options
s_cover Cover ir.ui.view qweb New
s_dynamic_snippet Dynamic Snippet ir.ui.view qweb New
s_dynamic_snippet_carousel Dynamic Carousel ir.ui.view qweb New
s_dynamic_snippet_carousel_options s_dynamic_snippet_carousel_options ir.ui.view qweb Inherits website.snippet_options
s_dynamic_snippet_options s_dynamic_snippet_options ir.ui.view qweb Inherits website.snippet_options
s_embed_code Embed Code ir.ui.view qweb New
s_embed_code_options s_embed_code_options ir.ui.view qweb Inherits website.snippet_options
s_facebook_page Facebook ir.ui.view qweb New
s_facebook_page_options s_facebook_page_options ir.ui.view qweb Inherits website.snippet_options
s_faq_collapse Accordion ir.ui.view qweb New
s_faq_collapse_options s_faq_collapse_options ir.ui.view qweb Inherits website.snippet_options
s_features Features ir.ui.view qweb New
s_features_grid Features Grid ir.ui.view qweb New
s_google_map Google Map ir.ui.view qweb New
s_google_map_options s_google_map_options ir.ui.view qweb Inherits website.snippet_options
s_hr Separator ir.ui.view qweb New
s_hr_options s_hr_options ir.ui.view qweb Inherits website.snippet_options
s_image_gallery Image Gallery ir.ui.view qweb New
s_image_gallery_options s_image_gallery_options ir.ui.view qweb Inherits website.snippet_options
s_image_text Image - Text ir.ui.view qweb New
s_images_wall Images Wall ir.ui.view qweb New
s_map Map ir.ui.view qweb New
s_map_options s_map_options ir.ui.view qweb Inherits website.snippet_options
s_masonry_block Masonry ir.ui.view qweb New
s_masonry_block_alternation_image_text_template s_masonry_block_alternation_image_text_template ir.ui.view qweb New
s_masonry_block_alternation_text_image_template s_masonry_block_alternation_text_image_template ir.ui.view qweb New
s_masonry_block_alternation_text_image_text_template s_masonry_block_alternation_text_image_text_template ir.ui.view qweb New
s_masonry_block_alternation_text_template s_masonry_block_alternation_text_template ir.ui.view qweb New
s_masonry_block_default_template s_masonry_block_default_template ir.ui.view qweb New
s_masonry_block_image_texts_image_template s_masonry_block_image_texts_image_template ir.ui.view qweb New
s_masonry_block_images_template s_masonry_block_images_template ir.ui.view qweb New
s_masonry_block_mosaic_template s_masonry_block_mosaic_template ir.ui.view qweb New
s_masonry_block_options s_masonry_block_options ir.ui.view qweb Inherits website.snippet_options
s_masonry_block_reversed_template s_masonry_block_reversed_template ir.ui.view qweb New
s_masonry_block_texts_image_texts_template s_masonry_block_texts_image_texts_template ir.ui.view qweb New
s_media_list Media List ir.ui.view qweb New
s_media_list_options s_media_list_options ir.ui.view qweb Inherits website.snippet_options
s_mega_menu_big_icons_subtitles Menu - Big icons & subtitles ir.ui.view qweb New
s_mega_menu_big_icons_subtitles_item s_mega_menu_big_icons_subtitles_item ir.ui.view qweb New
s_mega_menu_cards Menu - Cards ir.ui.view qweb New
s_mega_menu_cards_item s_mega_menu_cards_item ir.ui.view qweb New
s_mega_menu_images_subtitles Menu - images & subtitles ir.ui.view qweb New
s_mega_menu_images_subtitles_item s_mega_menu_images_subtitles_item ir.ui.view qweb New
s_mega_menu_little_icons Menu - Little icons ir.ui.view qweb New
s_mega_menu_menu_image_menu Menu - Image - Menu ir.ui.view qweb New
s_mega_menu_menus_logos Menus & logos ir.ui.view qweb New
s_mega_menu_multi_menus Multi-Menus ir.ui.view qweb New
s_mega_menu_odoo_menu Odoo Menu ir.ui.view qweb New
s_mega_menu_thumbnails Menu - Thumbnails ir.ui.view qweb New
s_mega_menu_thumbnails_item s_mega_menu_thumbnails_item ir.ui.view qweb New
s_numbers Numbers ir.ui.view qweb New
s_parallax Parallax ir.ui.view qweb New
s_picture Picture ir.ui.view qweb New
s_popup Popup ir.ui.view qweb New
s_popup_options s_popup_options ir.ui.view qweb Inherits website.snippet_options
s_process_steps Steps ir.ui.view qweb New
s_process_steps_options s_process_steps_options ir.ui.view qweb Inherits website.snippet_options
s_product_catalog Pricelist ir.ui.view qweb New
s_product_catalog_add_product_widget s_product_catalog_add_product_widget ir.ui.view qweb New
s_product_catalog_dish s_product_catalog_dish ir.ui.view qweb New
s_product_catalog_options s_product_catalog_options ir.ui.view qweb Inherits website.snippet_options
s_product_list Items ir.ui.view qweb New
s_progress_bar Progress Bar ir.ui.view qweb New
s_progress_bar_options s_progress_bar_options ir.ui.view qweb Inherits website.snippet_options
s_quotes_carousel Quotes ir.ui.view qweb New
s_rating Rating ir.ui.view qweb New
s_rating_options s_rating_options ir.ui.view qweb Inherits website.snippet_options
s_references References ir.ui.view qweb New
s_searchbar Search ir.ui.view qweb New
s_searchbar_input Search ir.ui.view qweb New
s_share Share ir.ui.view qweb New
s_showcase Showcase ir.ui.view qweb New
s_showcase_options s_showcase_options ir.ui.view qweb Inherits website.snippet_options
s_social_media Social Media ir.ui.view qweb New
s_social_media_options s_social_media_options ir.ui.view qweb Inherits website.snippet_options
s_table_of_content Table of Content ir.ui.view qweb New
s_table_of_content_options s_table_of_content_options ir.ui.view qweb Inherits website.snippet_options
s_tabs Tabs ir.ui.view qweb New
s_tabs_options s_tabs_options ir.ui.view qweb Inherits website.snippet_options
s_text_block Text ir.ui.view qweb New
s_text_highlight Text Highlight ir.ui.view qweb New
s_text_image Text - Image ir.ui.view qweb New
s_three_columns Columns ir.ui.view qweb New
s_timeline Timeline ir.ui.view qweb New
s_timeline_options s_timeline_options ir.ui.view qweb Inherits website.snippet_options
s_title Title ir.ui.view qweb New
s_website_form Form ir.ui.view qweb New
s_website_form_options s_website_form_options ir.ui.view qweb Inherits website.snippet_options
search_text_with_highlight Website Searchbox item highlight ir.ui.view qweb New
searchbar_input_snippet_options search bar snippet options ir.ui.view qweb Inherits website.snippet_options
show_website_info Show Odoo Information ir.ui.view qweb Inherits website.website_info
sitemap_index_xml sitemap_index_xml ir.ui.view qweb New
sitemap_locs sitemap_locs ir.ui.view qweb New
sitemap_xml sitemap_xml ir.ui.view qweb New
snippet_options snippet_options ir.ui.view qweb Inherits web_editor.snippet_options
snippet_options_background_options snippet_options_background_options ir.ui.view qweb Inherits web_editor.snippet_options_background_options
snippet_options_border_line_widgets snippet_options_border_line_widgets ir.ui.view qweb New
snippet_options_border_widgets snippet_options_border_widgets ir.ui.view qweb New
snippet_options_conditional_visibility snippet_options_conditional_visibility ir.ui.view qweb New
snippet_options_shadow_widgets snippet_options_shadow_widgets ir.ui.view qweb New
snippets snippets ir.ui.view qweb Inherits web_editor.snippets
snippets_debug_view Snippet Debug t New
submenu Submenu ir.ui.view qweb New
template_footer_call_to_action Call-to-Action ir.ui.view qweb Inherits website.layout
template_footer_centered Centered ir.ui.view qweb Inherits website.layout
template_footer_contact Contact ir.ui.view qweb Inherits website.layout
template_footer_descriptive Descriptive ir.ui.view qweb Inherits website.layout
template_footer_headline Headline ir.ui.view qweb Inherits website.layout
template_footer_links Links ir.ui.view qweb Inherits website.layout
template_footer_minimalist Minimalist ir.ui.view qweb Inherits website.layout
template_footer_slideout Template Footer Slideout ir.ui.view qweb Inherits website.layout
template_header_boxed Template Header Boxed ir.ui.view qweb Inherits website.layout
template_header_boxed_oe_structure_header_boxed_1 Template Header Boxed (oe_structure_header_boxed_1) ir.ui.view qweb Inherits website.template_header_boxed
template_header_centered_logo Template Header Centered Logo ir.ui.view qweb Inherits website.layout
template_header_contact Template Header Contact ir.ui.view qweb Inherits website.layout
template_header_contact_oe_structure_header_contact_1 Template Header Contact (oe_structure_header_contact_1) ir.ui.view qweb Inherits website.template_header_contact
template_header_default Template Header Default ir.ui.view qweb Inherits website.layout
template_header_default_align_center template_header_default_align_center ir.ui.view qweb Inherits website.template_header_default
template_header_default_align_right template_header_default_align_right ir.ui.view qweb Inherits website.template_header_default
template_header_hamburger Template Header Hamburger ir.ui.view qweb Inherits website.layout
template_header_hamburger_align_center template_header_hamburger_align_center ir.ui.view qweb Inherits website.template_header_hamburger
template_header_hamburger_align_right template_header_hamburger_align_right ir.ui.view qweb Inherits website.template_header_hamburger
template_header_hamburger_full Template Header Hambuger Full ir.ui.view qweb Inherits website.layout
template_header_hamburger_full_oe_structure_header_hamburger_full_1 Template Header Hamburger Full (oe_structure_header_hamburger_full_1) ir.ui.view qweb Inherits website.template_header_hamburger_full
template_header_hamburger_oe_structure_header_hamburger_2 Template Header Hamburger (oe_structure_header_hamburger_2) ir.ui.view qweb Inherits website.template_header_hamburger
template_header_hamburger_oe_structure_header_hamburger_3 Template Header Hamburger (oe_structure_header_hamburger_3) ir.ui.view qweb Inherits website.template_header_hamburger
template_header_image Template Header Image ir.ui.view qweb Inherits website.layout
template_header_image_oe_structure_header_image_1 Template Header image (oe_structure_header_image_1) ir.ui.view qweb Inherits website.template_header_image
template_header_magazine Template Header Magazine ir.ui.view qweb Inherits website.layout
template_header_magazine_oe_structure_header_magazine_1 Template Header Magazine (oe_structure_header_magazine_1) ir.ui.view qweb Inherits website.template_header_magazine
template_header_sidebar Template Header Sidebar ir.ui.view qweb Inherits website.layout
template_header_sidebar_oe_structure_header_sidebar_1 Template Header Sidebar (oe_structure_header_sidebar_1) ir.ui.view qweb Inherits website.template_header_sidebar
template_header_slogan Template Header Slogan ir.ui.view qweb Inherits website.layout
template_header_slogan_align_center template_header_slogan_align_center ir.ui.view qweb Inherits website.template_header_slogan
template_header_slogan_align_right template_header_slogan_align_right ir.ui.view qweb Inherits website.template_header_slogan
template_header_slogan_oe_structure_header_slogan_1 Template Header Slogan (oe_structure_header_slogan_1) ir.ui.view qweb Inherits website.template_header_slogan
template_header_slogan_oe_structure_header_slogan_3 Template Header Slogan (oe_structure_header_slogan_3) ir.ui.view qweb Inherits website.template_header_slogan
template_header_vertical Template Header Vertical ir.ui.view qweb Inherits website.layout
template_header_vertical_oe_structure_header_vertical_1 Template Header Vertical (oe_structure_header_vertical_1) ir.ui.view qweb Inherits website.template_header_vertical
template_header_vertical_oe_structure_header_vertical_2 Template Header Vertical (oe_structure_header_vertical_2) ir.ui.view qweb Inherits website.template_header_vertical
template_header_vertical_oe_structure_header_vertical_3 Template Header Vertical (oe_structure_header_vertical_3) ir.ui.view qweb Inherits website.template_header_vertical
theme_view_form_preview website.form ir.module.module form New
theme_view_kanban Themes Kanban ir.module.module kanban New
theme_view_search Themes Search ir.module.module search New
user_dropdown user_dropdown ir.ui.view qweb Inherits portal.user_dropdown
view_arch_only website.ir_ui_view.arch_only ir.ui.view form New
view_attachment_form_inherit_website ir.attachment.form.inherit.website ir.attachment field Inherits base.view_attachment_form
view_attachment_tree_inherit_website ir.attachment.tree.inherit.website ir.attachment field Inherits base.view_attachment_tree
view_base_language_install view_base_language_install.inherit base.language.install group Inherits base.view_base_language_install
view_edit_robots Edit Robots.txt website.robots form New
view_partner_form_inherit_website res.partner.form.website.inherit res.partner xpath Inherits base.view_partner_form
view_rewrite_search website.rewrite.search website.rewrite search New
view_server_action_form_website ir.actions.server.form.website ir.actions.server data Inherits base.view_server_action_form
view_server_action_search_website ir.actions.server.search.website ir.actions.server xpath Inherits base.view_server_action_search
view_server_action_tree_website ir.actions.server.tree.website ir.actions.server xpath Inherits base.view_server_action_tree
view_view_form_extend ir.ui.view field Inherits base.view_view_form
view_view_qweb View Hierarchy ir.ui.view qweb New
view_view_tree_inherit_website ir.ui.view tree Inherits base.view_view_tree
view_website_form website.form website form New
view_website_form_view_themes_modal website.modal.form website xpath Inherits website.view_website_form
view_website_rewrite_form website.rewrite form New
view_website_tree website.tree website tree New
website.aboutus About Us ir.ui.view qweb New
website.contactus Contact Us ir.ui.view qweb New
website.header_call_to_action Header Call to Action ir.ui.view qweb Inherits website.placeholder_header_call_to_action
website.homepage Home ir.ui.view qweb New
website.neutralize_ribbon Neutralize Ribbon ir.ui.view qweb Inherits website.layout
website.our_services Services ir.ui.view qweb New
website.placeholder_header_call_to_action Placeholder Header Call to Action ir.ui.view qweb New
website.s_dynamic_snippet_options_template website.s_dynamic_snippet_options_template ir.ui.view qweb New
website.s_dynamic_snippet_template website.s_dynamic_snippet_template ir.ui.view qweb New
website_info Odoo Information ir.ui.view qweb New
website_menus_form_view website.menu.form website.menu form New
website_page_properties_view_form website.page.properties.form.view website.page form New
website_pages_form_view website.page.form website.page form New
website_pages_kanban_view website.page.kanban website.page kanban New
website_pages_tree_view website.page.list website.page tree New
website_pages_view_search website.page.view.search website.page search New
website_search_box Website Searchbox ir.ui.view qweb New
website_search_box_input website_search_box_input ir.ui.view qweb Inherits website.website_search_box
website_visitor_page_view_graph website.track.view.graph website.track graph New
website_visitor_page_view_search website.track.view.search website.track search New
website_visitor_page_view_tree website.track.view.tree website.track tree New
website_visitor_track_view_graph website.track.view.graph website.track graph New
website_visitor_track_view_tree website.track.view.tree website.track tree New
website_visitor_view_form website.visitor.view.form website.visitor form New
website_visitor_view_graph website.visitor.view.graph website.visitor graph New
website_visitor_view_kanban website.visitor.view.kanban website.visitor kanban New
website_visitor_view_search website.visitor.view.search website.visitor search New
website_visitor_view_tree website.visitor.view.tree website.visitor tree New
Models touched (52)

New fields (0)

No new fields.

Public methods (2)
  • get_base_url(self)
    Returns the base url for a given record, given the following priority: 1. If the record has a `website_id` field, we use the url from this website as base url, if set. 2. If the record has a `company_id` field, we use the website from that company (if set). Note that a company doesn't really have a website, it is retrieve through some heuristic in its `website_id`'s compute. 3. Use the ICP `web.base.url` (super) :return: the base url for this record :rtype: string
  • get_website_meta(self)

New fields (1)
  • website_ids Many2many → website
    string='Websites to translate' args: 'website'
Public methods (2)
  • default_get(self, fields)
    @api.model
  • lang_install(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (4)
  • website_path Char
    args: 'Website Path'
  • website_published Boolean
    copy=False help='A code server action can be executed from the website, using a dedicated controller. The address is <base>/website/action/<website_path>. Set this field as True to allow users to run this action. If it is set to False the action cannot be run through the website.' args: 'Available on the Website'
  • website_url Char
    compute='_get_website_url' help='The full URL to access the server action through the website.' args: 'Website Url'
  • xml_id Char
    compute='_compute_xml_id' help='ID of the action if defined in a XML file' args: 'External ID'
Public methods (0)

No public methods.

New fields (2)
  • key Char
    copy=False
  • website_id Many2one → website
    ondelete='cascade' args: 'website'
Public methods (2)
  • filter_duplicate(self)
    Filter current recordset only keeping the most suitable asset per distinct name. Every non-accessible asset will be removed from the set: * In non website context, every asset with a website will be removed * In a website context, every asset from another website
  • write(self, vals)
    COW for ir.asset. This way editing websites does not impact other websites. Also this way newly created websites will only contain the default assets.

New fields (1)
  • theme_template_id Many2one → theme.ir.asset
    copy=False args: 'theme.ir.asset'
Public methods (0)

No public methods.

New fields (2)
  • key Char
  • website_id Many2one → website
    args: 'website'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • get_serving_groups(self)
    @api.model

New fields (2)
  • key Char
    copy=False
  • theme_template_id Many2one → theme.ir.attachment
    copy=False args: 'theme.ir.attachment'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • clear_caches(cls)
    @classmethod
  • get_frontend_session_info(self)
    @api.model
  • routing_map(cls, key=None)
    @classmethod

New fields (4)
  • website_form_access Boolean
    help='Enable the form builder feature for this model.' args: 'Allowed to use in forms'
  • website_form_default_field_id Many2one → ir.model.fields
    domain="[('model', '=', model), ('ttype', '=', 'text')]" help='Specify the field which will contain meta and custom form fields datas.' args: 'ir.model.fields', 'Field for custom form data'
  • website_form_key Char
    help='Used in FormBuilder Registry'
  • website_form_label Char
    help="Form action label. Ex: crm.lead could be 'Send an e-mail' and project.issue could be 'Create an Issue'." args: 'Label for form action'
Public methods (2)
  • get_authorized_fields(self, model_name)
    @api.model
    Return the fields of the given model name as a mapping like method `fields_get`.
  • get_compatible_form_models(self)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • website_form_blacklisted Boolean
    default=True help='Blacklist this field for web forms' index=True args: 'Blacklisted in web forms'
Public methods (2)
  • formbuilder_whitelist(self, model, fields)
    @api.model
    :param str model: name of the model on which to whitelist fields :param list(str) fields: list of fields to whitelist on the model :return: nothing of import
  • init(self)

New fields (2)
  • image_ids One2many → ir.attachment
    domain=[('res_model', '=', _name), ('mimetype', '=like', 'image/%')] readonly=True string='Screenshots' args: 'ir.attachment', 'res_id'
  • is_installed_on_current_website Boolean
    compute='_compute_is_installed_on_current_website'
Public methods (7)
  • button_choose_theme(self)
    Remove any existing theme on the current website and install the theme ``self`` instead. The actual loading of the theme on the current website will be done automatically on ``write`` thanks to the upgrade and/or install. When installating a new theme, upgrade the upstream chain first to make sure we have the latest version of the dependencies to prevent inconsistencies. :return: dict with the next action to execute
  • button_refresh_theme(self)
    Refresh the current theme of the current website. To refresh it, we only need to upgrade the modules. Indeed the (re)loading of the theme will be done automatically on ``write``.
  • button_remove_theme(self)
    Remove the current theme of the current website.
  • get_themes_domain(self)
    Returns the 'ir.module.module' search domain matching all available themes.
  • update_list(self)
    @api.model
  • update_theme_images(self)
    @api.model
  • write(self, vals)
    Override to correctly upgrade themes after upgrade/installation of modules. # Install If this theme wasn't installed before, then load it for every website for which it is in the stream. eg. The very first installation of a theme on a website will trigger this. eg. If a website uses theme_A and we install sale, then theme_A_sale will be autoinstalled, and in this case we need to load theme_A_sale for the website. # Upgrade There are 2 cases to handle when upgrading a theme: * When clicking on the theme upgrade button on the interface, in which case there will be an http request made. -> We want to upgrade the current website only, not any other. * When upgrading with -u, in which case no request should be set. -> We want to upgrade every website using this theme.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • get_available_options(self)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • value_to_html(self, value, 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_menus_root(self)
    @api.model@tools.ormcache_context('self._uid', keys=('lang', 'force_action'))

New fields (7)
  • first_page_id Many2one → website.page
    compute='_compute_first_page_id' help='First page linked to this view' string='Website Page' args: 'website.page'
  • page_ids One2many → website.page
    args: 'website.page', 'view_id'
  • track Boolean
    default=False help='Allow to specify for one page of the website to be trackable or not' string='Track'
  • visibility Selection
    default='' args: [('', 'All'), ('connected', 'Signed In'), ('restricted_group', 'Restricted Group'), ('password', 'With Password')]
  • visibility_password Char
    copy=False groups='base.group_system'
  • visibility_password_display Char
    compute='_get_pwd' groups='website.group_website_designer' inverse='_set_pwd'
  • website_id Many2one → website
    ondelete='cascade' string='Website' args: 'website'
Public methods (8)
  • create(self, vals_list)
    @api.model_create_multi
    SOC for ir.ui.view creation. If a view is created without a website_id, it should get one if one is present in the context. Also check that an explicit website_id in create values matches the one in the context.
  • filter_duplicate(self)
    Filter current recordset only keeping the most suitable view per distinct key. Every non-accessible view will be removed from the set: * In non website context, every view with a website will be removed * In a website context, every view from another website
  • get_default_lang_code(self)
    @api.model
  • get_related_views(self, key, bundles=False)
    @api.model
    Make this only return most specific views for website.
  • name_get(self)
  • save(self, value, xpath=None)
  • unlink(self)
    This implements COU (copy-on-unlink). When deleting a generic page website-specific pages will be created so only the current website is affected.
  • write(self, vals)
    COW for ir.ui.view. This way editing websites does not impact other websites. Also this way newly created websites will only contain the default views.

New fields (1)
  • theme_template_id Many2one → theme.ir.ui.view
    copy=False args: 'theme.ir.ui.view'
Public methods (1)
  • write(self, vals)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • website_id Many2one → website
    compute='_compute_website_id' store=True args: 'website'
Public methods (3)
  • action_open_website_theme_selector(self)
    @api.model
  • google_map_img(self, zoom=8, width=298, height=298)
  • google_map_link(self, zoom=8)

New fields (29)
  • auth_signup_uninvited Selection
    compute='_compute_auth_signup_uninvited' config_parameter=False default=None inverse='_inverse_auth_signup_uninvited'
  • cdn_activated Boolean
    readonly=False related='website_id.cdn_activated'
  • cdn_filters Text
    readonly=False related='website_id.cdn_filters'
  • cdn_url Char
    readonly=False related='website_id.cdn_url'
  • favicon Binary
    readonly=False related='website_id.favicon' args: 'Favicon'
  • google_analytics_key Char
    readonly=False related='website_id.google_analytics_key' args: 'Google Analytics Key'
  • google_search_console Char
    readonly=False related='website_id.google_search_console' args: 'Google Search Console'
  • group_multi_website Boolean
    implied_group='website.group_multi_website' args: 'Multi-website'
  • has_default_share_image Boolean
    compute='_compute_has_default_share_image' inverse='_inverse_has_default_share_image' args: 'Use a image by default for sharing'
  • has_google_analytics Boolean
    compute='_compute_has_google_analytics' inverse='_inverse_has_google_analytics' args: 'Google Analytics'
  • has_google_search_console Boolean
    compute='_compute_has_google_search_console' inverse='_inverse_has_google_search_console' args: 'Console Google Search'
  • has_plausible_shared_key Boolean
    compute='_compute_has_plausible_shared_key' inverse='_inverse_has_plausible_shared_key' args: 'Plausible Analytics'
  • language_ids Many2many
    readonly=False related='website_id.language_ids' relation='res.lang'
  • module_marketing_automation Boolean
  • module_website_livechat Boolean
  • plausible_shared_key Char
    readonly=False related='website_id.plausible_shared_key' args: 'Plausible auth Key'
  • plausible_site Char
    readonly=False related='website_id.plausible_site' args: 'Plausible Site (e.g. domain.com)'
  • shared_user_account Boolean
    compute='_compute_shared_user_account' inverse='_inverse_shared_user_account' string='Shared Customer Accounts'
  • social_default_image Binary
    readonly=False related='website_id.social_default_image' args: 'Default Social Share Image'
  • website_company_id Many2one
    readonly=False related='website_id.company_id' string='Website Company'
  • website_cookies_bar Boolean
    readonly=False related='website_id.cookies_bar'
  • website_default_lang_code Char
    readonly=False related='website_id.default_lang_id.code' args: 'Default language code'
  • website_default_lang_id Many2one
    readonly=False related='website_id.default_lang_id' string='Default language'
  • website_domain Char
    readonly=False related='website_id.domain' args: 'Website Domain'
  • website_homepage_url Char
    readonly=False related='website_id.homepage_url'
  • website_id Many2one → website
    default=_default_website ondelete='cascade' string='website' args: 'website'
  • website_language_count Integer
    readonly=True related='website_id.language_count' string='Number of languages'
  • website_logo Binary
    readonly=False related='website_id.logo'
  • website_name Char
    readonly=False related='website_id.name' args: 'Website Name'
Public methods (3)
  • action_open_robots(self)
  • action_ping_sitemap(self)
  • action_website_create_new(self)

New fields (0)

No new fields.

Public methods (3)
  • action_activate_langs(self)
    Open wizard to install language(s), so user can select the website(s) to translate in that language.
  • get_available(self)
    @api.model@tools.ormcache_context(keys=('website_id'))
  • write(self, vals)

New fields (1)
  • visitor_ids One2many → website.visitor
    string='Visitors' args: 'website.visitor', 'partner_id'
Public methods (2)
  • google_map_img(self, zoom=8, width=298, height=298)
  • google_map_link(self, zoom=10)

New fields (1)
  • website_id Many2one → website
    readonly=False related='partner_id.website_id' related_sudo=False store=True args: 'website'
Public methods (1)
  • authenticate(cls, db, login, password, user_agent_env)
    @classmethod
    Override to link the logged in user's res.partner to website.visitor. If a visitor already exists for that user, assign it data from the current anonymous visitor (if exists). Purpose is to try to aggregate as much sub-records (tracked pages, leads, ...) as possible.

New fields (9)
  • active Boolean
    default=True
  • bundle Char
    required=True
  • copy_ids One2many → ir.asset
    copy=False readonly=True args: 'ir.asset', 'theme_template_id', 'Assets using a copy of me'
  • directive Selection
    default=APPEND_DIRECTIVE selection=[(APPEND_DIRECTIVE, 'Append'), (PREPEND_DIRECTIVE, 'Prepend'), (AFTER_DIRECTIVE, 'After'), (BEFORE_DIRECTIVE, 'Before'), (REMOVE_DIRECTIVE, 'Remove'), (REPLACE_DIRECTIVE, 'Replace'), (INCLUDE_DIRECTIVE, 'Include')]
  • key Char
  • name Char
    required=True
  • path Char
    required=True
  • sequence Integer
    default=DEFAULT_SEQUENCE required=True
  • target Char
Public methods (0)

No public methods.

New fields (4)
  • copy_ids One2many → ir.attachment
    copy=False readonly=True args: 'ir.attachment', 'theme_template_id', 'Attachment using a copy of me'
  • key Char
    required=True
  • name Char
    required=True
  • url Char
Public methods (0)

No public methods.

New fields (11)
  • active Boolean
    default=True
  • arch Text
    translate=xml_translate
  • arch_fs Char
    default=compute_arch_fs
  • copy_ids One2many → ir.ui.view
    copy=False readonly=True args: 'ir.ui.view', 'theme_template_id', 'Views using a copy of me'
  • customize_show Boolean
  • inherit_id Reference
    selection=[('ir.ui.view', 'ir.ui.view'), ('theme.ir.ui.view', 'theme.ir.ui.view')]
  • key Char
  • mode Selection
    args: [('primary', 'Base view'), ('extension', 'Extension View')]
  • name Char
    required=True
  • priority Integer
    default=DEFAULT_SEQUENCE required=True
  • type Char
Public methods (1)
  • compute_arch_fs(self)

New fields (0)

No new fields.

Public methods (5)
  • disable_asset(self, name)
    @api.model
  • disable_view(self, xml_id)
    @api.model
  • enable_asset(self, name)
    @api.model
  • enable_header_off_canvas(self)
    @api.model
    Enabling off canvas require to enable quite a lot of template so this shortcut was made to make it easier.
  • enable_view(self, xml_id)
    @api.model

New fields (10)
  • copy_ids One2many → website.menu
    copy=False readonly=True args: 'website.menu', 'theme_template_id', 'Menu using a copy of me'
  • mega_menu_classes Char
  • mega_menu_content Html
  • name Char
    required=True translate=True
  • new_window Boolean
    args: 'New Window'
  • page_id Many2one → theme.website.page
    ondelete='cascade' args: 'theme.website.page'
  • parent_id Many2one → theme.website.menu
    index=True ondelete='cascade' args: 'theme.website.menu'
  • sequence Integer
  • url Char
    default=''
  • use_main_menu_as_parent Boolean
    default=True
Public methods (0)

No public methods.

New fields (9)
  • copy_ids One2many → website.page
    copy=False readonly=True args: 'website.page', 'theme_template_id', 'Page using a copy of me'
  • footer_visible Boolean
    default=True
  • header_color Char
  • header_overlay Boolean
  • header_visible Boolean
    default=True
  • is_published Boolean
  • url Char
  • view_id Many2one → theme.ir.ui.view
    ondelete='cascade' required=True args: 'theme.ir.ui.view'
  • website_indexed Boolean
    default=True args: 'Page Indexed'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • make_scss_customization(self, url, values)
    @api.model
    Makes a scss customization of the given file. That file must contain a scss map including a line comment containing the word 'hook', to indicate the location where to write the new key,value pairs. Params: url (str): the URL of the scss file to customize (supposed to be a variable file which will appear in the assets_frontend bundle) values (dict): key,value mapping to integrate in the file's map (containing the word hook). If a key is already in the file's map, its value is overridden.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (38)
  • auth_signup_uninvited Selection
    default='b2b' string='Customer Account' args: [('b2b', 'On invitation'), ('b2c', 'Free sign up')]
  • auto_redirect_lang Boolean
    default=True help="Should users be redirected to their browser's language" args: 'Autoredirect Language'
  • cdn_activated Boolean
    args: 'Content Delivery Network (CDN)'
  • cdn_filters Text
    default=<expr> help='URL matching those filters will be rewritten using the CDN Base URL' args: 'CDN Filters'
  • cdn_url Char
    default='' args: 'CDN Base URL'
  • company_id Many2one → res.company
    default=<expr> required=True string='Company' args: 'res.company'
  • configurator_done Boolean
    help='True if configurator has been completed or ignored'
  • cookies_bar Boolean
    help='Display a customizable cookies bar on your website.' args: 'Cookies Bar'
  • custom_code_footer Html
    sanitize=False args: 'Custom end of <body> code'
  • custom_code_head Html
    sanitize=False args: 'Custom <head> code'
  • default_lang_id Many2one → res.lang
    default=_default_language required=True string='Default Language' args: 'res.lang'
  • domain Char
    help='E.g. https://www.mydomain.com' args: 'Website Domain'
  • favicon Binary
    default=_default_favicon help='This field holds the image used to display a favicon on the website.' string='Website Favicon'
  • google_analytics_key Char
    args: 'Google Analytics Key'
  • google_maps_api_key Char
    args: 'Google Maps API Key'
  • google_search_console Char
    help='Google key, or Enable to access first reply'
  • has_social_default_image Boolean
    compute='_compute_has_social_default_image' store=True
  • homepage_url Char
    help='E.g. /contactus or /shop'
  • language_count Integer
    compute='_compute_language_count' args: 'Number of languages'
  • language_ids Many2many → res.lang
    default=_active_languages required=True string='Languages' args: 'res.lang', 'website_lang_rel', 'website_id', 'lang_id'
  • logo Binary
    default=_default_logo help='Display this logo on the website.' args: 'Website Logo'
  • menu_id Many2one → website.menu
    compute='_compute_menu' string='Main Menu' args: 'website.menu'
  • name Char
    required=True args: 'Website Name'
  • partner_id Many2one
    readonly=False related='user_id.partner_id' string='Public Partner'
  • plausible_shared_key Char
  • plausible_site Char
  • robots_txt Html
    groups='website.group_website_designer' sanitize=False translate=False args: 'Robots.txt'
  • sequence Integer
    default=10
  • social_default_image Binary
    help='If set, replaces the website logo as the default social share image.' string='Default Social Share Image'
  • social_facebook Char
    default=_default_social_facebook args: 'Facebook Account'
  • social_github Char
    default=_default_social_github args: 'GitHub Account'
  • social_instagram Char
    default=_default_social_instagram args: 'Instagram Account'
  • social_linkedin Char
    default=_default_social_linkedin args: 'LinkedIn Account'
  • social_twitter Char
    default=_default_social_twitter args: 'Twitter Account'
  • social_youtube Char
    default=_default_social_youtube args: 'Youtube Account'
  • specific_user_account Boolean
    help='If True, new accounts will be associated to the current website' args: 'Specific User Account'
  • theme_id Many2one → ir.module.module
    help='Installed theme' args: 'ir.module.module'
  • user_id Many2one → res.users
    required=True string='Public User' args: 'res.users'
Public methods (35)
  • action_dashboard_redirect(self)
    @api.model
  • button_go_website(self, path='/', mode_edit=False)
  • configurator_apply(self, **kwargs)
    @api.model
  • configurator_get_footer_links(self)
  • configurator_init(self)
    @api.model
  • configurator_recommended_themes(self, industry_id, palette)
    @api.model
  • configurator_set_menu_links(self, menu_company, module_data)
  • configurator_skip(self)
    @api.model
  • copy_menu_hierarchy(self, top_menu)
  • create(self, vals_list)
    @api.model_create_multi
  • create_and_redirect_configurator(self)
  • get_cdn_url(self, uri)
  • get_client_action(self, url, mode_edit=False, website_id=False)
  • get_client_action_url(self, url, mode_edit=False)
  • get_cta_data(self, website_purpose, website_type)
  • get_current_website(self, fallback=True)
    @api.model
    The current website is returned in the following order: - the website forced in session `force_website_id` - the website set in context - (if frontend or fallback) the website matching the request's "domain" - arbitrary the first website found in the database if `fallback` is set to `True` - empty browse record
  • get_suggested_controllers(self)
    Returns a tuple (name, url, icon). Where icon can be a module name, or a path
  • get_template(self, template)
    @api.model
  • get_theme_snippet_lists(self, theme_name)
    @api.model
  • get_unique_key(self, string, template_module=False)
    Given a string, return an unique key including module prefix. It will be suffixed by a counter if it already exists to garantee uniqueness. :param string : the key to be checked for uniqueness, you can pass it with 'website.' or not :param template_module : the module to be prefixed on the key, if not set, we will use website
  • get_unique_path(self, page_url)
    Given an url, return that url suffixed by counter if it already exists :param page_url : the url to be checked for uniqueness
  • get_website_page_ids(self)
  • image_url(self, record, field, size=None)
    @api.model
    Returns a local url that points to the image field of a given browse record.
  • is_menu_cache_disabled(self)
    @tools.ormcache('self.env.uid', 'self.id')
    Checks if the website menu contains a record like url. :return: True if the menu contains a record like url
  • is_public_user(self)
    @api.model
  • is_view_active(self, key)
    @api.model@tools.ormcache_context('key', keys=('website_id'))
    Return True if active, False if not active, None if not found
  • new_page(self, name=False, add_menu=False, template='website.default_page', ispage=True, namespace=None, page_values=None, menu_values=None)
    @api.model
    Create a new website page, and assign it a xmlid based on the given one :param name : the name of the page :param add_menu : if True, add a menu for that page :param template : potential xml_id of the page to create :param namespace : module part of the xml_id if none, the template module name is used :param page_values : default values for the page to be created :param menu_values : default values for the menu to be created
  • pager(self, url, total, page=1, step=30, scope=5, url_args=None)
    @api.model
  • rule_is_enumerable(self, rule)
    Checks that it is possible to generate sensible GET queries for a given rule (if the endpoint matches its own requirements) :type rule: werkzeug.routing.Rule :rtype: bool
  • search_pages(self, needle=None, limit=None)
  • search_url_dependencies(self, res_model, res_ids)
    @api.model
    Search dependencies just for information. It will not catch 100% of dependencies and False positive is more than possible Each module could add dependences in this dict :returns a dictionnary where key is the 'categorie' of object related to the given view, and the value is the list of text and link to the resource using given page
  • unlink(self)
  • viewref(self, view_id, raise_if_not_found=True)
    @api.model
    Given an xml_id or a view_id, return the corresponding view record. In case of website context, return the most specific one. If no website_id is in the context, it will return the generic view, instead of a random one like `_get_view_id`. Look also for archived views, no matter the context. :param view_id: either a string xml_id or an integer view_id :param raise_if_not_found: should the method raise an error if no view found :return: The view record or empty recordset
  • website_domain(self, website_id=False)
    @api.model
  • write(self, values)

New fields (11)
  • description Char
    translate=True
  • feature_url Char
  • iap_page_code Char
    help='Page code used to tell IAP website_service for which page a snippet list should be generated'
  • icon Char
  • menu_company Boolean
    help='If set, add the menu as a second level menu, as a child of "Company" menu.'
  • menu_sequence Integer
    help='If set, a website menu will be created for the feature.'
  • module_id Many2one → ir.module.module
    ondelete='cascade' args: 'ir.module.module'
  • name Char
    translate=True
  • page_view_id Many2one → ir.ui.view
    ondelete='cascade' args: 'ir.ui.view'
  • sequence Integer
  • website_config_preselection Char
    help='Comma-separated list of website type/purpose for which this feature should be pre-selected'
Public methods (0)

No public methods.

New fields (1)
  • cover_properties Text
    default=<expr> args: 'Cover Properties'
Public methods (1)
  • write(self, vals)

New fields (13)
  • child_id One2many → website.menu
    string='Child Menus' args: 'website.menu', 'parent_id'
  • is_mega_menu Boolean
    compute=_compute_field_is_mega_menu inverse=_set_field_is_mega_menu
  • is_visible Boolean
    compute='_compute_visible' string='Is Visible'
  • mega_menu_classes Char
  • mega_menu_content Html
    prefetch=True sanitize=False translate=html_translate
  • name Char
    required=True translate=True args: 'Menu'
  • new_window Boolean
    args: 'New Window'
  • page_id Many2one → website.page
    ondelete='cascade' args: 'website.page', 'Related Page'
  • parent_id Many2one → website.menu
    index=True ondelete='cascade' args: 'website.menu', 'Parent Menu'
  • parent_path Char
    index=True unaccent=False
  • sequence Integer
    default=_default_sequence
  • url Char
    default='' args: 'Url'
  • website_id Many2one → website
    ondelete='cascade' args: 'website', 'Website'
Public methods (7)
  • clean_url(self)
    @api.model
  • create(self, vals_list)
    @api.model_create_multi
    In case a menu without a website_id is trying to be created, we duplicate it for every website. Note: Particulary useful when installing a module that adds a menu like /shop. So every website has the shop menu. Be careful to return correct record for ir.model.data xml_id in case of default main menus creation.
  • get_tree(self, website_id, menu_id=None)
    @api.model
  • name_get(self)
  • save(self, website_id, data)
    @api.model
  • unlink(self)
  • write(self, values)

New fields (1)
  • theme_template_id Many2one → theme.website.menu
    copy=False args: 'theme.website.menu'
Public methods (0)

No public methods.

New fields (1)
  • website_id Many2one → website
    help='Restrict publishing to this website.' index=True ondelete='restrict' string='Website' args: 'website'
Public methods (1)
  • can_access_from_current_website(self, website_id=False)

New fields (14)
  • arch Text
    depends_context=('website_id') readonly=False related='view_id.arch'
  • date_publish Datetime
    args: 'Publishing Date'
  • footer_visible Boolean
    default=True
  • header_color Char
  • header_overlay Boolean
  • header_visible Boolean
    default=True
  • is_homepage Boolean
    compute='_compute_is_homepage' inverse='_set_is_homepage' string='Homepage'
  • is_in_menu Boolean
    compute='_compute_website_menu' inverse='_inverse_website_menu'
  • is_visible Boolean
    compute='_compute_visible' string='Is Visible'
  • menu_ids One2many → website.menu
    args: 'website.menu', 'page_id', 'Related Menus'
  • url Char
    args: 'Page URL'
  • view_id Many2one → ir.ui.view
    ondelete='cascade' required=True string='View' args: 'ir.ui.view'
  • website_id Many2one
    ondelete='cascade' readonly=False related='view_id.website_id' store=True
  • website_indexed Boolean
    default=True args: 'Is Indexed'
Public methods (6)
  • action_page_debug_view(self)
  • clone_page(self, page_id, page_name=None, clone_menu=True)
    @api.model
    Clone a page, given its identifier :param page_id : website.page identifier
  • copy(self, default=None)
    @api.returns('self', <expr>)
  • get_website_meta(self)
  • unlink(self)
  • write(self, vals)

New fields (1)
  • theme_template_id Many2one → theme.website.page
    copy=False args: 'theme.website.page'
Public methods (0)

No public methods.

New fields (4)
  • can_publish Boolean
    compute='_compute_can_publish' args: 'Can Publish'
  • is_published Boolean
    copy=False default=<expr> index=True args: 'Is Published'
  • website_published Boolean
    readonly=False related='is_published' args: 'Visible on current website'
  • website_url Char
    compute='_compute_website_url' help='The full URL to access the document through the website.' args: 'Website URL'
Public methods (5)
  • create(self, vals_list)
    @api.model_create_multi
  • create_and_get_website_url(self, **kwargs)
  • open_website_url(self)
  • website_publish_button(self)
  • write(self, values)

New fields (8)
  • active Boolean
    default=True
  • name Char
    required=True args: 'Name'
  • redirect_type Selection
    default='302' help="Type of redirect/Rewrite:\n\n 301 Moved permanently: The browser will keep in cache the new url.\n 302 Moved temporarily: The browser will not keep in cache the new url and ask again the next time the new url.\n 404 Not Found: If you want remove a specific page/controller (e.g. Ecommerce is installed, but you don't want /shop on a specific website)\n 308 Redirect / Rewrite: If you want rename a controller with a new url. (Eg: /shop -> /garden - Both url will be accessible but /shop will automatically be redirected to /garden)\n " string='Action' args: [('404', '404 Not Found'), ('301', '301 Moved permanently'), ('302', '302 Moved temporarily'), ('308', '308 Redirect / Rewrite')]
  • route_id Many2one → website.route
    args: 'website.route'
  • sequence Integer
  • url_from Char
    index=True args: 'URL from'
  • url_to Char
    args: 'URL to'
  • website_id Many2one → website
    index=True ondelete='cascade' string='Website' args: 'website'
Public methods (5)
  • create(self, vals_list)
    @api.model_create_multi
  • name_get(self)
  • refresh_routes(self)
  • unlink(self)
  • write(self, vals)

New fields (1)
  • content Text
    default=<expr>
Public methods (1)
  • action_save(self)

New fields (1)
  • path Char
    args: 'Route'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (6)
  • is_seo_optimized Boolean
    compute='_compute_is_seo_optimized' args: 'SEO optimized'
  • seo_name Char
    prefetch=True translate=True args: 'Seo name'
  • website_meta_description Text
    prefetch='website_meta' translate=True args: 'Website meta description'
  • website_meta_keywords Char
    prefetch='website_meta' translate=True args: 'Website meta keywords'
  • website_meta_og_img Char
    args: 'Website opengraph image'
  • website_meta_title Char
    prefetch='website_meta' translate=True args: 'Website meta title'
Public methods (1)
  • get_website_meta(self)
    This method will return final meta information. It will replace default values with user's custom value (if user modified it from the seo popup of frontend) This method is not meant for overridden. To customize meta values override `_default_website_meta` method instead of this method. This method only replaces user custom values in defaults.

New fields (7)
  • action_server_id Many2one → ir.actions.server
    ondelete='cascade' args: 'ir.actions.server', 'Server Action'
  • field_names Char
    help='A list of comma-separated field names' required=True
  • filter_id Many2one → ir.filters
    ondelete='cascade' args: 'ir.filters', 'Filter'
  • limit Integer
    help='The limit is the maximum number of records retrieved' required=True
  • model_name Char
    compute='_compute_model_name' string='Model name'
  • name Char
    required=True translate=True
  • website_id Many2one → website
    ondelete='cascade' string='Website' args: 'website'
Public methods (0)

No public methods.

New fields (4)
  • page_id Many2one → website.page
    index=True ondelete='cascade' readonly=True args: 'website.page'
  • url Text
    index=True args: 'Url'
  • visit_datetime Datetime
    default=fields.Datetime.now readonly=True required=True args: 'Visit Date'
  • visitor_id Many2one → website.visitor
    index=True ondelete='cascade' readonly=True required=True args: 'website.visitor'
Public methods (0)

No public methods.

New fields (21)
  • access_token Char
    copy=False default=_get_access_token required=True
  • country_flag Char
    related='country_id.image_url' string='Country Flag'
  • country_id Many2one → res.country
    readonly=True args: 'res.country', 'Country'
  • create_date Datetime
    readonly=True args: 'First Connection'
  • email Char
    compute='_compute_email_phone' compute_sudo=True string='Email'
  • is_connected Boolean
    compute='_compute_time_statistics' help='A visitor is considered as connected if his last page view was within the last 5 minutes.' args: 'Is connected ?'
  • lang_id Many2one → res.lang
    help='Language from the website when visitor has been created' string='Language' args: 'res.lang'
  • last_connection_datetime Datetime
    default=fields.Datetime.now help='Last page view date' readonly=True args: 'Last Connection'
  • last_visited_page_id Many2one → website.page
    compute='_compute_last_visited_page_id' string='Last Visited Page' args: 'website.page'
  • mobile Char
    compute='_compute_email_phone' compute_sudo=True string='Mobile'
  • name Char
    related='partner_id.name' args: 'Name'
  • page_count Integer
    compute='_compute_page_statistics' help='Total number of tracked page visited' args: '# Visited Pages'
  • page_ids Many2many → website.page
    compute='_compute_page_statistics' groups='website.group_website_designer' search='_search_page_ids' string='Visited Pages' args: 'website.page'
  • partner_id Many2one → res.partner
    compute='_compute_partner_id' help='Partner of the last logged in user.' index='btree_not_null' store=True string='Contact' args: 'res.partner'
  • partner_image Binary
    related='partner_id.image_1920'
  • time_since_last_action Char
    compute='_compute_time_statistics' help='Time since last page view. E.g.: 2 minutes ago' args: 'Last action'
  • timezone Selection
    string='Timezone' args: _tz_get
  • visit_count Integer
    default=1 help='A new visit is considered if last connection was more than 8 hours ago.' readonly=True args: '# Visits'
  • visitor_page_count Integer
    compute='_compute_page_statistics' help='Total number of visits on tracked pages' args: 'Page Views'
  • website_id Many2one → website
    readonly=True args: 'website', 'Website'
  • website_track_ids One2many → website.track
    readonly=True string='Visited Pages History' args: 'website.track', 'visitor_id'
Public methods (2)
  • action_send_mail(self)
  • name_get(self)
    @api.depends('partner_id')
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/15.0/website
VERSION
VERSION 1.0
CATEGORY
CATEGORYWebsite/Website
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Olivier Dony, Thibault Delavallée, David Monjoie, Xavier Morel, Goffin Simon, Mohammed Shekha, Nicolas Martinelli, Nicolas Lempereur, Aaron Bohy, Jeremy Kersten, GitHub, Lucas Perais (lpe), Barad Mahendra, Wolfgang Taferner, Yannick Tivisse, qsm-odoo, Dharmraj Jhala, SEINLET Nicolas, Nicolas Seinlet, Romain Derie, Christophe Monniez, Jorge Pinna Puissant, Adrian Torres, Julien Castiaux, Aurélien Warnon, Xavier-Do, Romeo Fragomeli, Victor Feyens, Paul Morelle, Loan (lse), Sébastien Theys, Nasreddin (bon), Florent de Labarre, Julien Mougenot, fw-bot, Samuel Degueldre, std-odoo, Achraf (abz), David Beguin, Ivan Yelizariev, Jérémy Hennecart, Nasreddin Boulif (bon), Swapnesh Shah, nie, Tiffany Chang (tic), IEL, Thanh Dodeur, Gorash, Denis Mudarisov, Younn Olivier, Mathieu Duckerts-Antoine, Pierre Paridans, Kamen Zhekov, Kevin Baptiste, Benjamin Vray, Kishan Gajjar, Arnaud Baes, roen-odoo, Benoit Socias, Hubert Van de Walle (huvw), Guillaume (gdi), Florian Damhaut, diagnoza, ijas ahammed, Sébastien Mottet (oms), Huy Le, Antoine Guenet, Arthur Detroux (ard), Patrick Hoste, Abdelouahab (abla), Swapnesh, Goaman, Nicolas Bayet, Antoine Vandevenne (anv), Thibault Libioulle, Laurent Stukkens (LTU), Michael Mattiello (mcm), Federico (fega), dht-odoo, Roy Le, Cocographique, Julien Banken, niyasraphy, Francois (fge), Thomas Lefebvre (thle), nda, Siddarth Gajjar, Julien (jula), Mahamadasif Ansari, Tom De Caluwé, Simon Genin (ges), Saurabh Mishra, Chintan Panchal (can), Om Rabara, Huy Lee, Soukéina Bojabza, Miika Nissi, Robin Lejeune (role), xO-Tx, Munaf Khan, Louis (loco), Antoine Dupuis (andu), Sébastien Geelen (sge), Bruno Boi, flvr-odoo, Carlos Valverde, Simon Goffaux (sigo), Adesh Jolhe, divy-odoo, Leonardo Pavan Rocha, Mahdi Cheikh Rouhou (macr), Noe Antoine, Deependra Solanki, stefanorigano (SRI), Benjamin Hanquin (beha), Mohamed Lamine LALMI, mizosoft, Mehdi Outagant (MOU), David Ramia, Rodopho Cammarosano de Lima (rcdl), Guillaume-gdi, Serge Bayet (seba), Sahil patel, Emilien Durieu (edu), Carlos Valverde (cvs), Nguyen Hong Quang, Matthieu Stockbauer, Tran Truong Son, Lucas Thomassin (luth), Rithwik
WEBSITE
WEBSITEhttps://www.odoo.com/app/website
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:25:26
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - digest
    - mail
    - base
    - base_setup
    - web
    - bus
    - web_tour
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - resource
    - social_media
    - google_recaptcha
    - utm
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (286)
XML IDNameModelTypeStatus
action_website_rewrite_tree website.rewrite.list website.rewrite tree New
asset_view_form_inherit_website ir.asset.form.inherit.website ir.asset field Inherits base.asset_view_form
asset_view_tree_inherit_website ir.asset.tree.inherit.website ir.asset field Inherits base.asset_view_tree
brand_promotion Brand Promotion ir.ui.view qweb Inherits web.brand_promotion
bs_debug_view BS Debug t New
color_combinations_debug_view Color Combinations Debug t New
cookie_policy Cookie Policy ir.ui.view qweb New
cookies_bar Cookies Bar ir.ui.view qweb Inherits website.layout
custom_code_layout Custom Code Layout ir.ui.view qweb Inherits website.layout
default_css default_css ir.ui.view qweb New
default_csv default_csv ir.ui.view qweb New
default_js default_js ir.ui.view qweb New
default_less default_less ir.ui.view qweb New
default_page default_page ir.ui.view qweb New
default_scss default_scss ir.ui.view qweb New
default_xml default_xml ir.ui.view qweb New
dynamic_snippet_carousel_options_template dynamic_snippet_carousel_options_template ir.ui.view qweb New
external_snippets external_snippets ir.ui.view qweb Inherits website.snippets
footer_copyright_company_name footer_copyright_company_name ir.ui.view qweb Inherits website.layout
footer_custom Default ir.ui.view qweb Inherits website.layout
footer_language_selector_flag Footer Language Selector Flag ir.ui.view qweb Inherits portal.footer_language_selector
footer_language_selector_inline Footer Language Selector Inline ir.ui.view qweb Inherits portal.footer_language_selector
footer_language_selector_no_text Footer Language Selector No Text ir.ui.view qweb Inherits portal.footer_language_selector
footer_no_copyright Footer No Copyright ir.ui.view qweb Inherits website.layout
header_hoverable_dropdown Header Hoverable Dropdown ir.ui.view qweb Inherits website.layout
header_language_selector Header Language Selector ir.ui.view qweb Inherits website.placeholder_header_language_selector
header_language_selector_flag Header Language Selector Flag ir.ui.view qweb Inherits website.header_language_selector
header_language_selector_inline Header Language Selector Inline ir.ui.view qweb Inherits website.header_language_selector
header_language_selector_no_text Header Language Selector No Text ir.ui.view qweb Inherits website.header_language_selector
header_navbar_pills_style Navbar Links Style ir.ui.view qweb Inherits website.navbar_nav
header_visibility_disappears Header Effect Disappears ir.ui.view qweb Inherits website.layout
header_visibility_fade_out Header Effect Fade Out ir.ui.view qweb Inherits website.layout
header_visibility_fixed Header Effect Fixed ir.ui.view qweb Inherits website.layout
header_visibility_standard Header Visibility Standard ir.ui.view qweb Inherits website.layout
index_management index_management ir.ui.view qweb New
ir_model_fields_view website.ir.model.fields.view.form ir.model.fields xpath Inherits base.view_model_fields_form
ir_model_view website.ir.model.view.form ir.model xpath Inherits base.view_model_form
lang_flag Language Flag ir.ui.view qweb New
language_selector language_selector ir.ui.view qweb Inherits portal.language_selector
language_selector_add_language language_selector_add_language ir.ui.view qweb New
language_selector_inline language_selector_inline ir.ui.view qweb Inherits website.language_selector
layout Main layout ir.ui.view qweb Inherits portal.frontend_layout
list_hybrid Any Search Results ir.ui.view qweb New
list_website_pages Website Pages Management ir.ui.view qweb New
list_website_public_pages Website Pages ir.ui.view qweb New
login_layout Website Login Layout ir.ui.view qweb Inherits web.login_layout
menu_search website.menu.search website.menu search New
menu_tree website.menu.tree website.menu tree New
navbar Navbar ir.ui.view qweb New
navbar_nav Navbar Nav ir.ui.view qweb New
navbar_toggler Navbar Toggler ir.ui.view qweb New
no_autohide_menu no_autohide_menu ir.ui.view qweb Inherits website.layout
one_hybrid Single any Search Results ir.ui.view qweb New
one_page_line one_page_line ir.ui.view qweb New
option_footer_scrolltop option_footer_scrolltop ir.ui.view qweb Inherits website.layout
option_header_brand_logo Header Brand Logo ir.ui.view qweb Inherits website.placeholder_header_brand
option_header_brand_name Header Brand Name ir.ui.view qweb Inherits website.placeholder_header_brand
option_header_no_mobile_hamburger option_header_no_mobile_hamburger ir.ui.view qweb Inherits website.navbar
option_header_off_canvas Off-Canvas Header ir.ui.view qweb Inherits website.navbar_nav
option_header_off_canvas_logo_show Show Logo (Off-Canvas) ir.ui.view qweb Inherits website.option_header_off_canvas
option_header_off_canvas_template_header_hamburger option_header_off_canvas_template_header_hamburger ir.ui.view qweb Inherits website.template_header_hamburger
option_header_off_canvas_template_header_hamburger_full option_header_off_canvas_template_header_hamburger_full ir.ui.view qweb Inherits website.template_header_hamburger_full
option_header_off_canvas_template_header_sidebar option_header_off_canvas_template_header_sidebar ir.ui.view qweb Inherits website.template_header_sidebar
option_layout_hide_header option_layout_hide_header ir.ui.view qweb Inherits website.layout
page_404 Page Not Found ir.ui.view qweb New
pager Pager ir.ui.view qweb Inherits portal.pager
placeholder_header_brand Placeholder Header Brand ir.ui.view qweb New
placeholder_header_language_selector Placeholder Header Language Selector ir.ui.view qweb New
pricing Pricing ir.ui.view qweb New
privacy_policy Privacy Policy ir.ui.view qweb New
protected_403 Page Protected ir.ui.view qweb New
publish_management publish_management ir.ui.view qweb New
publish_short publish_short ir.ui.view qweb New
qweb_500 qweb_500 ir.ui.view qweb Inherits http_routing.500
record_cover record_cover ir.ui.view qweb New
report_viewhierarchy_children report_viewhierarchy_children ir.ui.view qweb New
res_config_settings_view_form res.config.settings.view.form.inherit.website res.config.settings xpath Inherits base.res_config_settings_view_form
reset_view_arch_wizard_view reset.view.arch.wizard field Inherits base.reset_view_arch_wizard_view
robots robots ir.ui.view qweb New
s_alert Alert ir.ui.view qweb New
s_alert_options s_alert_options ir.ui.view qweb Inherits website.snippet_options
s_badge Badge ir.ui.view qweb New
s_badge_options s_badge_options ir.ui.view qweb Inherits website.snippet_options
s_banner Banner ir.ui.view qweb New
s_blockquote Blockquote ir.ui.view qweb New
s_blockquote_options s_blockquote_options ir.ui.view qweb Inherits website.snippet_options
s_call_to_action Call to Action ir.ui.view qweb New
s_card Card ir.ui.view qweb New
s_carousel Carousel ir.ui.view qweb New
s_chart Chart ir.ui.view qweb New
s_chart_options s_chart_options ir.ui.view qweb Inherits website.snippet_options
s_color_blocks_2 Big Boxes ir.ui.view qweb New
s_company_team Team ir.ui.view qweb New
s_comparisons Comparisons ir.ui.view qweb New
s_countdown Countdown ir.ui.view qweb New
s_countdown_options s_countdown_options ir.ui.view qweb Inherits website.snippet_options
s_cover Cover ir.ui.view qweb New
s_dynamic_snippet Dynamic Snippet ir.ui.view qweb New
s_dynamic_snippet_carousel Dynamic Carousel ir.ui.view qweb New
s_dynamic_snippet_carousel_options s_dynamic_snippet_carousel_options ir.ui.view qweb Inherits website.snippet_options
s_dynamic_snippet_options s_dynamic_snippet_options ir.ui.view qweb Inherits website.snippet_options
s_embed_code Embed Code ir.ui.view qweb New
s_embed_code_options s_embed_code_options ir.ui.view qweb Inherits website.snippet_options
s_facebook_page Facebook ir.ui.view qweb New
s_facebook_page_options s_facebook_page_options ir.ui.view qweb Inherits website.snippet_options
s_faq_collapse Accordion ir.ui.view qweb New
s_faq_collapse_options s_faq_collapse_options ir.ui.view qweb Inherits website.snippet_options
s_features Features ir.ui.view qweb New
s_features_grid Features Grid ir.ui.view qweb New
s_google_map Google Map ir.ui.view qweb New
s_google_map_options s_google_map_options ir.ui.view qweb Inherits website.snippet_options
s_hr Separator ir.ui.view qweb New
s_hr_options s_hr_options ir.ui.view qweb Inherits website.snippet_options
s_image_gallery Image Gallery ir.ui.view qweb New
s_image_gallery_options s_image_gallery_options ir.ui.view qweb Inherits website.snippet_options
s_image_text Image - Text ir.ui.view qweb New
s_images_wall Images Wall ir.ui.view qweb New
s_map Map ir.ui.view qweb New
s_map_options s_map_options ir.ui.view qweb Inherits website.snippet_options
s_masonry_block Masonry ir.ui.view qweb New
s_masonry_block_alternation_image_text_template s_masonry_block_alternation_image_text_template ir.ui.view qweb New
s_masonry_block_alternation_text_image_template s_masonry_block_alternation_text_image_template ir.ui.view qweb New
s_masonry_block_alternation_text_image_text_template s_masonry_block_alternation_text_image_text_template ir.ui.view qweb New
s_masonry_block_alternation_text_template s_masonry_block_alternation_text_template ir.ui.view qweb New
s_masonry_block_default_template s_masonry_block_default_template ir.ui.view qweb New
s_masonry_block_image_texts_image_template s_masonry_block_image_texts_image_template ir.ui.view qweb New
s_masonry_block_images_template s_masonry_block_images_template ir.ui.view qweb New
s_masonry_block_mosaic_template s_masonry_block_mosaic_template ir.ui.view qweb New
s_masonry_block_options s_masonry_block_options ir.ui.view qweb Inherits website.snippet_options
s_masonry_block_reversed_template s_masonry_block_reversed_template ir.ui.view qweb New
s_masonry_block_texts_image_texts_template s_masonry_block_texts_image_texts_template ir.ui.view qweb New
s_media_list Media List ir.ui.view qweb New
s_media_list_options s_media_list_options ir.ui.view qweb Inherits website.snippet_options
s_mega_menu_big_icons_subtitles Menu - Big icons & subtitles ir.ui.view qweb New
s_mega_menu_big_icons_subtitles_item s_mega_menu_big_icons_subtitles_item ir.ui.view qweb New
s_mega_menu_cards Menu - Cards ir.ui.view qweb New
s_mega_menu_cards_item s_mega_menu_cards_item ir.ui.view qweb New
s_mega_menu_images_subtitles Menu - images & subtitles ir.ui.view qweb New
s_mega_menu_images_subtitles_item s_mega_menu_images_subtitles_item ir.ui.view qweb New
s_mega_menu_little_icons Menu - Little icons ir.ui.view qweb New
s_mega_menu_menu_image_menu Menu - Image - Menu ir.ui.view qweb New
s_mega_menu_menus_logos Menus & logos ir.ui.view qweb New
s_mega_menu_multi_menus Multi-Menus ir.ui.view qweb New
s_mega_menu_odoo_menu Odoo Menu ir.ui.view qweb New
s_mega_menu_thumbnails Menu - Thumbnails ir.ui.view qweb New
s_mega_menu_thumbnails_item s_mega_menu_thumbnails_item ir.ui.view qweb New
s_numbers Numbers ir.ui.view qweb New
s_parallax Parallax ir.ui.view qweb New
s_picture Picture ir.ui.view qweb New
s_popup Popup ir.ui.view qweb New
s_popup_options s_popup_options ir.ui.view qweb Inherits website.snippet_options
s_process_steps Steps ir.ui.view qweb New
s_product_catalog Pricelist ir.ui.view qweb New
s_product_catalog_add_product_widget s_product_catalog_add_product_widget ir.ui.view qweb New
s_product_catalog_dish s_product_catalog_dish ir.ui.view qweb New
s_product_catalog_options s_product_catalog_options ir.ui.view qweb Inherits website.snippet_options
s_product_list Items ir.ui.view qweb New
s_progress_bar Progress Bar ir.ui.view qweb New
s_progress_bar_options s_progress_bar_options ir.ui.view qweb Inherits website.snippet_options
s_quotes_carousel Quotes ir.ui.view qweb New
s_rating Rating ir.ui.view qweb New
s_rating_options s_rating_options ir.ui.view qweb Inherits website.snippet_options
s_references References ir.ui.view qweb New
s_searchbar Search ir.ui.view qweb New
s_searchbar_input Search ir.ui.view qweb New
s_share Share ir.ui.view qweb New
s_share_options s_share_options ir.ui.view qweb Inherits website.snippet_options
s_showcase Showcase ir.ui.view qweb New
s_showcase_options s_showcase_options ir.ui.view qweb Inherits website.snippet_options
s_table_of_content Table of Content ir.ui.view qweb New
s_table_of_content_options s_table_of_content_options ir.ui.view qweb Inherits website.snippet_options
s_tabs Tabs ir.ui.view qweb New
s_tabs_options s_tabs_options ir.ui.view qweb Inherits website.snippet_options
s_text_block Text ir.ui.view qweb New
s_text_highlight Text Highlight ir.ui.view qweb New
s_text_image Text - Image ir.ui.view qweb New
s_three_columns Columns ir.ui.view qweb New
s_timeline Timeline ir.ui.view qweb New
s_timeline_options s_timeline_options ir.ui.view qweb Inherits website.snippet_options
s_title Title ir.ui.view qweb New
s_website_form Form ir.ui.view qweb New
s_website_form_options s_website_form_options ir.ui.view qweb Inherits website.snippet_options
search_text_with_highlight Website Searchbox item highlight ir.ui.view qweb New
searchbar_input_snippet_options search bar snippet options ir.ui.view qweb Inherits website.snippet_options
show_website_info Show Odoo Information ir.ui.view qweb Inherits website.website_info
sitemap_index_xml sitemap_index_xml ir.ui.view qweb New
sitemap_locs sitemap_locs ir.ui.view qweb New
sitemap_xml sitemap_xml ir.ui.view qweb New
snippet_options snippet_options ir.ui.view qweb New
snippet_options_background_options snippet_options_background_options ir.ui.view qweb Inherits web_editor.snippet_options_background_options
snippet_options_border_line_widgets snippet_options_border_line_widgets ir.ui.view qweb New
snippet_options_border_widgets snippet_options_border_widgets ir.ui.view qweb New
snippet_options_conditional_visibility snippet_options_conditional_visibility ir.ui.view qweb New
snippet_options_header_brand snippet_options_header_brand ir.ui.view qweb New
snippet_options_shadow_widgets snippet_options_shadow_widgets ir.ui.view qweb New
snippets snippets ir.ui.view qweb Inherits web_editor.snippets
snippets_debug_view Snippet Debug t New
submenu Submenu ir.ui.view qweb New
template_footer_call_to_action Call-to-Action ir.ui.view qweb Inherits website.layout
template_footer_centered Centered ir.ui.view qweb Inherits website.layout
template_footer_contact Contact ir.ui.view qweb Inherits website.layout
template_footer_descriptive Descriptive ir.ui.view qweb Inherits website.layout
template_footer_headline Headline ir.ui.view qweb Inherits website.layout
template_footer_links Links ir.ui.view qweb Inherits website.layout
template_footer_minimalist Minimalist ir.ui.view qweb Inherits website.layout
template_footer_slideout Template Footer Slideout ir.ui.view qweb Inherits website.layout
template_header_boxed Template Header Boxed ir.ui.view qweb Inherits website.layout
template_header_boxed_oe_structure_header_boxed_1 Template Header Boxed (oe_structure_header_boxed_1) ir.ui.view qweb Inherits website.template_header_boxed
template_header_centered_logo Template Header Centered Logo ir.ui.view qweb Inherits website.layout
template_header_contact Template Header Contact ir.ui.view qweb Inherits website.layout
template_header_contact_oe_structure_header_contact_1 Template Header Contact (oe_structure_header_contact_1) ir.ui.view qweb Inherits website.template_header_contact
template_header_default Template Header Default ir.ui.view qweb Inherits website.layout
template_header_default_align_center template_header_default_align_center ir.ui.view qweb Inherits website.template_header_default
template_header_default_align_right template_header_default_align_right ir.ui.view qweb Inherits website.template_header_default
template_header_hamburger Template Header Hamburger ir.ui.view qweb Inherits website.layout
template_header_hamburger_align_center template_header_hamburger_align_center ir.ui.view qweb Inherits website.template_header_hamburger
template_header_hamburger_align_right template_header_hamburger_align_right ir.ui.view qweb Inherits website.template_header_hamburger
template_header_hamburger_full Template Header Hambuger Full ir.ui.view qweb Inherits website.layout
template_header_hamburger_full_oe_structure_header_hamburger_full_1 Template Header Hamburger Full (oe_structure_header_hamburger_full_1) ir.ui.view qweb Inherits website.template_header_hamburger_full
template_header_hamburger_oe_structure_header_hamburger_2 Template Header Hamburger (oe_structure_header_hamburger_2) ir.ui.view qweb Inherits website.template_header_hamburger
template_header_hamburger_oe_structure_header_hamburger_3 Template Header Hamburger (oe_structure_header_hamburger_3) ir.ui.view qweb Inherits website.template_header_hamburger
template_header_image Template Header Image ir.ui.view qweb Inherits website.layout
template_header_image_oe_structure_header_image_1 Template Header image (oe_structure_header_image_1) ir.ui.view qweb Inherits website.template_header_image
template_header_magazine Template Header Magazine ir.ui.view qweb Inherits website.layout
template_header_magazine_oe_structure_header_magazine_1 Template Header Magazine (oe_structure_header_magazine_1) ir.ui.view qweb Inherits website.template_header_magazine
template_header_sidebar Template Header Sidebar ir.ui.view qweb Inherits website.layout
template_header_sidebar_oe_structure_header_sidebar_1 Template Header Sidebar (oe_structure_header_sidebar_1) ir.ui.view qweb Inherits website.template_header_sidebar
template_header_slogan Template Header Slogan ir.ui.view qweb Inherits website.layout
template_header_slogan_align_center template_header_slogan_align_center ir.ui.view qweb Inherits website.template_header_slogan
template_header_slogan_align_right template_header_slogan_align_right ir.ui.view qweb Inherits website.template_header_slogan
template_header_slogan_oe_structure_header_slogan_1 Template Header Slogan (oe_structure_header_slogan_1) ir.ui.view qweb Inherits website.template_header_slogan
template_header_slogan_oe_structure_header_slogan_3 Template Header Slogan (oe_structure_header_slogan_3) ir.ui.view qweb Inherits website.template_header_slogan
template_header_vertical Template Header Vertical ir.ui.view qweb Inherits website.layout
template_header_vertical_oe_structure_header_vertical_1 Template Header Vertical (oe_structure_header_vertical_1) ir.ui.view qweb Inherits website.template_header_vertical
template_header_vertical_oe_structure_header_vertical_2 Template Header Vertical (oe_structure_header_vertical_2) ir.ui.view qweb Inherits website.template_header_vertical
template_header_vertical_oe_structure_header_vertical_3 Template Header Vertical (oe_structure_header_vertical_3) ir.ui.view qweb Inherits website.template_header_vertical
theme_view_form_preview website.form ir.module.module form New
theme_view_kanban Themes Kanban ir.module.module kanban New
theme_view_search Themes Search ir.module.module search New
user_dropdown user_dropdown ir.ui.view qweb Inherits portal.user_dropdown
user_navbar User Navbar ir.ui.view qweb Inherits website.layout
view_arch_only website.ir_ui_view.arch_only ir.ui.view form New
view_attachment_form_inherit_website ir.attachment.form.inherit.website ir.attachment field Inherits base.view_attachment_form
view_attachment_tree_inherit_website ir.attachment.tree.inherit.website ir.attachment field Inherits base.view_attachment_tree
view_base_language_install view_base_language_install.inherit base.language.install group Inherits base.view_base_language_install
view_edit_robots Edit Robots.txt website.robots form New
view_partner_form_inherit_website res.partner.form.website.inherit res.partner xpath Inherits base.view_partner_form
view_rewrite_search website.rewrite.search website.rewrite search New
view_server_action_form_website ir.actions.server.form.website ir.actions.server data Inherits base.view_server_action_form
view_server_action_search_website ir.actions.server.search.website ir.actions.server xpath Inherits base.view_server_action_search
view_server_action_tree_website ir.actions.server.tree.website ir.actions.server xpath Inherits base.view_server_action_tree
view_view_form_extend ir.ui.view field Inherits base.view_view_form
view_view_qweb View Hierarchy ir.ui.view qweb New
view_view_tree_inherit_website ir.ui.view tree Inherits base.view_view_tree
view_website_form website.form website form New
view_website_form_view_themes_modal website.modal.form website xpath Inherits website.view_website_form
view_website_rewrite_form website.rewrite form New
view_website_tree website.tree website tree New
website.aboutus About Us ir.ui.view qweb New
website.compiled_assets_wysiwyg Website Editor Assets (used in website editor) ir.ui.view qweb New
website.contactus Contact Us ir.ui.view qweb New
website.header_call_to_action Header Call to Action ir.ui.view qweb Inherits website.placeholder_header_call_to_action
website.homepage Home ir.ui.view qweb New
website.our_services Services ir.ui.view qweb New
website.placeholder_header_call_to_action Placeholder Header Call to Action ir.ui.view qweb New
website.s_dynamic_snippet_options_template website.s_dynamic_snippet_options_template ir.ui.view qweb New
website.s_dynamic_snippet_template website.s_dynamic_snippet_template ir.ui.view qweb New
website_configurator Website Configurator ir.ui.view qweb Inherits web.frontend_layout
website_info Odoo Information ir.ui.view qweb New
website_menus_form_view website.menu.form website.menu form New
website_pages_form_view website.page.form website.page form New
website_pages_tree_view website.page.list website.page tree New
website_pages_view_search website.page.view.search website.page search New
website_publisher Website Publisher ir.ui.view qweb New
website_search_box Website Searchbox ir.ui.view qweb New
website_search_box_input website_search_box_input ir.ui.view qweb Inherits website.website_search_box
website_visitor_page_view_graph website.track.view.graph website.track graph New
website_visitor_page_view_search website.track.view.search website.track search New
website_visitor_page_view_tree website.track.view.tree website.track tree New
website_visitor_track_view_graph website.track.view.graph website.track graph New
website_visitor_track_view_tree website.track.view.tree website.track tree New
website_visitor_view_form website.visitor.view.form website.visitor form New
website_visitor_view_graph website.visitor.view.graph website.visitor graph New
website_visitor_view_kanban website.visitor.view.kanban website.visitor kanban New
website_visitor_view_search website.visitor.view.search website.visitor search New
website_visitor_view_tree website.visitor.view.tree website.visitor tree New
Models touched (52)

New fields (0)

No new fields.

Public methods (2)
  • get_base_url(self)
    Returns the base url for a given record, given the following priority: 1. If the record has a `website_id` field, we use the url from this website as base url, if set. 2. If the record has a `company_id` field, we use the website from that company (if set). Note that a company doesn't really have a website, it is retrieve through some heuristic in its `website_id`'s compute. 3. Use the ICP `web.base.url` (super) :return: the base url for this record :rtype: string
  • get_website_meta(self)

New fields (1)
  • website_ids Many2many → website
    string='Websites to translate' args: 'website'
Public methods (2)
  • default_get(self, fields)
    @api.model
  • lang_install(self)

New fields (4)
  • website_path Char
    args: 'Website Path'
  • website_published Boolean
    copy=False help='A code server action can be executed from the website, using a dedicated controller. The address is <base>/website/action/<website_path>. Set this field as True to allow users to run this action. If it is set to False the action cannot be run through the website.' args: 'Available on the Website'
  • website_url Char
    compute='_get_website_url' help='The full URL to access the server action through the website.' args: 'Website Url'
  • xml_id Char
    compute='_compute_xml_id' help='ID of the action if defined in a XML file' args: 'External ID'
Public methods (0)

No public methods.

New fields (2)
  • key Char
    copy=False help='Technical field used to resolve multiple assets in a multi-website environment.'
  • website_id Many2one → website
    ondelete='cascade' args: 'website'
Public methods (2)
  • filter_duplicate(self)
    Filter current recordset only keeping the most suitable asset per distinct name. Every non-accessible asset will be removed from the set: * In non website context, every asset with a website will be removed * In a website context, every asset from another website
  • write(self, vals)
    COW for ir.asset. This way editing websites does not impact other websites. Also this way newly created websites will only contain the default assets.

New fields (1)
  • theme_template_id Many2one → theme.ir.asset
    copy=False args: 'theme.ir.asset'
Public methods (0)

No public methods.

New fields (3)
  • key Char
    help='Technical field used to resolve multiple attachments in a multi-website environment.'
  • website_id Many2one → website
    args: 'website'
  • website_url Char
    deprecated=True readonly=False related='local_url' string='Website URL'
Public methods (3)
  • create(self, vals)
    @api.model
  • get_serve_attachment(self, url, extra_domain=None, extra_fields=None, order=None)
    @api.model
  • get_serving_groups(self)
    @api.model

New fields (2)
  • key Char
    copy=False
  • theme_template_id Many2one → theme.ir.attachment
    copy=False args: 'theme.ir.attachment'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (4)
  • binary_content(self, xmlid=None, model='ir.attachment', id=None, field='datas', unique=False, filename=None, filename_field='name', download=False, mimetype=None, default_mimetype='application/octet-stream', access_token=None)
  • clear_caches(cls)
    @classmethod
  • get_frontend_session_info(self)
    @api.model
  • routing_map(cls, key=None)
    @classmethod

New fields (4)
  • website_form_access Boolean
    help='Enable the form builder feature for this model.' args: 'Allowed to use in forms'
  • website_form_default_field_id Many2one → ir.model.fields
    domain="[('model', '=', model), ('ttype', '=', 'text')]" help='Specify the field which will contain meta and custom form fields datas.' args: 'ir.model.fields', 'Field for custom form data'
  • website_form_key Char
    help='Used in FormBuilder Registry'
  • website_form_label Char
    help="Form action label. Ex: crm.lead could be 'Send an e-mail' and project.issue could be 'Create an Issue'." args: 'Label for form action'
Public methods (2)
  • get_authorized_fields(self, model_name)
    @api.model
    Return the fields of the given model name as a mapping like method `fields_get`.
  • get_compatible_form_models(self)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • website_form_blacklisted Boolean
    default=True help='Blacklist this field for web forms' index=True args: 'Blacklisted in web forms'
Public methods (2)
  • formbuilder_whitelist(self, model, fields)
    @api.model
    :param str model: name of the model on which to whitelist fields :param list(str) fields: list of fields to whitelist on the model :return: nothing of import
  • init(self)

New fields (2)
  • image_ids One2many → ir.attachment
    domain=[('res_model', '=', _name), ('mimetype', '=like', 'image/%')] readonly=True string='Screenshots' args: 'ir.attachment', 'res_id'
  • is_installed_on_current_website Boolean
    compute='_compute_is_installed_on_current_website'
Public methods (7)
  • button_choose_theme(self)
    Remove any existing theme on the current website and install the theme ``self`` instead. The actual loading of the theme on the current website will be done automatically on ``write`` thanks to the upgrade and/or install. When installating a new theme, upgrade the upstream chain first to make sure we have the latest version of the dependencies to prevent inconsistencies. :return: dict with the next action to execute
  • button_refresh_theme(self)
    Refresh the current theme of the current website. To refresh it, we only need to upgrade the modules. Indeed the (re)loading of the theme will be done automatically on ``write``.
  • button_remove_theme(self)
    Remove the current theme of the current website.
  • get_themes_domain(self)
    Returns the 'ir.module.module' search domain matching all available themes.
  • update_list(self)
    @api.model
  • update_theme_images(self)
    @api.model
  • write(self, vals)
    Override to correctly upgrade themes after upgrade/installation of modules. # Install If this theme wasn't installed before, then load it for every website for which it is in the stream. eg. The very first installation of a theme on a website will trigger this. eg. If a website uses theme_A and we install sale, then theme_A_sale will be autoinstalled, and in this case we need to load theme_A_sale for the website. # Upgrade There are 2 cases to handle when upgrading a theme: * When clicking on the theme upgrade button on the interface, in which case there will be an http request made. -> We want to upgrade the current website only, not any other. * When upgrading with -u, in which case no request should be set. -> We want to upgrade every website using this theme.

New fields (0)

No new fields.

Public methods (1)
  • get_asset_bundle(self, xmlid, files, env=None, css=True, js=True)

New fields (0)

No new fields.

Public methods (1)
  • get_available_options(self)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • value_to_html(self, value, options)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • load_menus_root(self)
    @api.model@tools.ormcache_context('self._uid', keys=('lang', 'force_action'))

New fields (7)
  • first_page_id Many2one → website.page
    compute='_compute_first_page_id' help='First page linked to this view' string='Website Page' args: 'website.page'
  • page_ids One2many → website.page
    args: 'website.page', 'view_id'
  • track Boolean
    default=False help='Allow to specify for one page of the website to be trackable or not' string='Track'
  • visibility Selection
    default='' args: [('', 'All'), ('connected', 'Signed In'), ('restricted_group', 'Restricted Group'), ('password', 'With Password')]
  • visibility_password Char
    copy=False groups='base.group_system'
  • visibility_password_display Char
    compute='_get_pwd' groups='website.group_website_designer' inverse='_set_pwd'
  • website_id Many2one → website
    ondelete='cascade' string='Website' args: 'website'
Public methods (10)
  • create(self, vals_list)
    @api.model_create_multi
    SOC for ir.ui.view creation. If a view is created without a website_id, it should get one if one is present in the context. Also check that an explicit website_id in create values matches the one in the context.
  • filter_duplicate(self)
    Filter current recordset only keeping the most suitable view per distinct key. Every non-accessible view will be removed from the set: * In non website context, every view with a website will be removed * In a website context, every view from another website
  • get_default_lang_code(self)
    @api.model
  • get_related_views(self, key, bundles=False)
    @api.model
    Make this only return most specific views for website.
  • get_view_id(self, xml_id)
    @api.model@tools.ormcache_context('self.env.uid', 'self.env.su', 'xml_id', keys=('website_id'))
    If a website_id is in the context and the given xml_id is not an int then try to get the id of the specific view for that website, but fallback to the id of the generic view if there is no specific. If no website_id is in the context, it might randomly return the generic or the specific view, so it's probably not recommanded to use this method. `viewref` is probably more suitable. Archived views are ignored (unless the active_test context is set, but then the ormcache_context will not work as expected).
  • name_get(self)
  • redirect_to_page_manager(self)
  • save(self, value, xpath=None)
  • unlink(self)
    This implements COU (copy-on-unlink). When deleting a generic page website-specific pages will be created so only the current website is affected.
  • write(self, vals)
    COW for ir.ui.view. This way editing websites does not impact other websites. Also this way newly created websites will only contain the default views.

New fields (1)
  • theme_template_id Many2one → theme.ir.ui.view
    copy=False args: 'theme.ir.ui.view'
Public methods (1)
  • write(self, vals)

New fields (0)

No new fields.

Public methods (1)
  • message_post_with_view(self, views_or_xmlid, **kwargs)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • website_id Many2one → website
    compute='_compute_website_id' store=True args: 'website'
Public methods (3)
  • action_open_website_theme_selector(self)
    @api.model
  • google_map_img(self, zoom=8, width=298, height=298)
  • google_map_link(self, zoom=8)

New fields (36)
  • auth_signup_uninvited Selection
    compute='_compute_auth_signup' inverse='_set_auth_signup'
  • cdn_activated Boolean
    readonly=False related='website_id.cdn_activated'
  • cdn_filters Text
    readonly=False related='website_id.cdn_filters'
  • cdn_url Char
    readonly=False related='website_id.cdn_url'
  • favicon Binary
    readonly=False related='website_id.favicon' args: 'Favicon'
  • google_analytics_key Char
    readonly=False related='website_id.google_analytics_key' args: 'Google Analytics Key'
  • google_management_client_id Char
    readonly=False related='website_id.google_management_client_id' args: 'Google Client ID'
  • google_management_client_secret Char
    readonly=False related='website_id.google_management_client_secret' args: 'Google Client Secret'
  • google_maps_api_key Char
    readonly=False related='website_id.google_maps_api_key'
  • google_search_console Char
    readonly=False related='website_id.google_search_console' args: 'Google Search Console'
  • group_multi_website Boolean
    implied_group='website.group_multi_website' args: 'Multi-website'
  • has_default_share_image Boolean
    compute=has_default_share_image inverse=inverse_has_default_share_image args: 'Use a image by default for sharing'
  • has_google_analytics Boolean
    compute=has_google_analytics inverse=inverse_has_google_analytics args: 'Google Analytics'
  • has_google_analytics_dashboard Boolean
    compute=has_google_analytics_dashboard inverse=inverse_has_google_analytics_dashboard args: 'Google Analytics Dashboard'
  • has_google_maps Boolean
    compute=has_google_maps inverse=inverse_has_google_maps args: 'Google Maps'
  • has_google_search_console Boolean
    compute=has_google_search_console inverse=inverse_has_google_search_console args: 'Console Google Search'
  • has_social_network Boolean
    compute=has_social_network inverse=inverse_has_social_network args: 'Configure Social Network'
  • language_ids Many2many
    readonly=False related='website_id.language_ids' relation='res.lang'
  • social_default_image Binary
    readonly=False related='website_id.social_default_image' args: 'Default Social Share Image'
  • social_facebook Char
    readonly=False related='website_id.social_facebook'
  • social_github Char
    readonly=False related='website_id.social_github'
  • social_instagram Char
    readonly=False related='website_id.social_instagram'
  • social_linkedin Char
    readonly=False related='website_id.social_linkedin'
  • social_twitter Char
    readonly=False related='website_id.social_twitter'
  • social_youtube Char
    readonly=False related='website_id.social_youtube'
  • specific_user_account Boolean
    help='Are newly created user accounts website specific' readonly=False related='website_id.specific_user_account'
  • website_company_id Many2one
    readonly=False related='website_id.company_id' string='Website Company'
  • website_cookies_bar Boolean
    readonly=False related='website_id.cookies_bar'
  • website_country_group_ids Many2many
    readonly=False related='website_id.country_group_ids'
  • website_default_lang_code Char
    readonly=False related='website_id.default_lang_id.code' args: 'Default language code'
  • website_default_lang_id Many2one
    readonly=False related='website_id.default_lang_id' string='Default language'
  • website_domain Char
    readonly=False related='website_id.domain' args: 'Website Domain'
  • website_id Many2one → website
    default=_default_website ondelete='cascade' string='website' args: 'website'
  • website_language_count Integer
    compute='_compute_website_language_count' readonly=True string='Number of languages'
  • website_logo Binary
    readonly=False related='website_id.logo'
  • website_name Char
    readonly=False related='website_id.name' args: 'Website Name'
Public methods (19)
  • action_open_robots(self)
  • action_ping_sitemap(self)
  • action_website_create_new(self)
  • has_default_share_image(self)
    @api.depends('website_id')
  • has_google_analytics(self)
    @api.depends('website_id')
  • has_google_analytics_dashboard(self)
    @api.depends('website_id')
  • has_google_maps(self)
    @api.depends('website_id')
  • has_google_search_console(self)
    @api.depends('website_id')
  • has_social_network(self)
    @api.depends('website_id', 'social_twitter', 'social_facebook', 'social_github', 'social_linkedin', 'social_youtube', 'social_instagram')
  • install_theme_on_current_website(self)
  • inverse_has_default_share_image(self)
  • inverse_has_google_analytics(self)
  • inverse_has_google_analytics_dashboard(self)
  • inverse_has_google_maps(self)
  • inverse_has_google_search_console(self)
  • inverse_has_social_network(self)
  • open_template_user(self)
  • set_values(self)
  • website_go_to(self)

New fields (0)

No new fields.

Public methods (2)
  • get_available(self)
    @api.model@tools.ormcache_context(keys=('website_id'))
  • write(self, vals)

New fields (1)
  • visitor_ids One2many → website.visitor
    string='Visitors' args: 'website.visitor', 'partner_id'
Public methods (2)
  • google_map_img(self, zoom=8, width=298, height=298)
  • google_map_link(self, zoom=10)

New fields (1)
  • website_id Many2one → website
    readonly=False related='partner_id.website_id' related_sudo=False store=True args: 'website'
Public methods (1)
  • authenticate(cls, db, login, password, user_agent_env)
    @classmethod
    Override to link the logged in user's res.partner to website.visitor. If both a request-based visitor and a user-based visitor exist we try to update them (have same partner_id), and move sub records to the main visitor (user one). Purpose is to try to keep a main visitor with as much sub-records (tracked pages, leads, ...) as possible.

New fields (9)
  • active Boolean
    default=True
  • bundle Char
    required=True
  • copy_ids One2many → ir.asset
    copy=False readonly=True args: 'ir.asset', 'theme_template_id', 'Assets using a copy of me'
  • directive Selection
    default=APPEND_DIRECTIVE selection=[(APPEND_DIRECTIVE, 'Append'), (PREPEND_DIRECTIVE, 'Prepend'), (AFTER_DIRECTIVE, 'After'), (BEFORE_DIRECTIVE, 'Before'), (REMOVE_DIRECTIVE, 'Remove'), (REPLACE_DIRECTIVE, 'Replace'), (INCLUDE_DIRECTIVE, 'Include')]
  • key Char
  • name Char
    required=True
  • path Char
    required=True
  • sequence Integer
    default=DEFAULT_SEQUENCE required=True
  • target Char
Public methods (0)

No public methods.

New fields (4)
  • copy_ids One2many → ir.attachment
    copy=False readonly=True args: 'ir.attachment', 'theme_template_id', 'Attachment using a copy of me'
  • key Char
    required=True
  • name Char
    required=True
  • url Char
Public methods (0)

No public methods.

New fields (11)
  • active Boolean
    default=True
  • arch Text
    translate=xml_translate
  • arch_fs Char
    default=compute_arch_fs
  • copy_ids One2many → ir.ui.view
    copy=False readonly=True args: 'ir.ui.view', 'theme_template_id', 'Views using a copy of me'
  • customize_show Boolean
  • inherit_id Reference
    selection=[('ir.ui.view', 'ir.ui.view'), ('theme.ir.ui.view', 'theme.ir.ui.view')]
  • key Char
  • mode Selection
    args: [('primary', 'Base view'), ('extension', 'Extension View')]
  • name Char
    required=True
  • priority Integer
    default=DEFAULT_SEQUENCE required=True
  • type Char
Public methods (1)
  • compute_arch_fs(self)

New fields (0)

No new fields.

Public methods (5)
  • disable_asset(self, name)
    @api.model
  • disable_view(self, xml_id)
    @api.model
  • enable_asset(self, name)
    @api.model
  • enable_header_off_canvas(self)
    @api.model
    Enabling off canvas require to enable quite a lot of template so this shortcut was made to make it easier.
  • enable_view(self, xml_id)
    @api.model

New fields (7)
  • copy_ids One2many → website.menu
    copy=False readonly=True args: 'website.menu', 'theme_template_id', 'Menu using a copy of me'
  • name Char
    required=True translate=True
  • new_window Boolean
    args: 'New Window'
  • page_id Many2one → theme.website.page
    ondelete='cascade' args: 'theme.website.page'
  • parent_id Many2one → theme.website.menu
    index=True ondelete='cascade' args: 'theme.website.menu'
  • sequence Integer
  • url Char
    default=''
Public methods (0)

No public methods.

New fields (4)
  • copy_ids One2many → website.page
    copy=False readonly=True args: 'website.page', 'theme_template_id', 'Page using a copy of me'
  • url Char
  • view_id Many2one → theme.ir.ui.view
    ondelete='cascade' required=True args: 'theme.ir.ui.view'
  • website_indexed Boolean
    default=True args: 'Page Indexed'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • make_scss_customization(self, url, values)
    Makes a scss customization of the given file. That file must contain a scss map including a line comment containing the word 'hook', to indicate the location where to write the new key,value pairs. Params: url (str): the URL of the scss file to customize (supposed to be a variable file which will appear in the assets_common bundle) values (dict): key,value mapping to integrate in the file's map (containing the word hook). If a key is already in the file's map, its value is overridden.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (38)
  • auth_signup_uninvited Selection
    default='b2b' string='Customer Account' args: [('b2b', 'On invitation'), ('b2c', 'Free sign up')]
  • auto_redirect_lang Boolean
    default=True help="Should users be redirected to their browser's language" args: 'Autoredirect Language'
  • cdn_activated Boolean
    args: 'Content Delivery Network (CDN)'
  • cdn_filters Text
    default=<expr> help='URL matching those filters will be rewritten using the CDN Base URL' args: 'CDN Filters'
  • cdn_url Char
    default='' args: 'CDN Base URL'
  • company_id Many2one → res.company
    default=<expr> required=True string='Company' args: 'res.company'
  • configurator_done Boolean
    help='True if configurator has been completed or ignored'
  • cookies_bar Boolean
    help='Display a customizable cookies bar on your website.' args: 'Cookies Bar'
  • country_group_ids Many2many → res.country.group
    help='Used when multiple websites have the same domain.' string='Country Groups' args: 'res.country.group', 'website_country_group_rel', 'website_id', 'country_group_id'
  • custom_code_footer Html
    sanitize=False args: 'Custom end of <body> code'
  • custom_code_head Html
    sanitize=False args: 'Custom <head> code'
  • default_lang_id Many2one → res.lang
    default=_default_language required=True string='Default Language' args: 'res.lang'
  • domain Char
    help='E.g. https://www.mydomain.com' args: 'Website Domain'
  • favicon Binary
    default=_default_favicon help='This field holds the image used to display a favicon on the website.' string='Website Favicon'
  • google_analytics_key Char
    args: 'Google Analytics Key'
  • google_management_client_id Char
    args: 'Google Client ID'
  • google_management_client_secret Char
    args: 'Google Client Secret'
  • google_maps_api_key Char
    args: 'Google Maps API Key'
  • google_search_console Char
    help='Google key, or Enable to access first reply'
  • has_social_default_image Boolean
    compute='_compute_has_social_default_image' store=True
  • homepage_id Many2one → website.page
    string='Homepage' args: 'website.page'
  • language_ids Many2many → res.lang
    default=_active_languages args: 'res.lang', 'website_lang_rel', 'website_id', 'lang_id', 'Languages'
  • logo Binary
    default=_default_logo help='Display this logo on the website.' args: 'Website Logo'
  • menu_id Many2one → website.menu
    compute='_compute_menu' string='Main Menu' args: 'website.menu'
  • name Char
    required=True args: 'Website Name'
  • partner_id Many2one
    readonly=False related='user_id.partner_id' string='Public Partner'
  • robots_txt Html
    groups='website.group_website_designer' sanitize=False translate=False args: 'Robots.txt'
  • sequence Integer
    default=10
  • social_default_image Binary
    help='If set, replaces the website logo as the default social share image.' string='Default Social Share Image'
  • social_facebook Char
    default=_default_social_facebook args: 'Facebook Account'
  • social_github Char
    default=_default_social_github args: 'GitHub Account'
  • social_instagram Char
    default=_default_social_instagram args: 'Instagram Account'
  • social_linkedin Char
    default=_default_social_linkedin args: 'LinkedIn Account'
  • social_twitter Char
    default=_default_social_twitter args: 'Twitter Account'
  • social_youtube Char
    default=_default_social_youtube args: 'Youtube Account'
  • specific_user_account Boolean
    help='If True, new accounts will be associated to the current website' args: 'Specific User Account'
  • theme_id Many2one → ir.module.module
    help='Installed theme' args: 'ir.module.module'
  • user_id Many2one → res.users
    required=True string='Public User' args: 'res.users'
Public methods (35)
  • action_dashboard_redirect(self)
    @api.model
  • button_go_website(self, path='/', mode_edit=False)
  • configurator_apply(self, **kwargs)
    @api.model
  • configurator_get_footer_links(self)
  • configurator_init(self)
    @api.model
  • configurator_recommended_themes(self, industry_id, palette)
    @api.model
  • configurator_set_menu_links(self, menu_company, module_data)
  • configurator_skip(self)
    @api.model
  • copy_menu_hierarchy(self, top_menu)
  • create(self, vals)
    @api.model
  • create_and_redirect_configurator(self)
  • get_cdn_url(self, uri)
  • get_cta_data(self, website_purpose, website_type)
  • get_current_website(self, fallback=True)
    @api.model
    The current website is returned in the following order: - the website forced in session `force_website_id` - the website set in context - (if frontend or fallback) the website matching the request's "domain" - arbitrary the first website found in the database if `fallback` is set to `True` - empty browse record
  • get_suggested_controllers(self)
    Returns a tuple (name, url, icon). Where icon can be a module name, or a path
  • get_template(self, template)
    @api.model
  • get_theme_snippet_lists(self, theme_name)
    @api.model
  • get_unique_key(self, string, template_module=False)
    Given a string, return an unique key including module prefix. It will be suffixed by a counter if it already exists to garantee uniqueness. :param string : the key to be checked for uniqueness, you can pass it with 'website.' or not :param template_module : the module to be prefixed on the key, if not set, we will use website
  • get_unique_path(self, page_url)
    Given an url, return that url suffixed by counter if it already exists :param page_url : the url to be checked for uniqueness
  • guess_mimetype(self)
    @api.model
  • image_url(self, record, field, size=None)
    @api.model
    Returns a local url that points to the image field of a given browse record.
  • is_public_user(self)
    @api.model
  • is_publisher(self)
    @api.model
  • is_user(self)
    @api.model
  • is_view_active(self, key, raise_if_not_found=False)
    @tools.ormcache_context('key', keys=('website_id'))
    Return True if active, False if not active, None if not found or not a customize_show view
  • new_page(self, name=False, add_menu=False, template='website.default_page', ispage=True, namespace=None, page_values=None, menu_values=None)
    @api.model
    Create a new website page, and assign it a xmlid based on the given one :param name : the name of the page :param add_menu : if True, add a menu for that page :param template : potential xml_id of the page to create :param namespace : module part of the xml_id if none, the template module name is used :param page_values : default values for the page to be created :param menu_values : default values for the menu to be created
  • page_search_dependencies(self, page_id=False)
    @api.model
    Search dependencies just for information. It will not catch 100% of dependencies and False positive is more than possible Each module could add dependences in this dict :returns a dictionnary where key is the 'categorie' of object related to the given view, and the value is the list of text and link to the resource using given page
  • page_search_key_dependencies(self, page_id=False)
    @api.model
    Search dependencies just for information. It will not catch 100% of dependencies and False positive is more than possible Each module could add dependences in this dict :returns a dictionnary where key is the 'categorie' of object related to the given view, and the value is the list of text and link to the resource using given page
  • pager(self, url, total, page=1, step=30, scope=5, url_args=None)
    @api.model
  • rule_is_enumerable(self, rule)
    Checks that it is possible to generate sensible GET queries for a given rule (if the endpoint matches its own requirements) :type rule: werkzeug.routing.Rule :rtype: bool
  • search_pages(self, needle=None, limit=None)
  • unlink(self)
  • viewref(self, view_id, raise_if_not_found=True)
    @api.model
    Given an xml_id or a view_id, return the corresponding view record. In case of website context, return the most specific one. If no website_id is in the context, it will return the generic view, instead of a random one like `get_view_id`. Look also for archived views, no matter the context. :param view_id: either a string xml_id or an integer view_id :param raise_if_not_found: should the method raise an error if no view found :return: The view record or empty recordset
  • website_domain(self, website_id=False)
    @api.model
  • write(self, values)

New fields (11)
  • description Char
    translate=True
  • feature_url Char
  • iap_page_code Char
    help='Page code used to tell IAP website_service for which page a snippet list should be generated'
  • icon Char
  • menu_company Boolean
    help='If set, add the menu as a second level menu, as a child of "Company" menu.'
  • menu_sequence Integer
    help='If set, a website menu will be created for the feature.'
  • module_id Many2one → ir.module.module
    ondelete='cascade' args: 'ir.module.module'
  • name Char
    translate=True
  • page_view_id Many2one → ir.ui.view
    ondelete='cascade' args: 'ir.ui.view'
  • sequence Integer
  • website_config_preselection Char
    help='Comma-separated list of website type/purpose for which this feature should be pre-selected'
Public methods (0)

No public methods.

New fields (1)
  • cover_properties Text
    default=<expr> args: 'Cover Properties'
Public methods (1)
  • write(self, vals)

New fields (14)
  • child_id One2many → website.menu
    string='Child Menus' args: 'website.menu', 'parent_id'
  • group_ids Many2many → res.groups
    help='User need to be at least in one of these groups to see the menu' string='Visible Groups' args: 'res.groups'
  • is_mega_menu Boolean
    compute=_compute_field_is_mega_menu inverse=_set_field_is_mega_menu
  • is_visible Boolean
    compute='_compute_visible' string='Is Visible'
  • mega_menu_classes Char
  • mega_menu_content Html
    prefetch=True sanitize=False translate=html_translate
  • name Char
    required=True translate=True args: 'Menu'
  • new_window Boolean
    args: 'New Window'
  • page_id Many2one → website.page
    ondelete='cascade' args: 'website.page', 'Related Page'
  • parent_id Many2one → website.menu
    index=True ondelete='cascade' args: 'website.menu', 'Parent Menu'
  • parent_path Char
    index=True
  • sequence Integer
    default=_default_sequence
  • url Char
    default='' args: 'Url'
  • website_id Many2one → website
    ondelete='cascade' args: 'website', 'Website'
Public methods (7)
  • clean_url(self)
    @api.model
  • create(self, vals)
    @api.model
    In case a menu without a website_id is trying to be created, we duplicate it for every website. Note: Particulary useful when installing a module that adds a menu like /shop. So every website has the shop menu. Be careful to return correct record for ir.model.data xml_id in case of default main menus creation.
  • get_tree(self, website_id, menu_id=None)
    @api.model
  • name_get(self)
  • save(self, website_id, data)
    @api.model
  • unlink(self)
  • write(self, values)

New fields (1)
  • theme_template_id Many2one → theme.website.menu
    copy=False args: 'theme.website.menu'
Public methods (0)

No public methods.

New fields (1)
  • website_id Many2one → website
    help='Restrict publishing to this website.' index=True ondelete='restrict' string='Website' args: 'website'
Public methods (1)
  • can_access_from_current_website(self, website_id=False)

New fields (15)
  • arch Text
    depends_context=('website_id') readonly=False related='view_id.arch'
  • cache_key_expr Char
    help='Expression (tuple) to evaluate the cached key. \nE.g.: "(request.params.get("currency"), )"'
  • cache_time Integer
    default=3600 help='Time to cache the page. (0 = no cache)'
  • date_publish Datetime
    args: 'Publishing Date'
  • footer_visible Boolean
    default=True
  • header_color Char
  • header_overlay Boolean
  • header_visible Boolean
    default=True
  • is_homepage Boolean
    compute='_compute_homepage' inverse='_set_homepage' string='Homepage'
  • is_visible Boolean
    compute='_compute_visible' string='Is Visible'
  • menu_ids One2many → website.menu
    args: 'website.menu', 'page_id', 'Related Menus'
  • url Char
    args: 'Page URL'
  • view_id Many2one → ir.ui.view
    ondelete='cascade' required=True string='View' args: 'ir.ui.view'
  • website_id Many2one
    ondelete='cascade' readonly=False related='view_id.website_id' store=True
  • website_indexed Boolean
    default=True args: 'Is Indexed'
Public methods (7)
  • clone_page(self, page_id, page_name=None, clone_menu=True)
    @api.model
    Clone a page, given its identifier :param page_id : website.page identifier
  • copy(self, default=None)
    @api.returns('self', <expr>)
  • get_page_properties(self)
  • get_website_meta(self)
  • save_page_info(self, website_id, data)
    @api.model
  • unlink(self)
  • write(self, vals)

New fields (1)
  • theme_template_id Many2one → theme.website.page
    copy=False args: 'theme.website.page'
Public methods (0)

No public methods.

New fields (4)
  • can_publish Boolean
    compute='_compute_can_publish' args: 'Can Publish'
  • is_published Boolean
    copy=False default=<expr> index=True args: 'Is Published'
  • website_published Boolean
    readonly=False related='is_published' args: 'Visible on current website'
  • website_url Char
    compute='_compute_website_url' help='The full URL to access the document through the website.' args: 'Website URL'
Public methods (5)
  • create(self, vals_list)
    @api.model_create_multi
  • create_and_get_website_url(self, **kwargs)
  • open_website_url(self)
  • website_publish_button(self)
  • write(self, values)

New fields (8)
  • active Boolean
    default=True
  • name Char
    required=True args: 'Name'
  • redirect_type Selection
    default='302' help="Type of redirect/Rewrite:\n\n 301 Moved permanently: The browser will keep in cache the new url.\n 302 Moved temporarily: The browser will not keep in cache the new url and ask again the next time the new url.\n 404 Not Found: If you want remove a specific page/controller (e.g. Ecommerce is installed, but you don't want /shop on a specific website)\n 308 Redirect / Rewrite: If you want rename a controller with a new url. (Eg: /shop -> /garden - Both url will be accessible but /shop will automatically be redirected to /garden)\n " string='Action' args: [('404', '404 Not Found'), ('301', '301 Moved permanently'), ('302', '302 Moved temporarily'), ('308', '308 Redirect / Rewrite')]
  • route_id Many2one → website.route
    args: 'website.route'
  • sequence Integer
  • url_from Char
    index=True args: 'URL from'
  • url_to Char
    args: 'URL to'
  • website_id Many2one → website
    index=True ondelete='cascade' string='Website' args: 'website'
Public methods (5)
  • create(self, vals)
    @api.model
  • name_get(self)
  • refresh_routes(self)
  • unlink(self)
  • write(self, vals)

New fields (1)
  • content Text
    default=<expr>
Public methods (1)
  • action_save(self)

New fields (1)
  • path Char
    args: 'Route'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (6)
  • is_seo_optimized Boolean
    compute='_compute_is_seo_optimized' args: 'SEO optimized'
  • seo_name Char
    translate=True args: 'Seo name'
  • website_meta_description Text
    translate=True args: 'Website meta description'
  • website_meta_keywords Char
    translate=True args: 'Website meta keywords'
  • website_meta_og_img Char
    args: 'Website opengraph image'
  • website_meta_title Char
    translate=True args: 'Website meta title'
Public methods (1)
  • get_website_meta(self)
    This method will return final meta information. It will replace default values with user's custom value (if user modified it from the seo popup of frontend) This method is not meant for overridden. To customize meta values override `_default_website_meta` method instead of this method. This method only replaces user custom values in defaults.

New fields (7)
  • action_server_id Many2one → ir.actions.server
    ondelete='cascade' args: 'ir.actions.server', 'Server Action'
  • field_names Char
    help='A list of comma-separated field names' required=True
  • filter_id Many2one → ir.filters
    ondelete='cascade' args: 'ir.filters', 'Filter'
  • limit Integer
    help='The limit is the maximum number of records retrieved' required=True
  • model_name Char
    compute='_compute_model_name' string='Model name'
  • name Char
    required=True translate=True
  • website_id Many2one → website
    ondelete='cascade' string='Website' args: 'website'
Public methods (0)

No public methods.

New fields (4)
  • page_id Many2one → website.page
    index=True ondelete='cascade' readonly=True args: 'website.page'
  • url Text
    index=True args: 'Url'
  • visit_datetime Datetime
    default=fields.Datetime.now readonly=True required=True args: 'Visit Date'
  • visitor_id Many2one → website.visitor
    index=True ondelete='cascade' readonly=True required=True args: 'website.visitor'
Public methods (0)

No public methods.

New fields (22)
  • access_token Char
    copy=False default=<expr> groups='website.group_website_publisher' index=False required=True
  • active Boolean
    default=True args: 'Active'
  • country_flag Char
    related='country_id.image_url' string='Country Flag'
  • country_id Many2one → res.country
    readonly=True args: 'res.country', 'Country'
  • create_date Datetime
    readonly=True args: 'First Connection'
  • email Char
    compute='_compute_email_phone' compute_sudo=True string='Email'
  • is_connected Boolean
    compute='_compute_time_statistics' help='A visitor is considered as connected if his last page view was within the last 5 minutes.' args: 'Is connected ?'
  • lang_id Many2one → res.lang
    help='Language from the website when visitor has been created' string='Language' args: 'res.lang'
  • last_connection_datetime Datetime
    default=fields.Datetime.now help='Last page view date' readonly=True args: 'Last Connection'
  • last_visited_page_id Many2one → website.page
    compute='_compute_last_visited_page_id' string='Last Visited Page' args: 'website.page'
  • mobile Char
    compute='_compute_email_phone' compute_sudo=True string='Mobile'
  • name Char
    args: 'Name'
  • page_count Integer
    compute='_compute_page_statistics' help='Total number of tracked page visited' args: '# Visited Pages'
  • page_ids Many2many → website.page
    compute='_compute_page_statistics' groups='website.group_website_designer' search='_search_page_ids' string='Visited Pages' args: 'website.page'
  • partner_id Many2one → res.partner
    help='Partner of the last logged in user.' string='Contact' args: 'res.partner'
  • partner_image Binary
    related='partner_id.image_1920'
  • time_since_last_action Char
    compute='_compute_time_statistics' help='Time since last page view. E.g.: 2 minutes ago' args: 'Last action'
  • timezone Selection
    string='Timezone' args: _tz_get
  • visit_count Integer
    default=1 help='A new visit is considered if last connection was more than 8 hours ago.' readonly=True args: '# Visits'
  • visitor_page_count Integer
    compute='_compute_page_statistics' help='Total number of visits on tracked pages' args: 'Page Views'
  • website_id Many2one → website
    readonly=True args: 'website', 'Website'
  • website_track_ids One2many → website.track
    readonly=True string='Visited Pages History' args: 'website.track', 'visitor_id'
Public methods (2)
  • action_send_mail(self)
  • name_get(self)
    @api.depends('name')
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/14.0/website
VERSION
VERSION 1.0
CATEGORY
CATEGORYWebsite/Website
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Olivier Dony, Thibault Delavallée, Denis Ledoux, Christophe Simonis, Xavier Morel, Goffin Simon, Nicolas Martinelli, Nicolas Lempereur, Aaron Bohy, Jeremy Kersten, GitHub, Lucas Perais (lpe), Barad Mahendra, Yannick Tivisse, qsm-odoo, Dharmraj Jhala, SEINLET Nicolas, Romain Derie, Adrien Dieudonne, Christophe Monniez, Jorge Pinna Puissant, Toufik Ben Jaa, Adrian Torres, Julien Castiaux, Xavier-Do, David Tran, Romeo Fragomeli, jvm-odoo, Victor Feyens, Paul Morelle, Sébastien Theys, Nasreddin (bon), Florent de Labarre, Julien Mougenot, Jason Van Malder, fw-bot, Samuel Degueldre, std-odoo, Achraf (abz), David Beguin, Ivan Yelizariev, Jérémy Hennecart, Nasreddin Boulif (bon), Swapnesh Shah, nie, Tiffany Chang (tic), IEL, Thanh Dodeur, Denis Mudarisov, fja-odoo, Younn Olivier, Mathieu Duckerts-Antoine, Pierre Paridans, Kamen Zhekov, Hiral Bhavsar, root, Kevin Baptiste, Benjamin Vray, Benoit Socias, Guillaume (gdi), diagnoza, jpr-odoo, Sébastien Mottet (oms), Huy Le, Arthur Detroux (ard), Swapnesh, Goaman, Antoine Vandevenne (anv), Laurent Stukkens (LTU), Cocographique, DramixDw, Francois (fge), Louis Wicket (wil), nda, Siddarth Gajjar, Tom De Caluwé, Saurabh Mishra, Chintan Panchal (can), Om Rabara, Huy Lee, Soukéina Bojabza, Miika Nissi, Robin Lejeune (role), xO-Tx, Munaf Khan, duongnguyen, Louis (loco)
WEBSITE
WEBSITEhttps://www.odoo.com/page/website-builder
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:14:28
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - digest
    - mail
    - base
    - base_setup
    - web
    - bus
    - web_tour
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - resource
    - social_media
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (308)
XML IDNameModelTypeStatus
_assets_frontend_helpers _assets_frontend_helpers ir.ui.view qweb Inherits portal._assets_frontend_helpers
_assets_frontend_helpers_user_custom _assets_frontend_helpers_user_custom ir.ui.view qweb Inherits web._assets_frontend_helpers
_assets_primary_variables _assets_primary_variables ir.ui.view qweb Inherits portal._assets_primary_variables
_assets_secondary_variables _assets_secondary_variables ir.ui.view qweb Inherits web_editor._assets_secondary_variables
_assets_snippet_s_badge_css_000_variables _assets_snippet_s_badge_css_000_variables ir.ui.view qweb Inherits website._assets_primary_variables
_assets_snippet_s_masonry_block_css_000_variables _assets_snippet_s_masonry_block_css_000_variables ir.ui.view qweb Inherits website._assets_primary_variables
_assets_snippet_s_product_list_css_000_variables _assets_snippet_s_product_list_css_000_variables ir.ui.view qweb Inherits website._assets_primary_variables
action_website_rewrite_tree website.rewrite.list website.rewrite tree New
assets_backend Website Backend Assets (used in backend interface) ir.ui.view qweb Inherits web.assets_backend
assets_frontend Website Assets ir.ui.view qweb Inherits portal.assets_frontend
assets_frontend_compatibility_for_12_0 assets_frontend_compatibility_for_12_0 ir.ui.view qweb Inherits website.assets_frontend
assets_frontend_user_custom Website Assets user custom ir.ui.view qweb Inherits web.assets_frontend
assets_snippet_s_alert_css_000 assets_snippet_s_alert_css_000 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_badge_css_000 assets_snippet_s_badge_css_000 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_blockquote_css_000 assets_snippet_s_blockquote_css_000 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_btn_css_000 assets_snippet_s_btn_css_000 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_card_css_000 assets_snippet_s_card_css_000 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_chart_js_000 assets_snippet_s_chart_js_000 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_color_blocks_2_css_000 assets_snippet_s_color_blocks_2_css_000 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_company_team_css_000 assets_snippet_s_company_team_css_000 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_comparisons_css_000 assets_snippet_s_comparisons_css_000 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_countdown_js_000 assets_snippet_s_countdown_js_000 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_dynamic_snippet_carousel_css_000 assets_snippet_s_dynamic_snippet_carousel_css_000 ir.ui.view qweb Inherits website.assets_snippet_s_dynamic_snippet_css_000
assets_snippet_s_dynamic_snippet_carousel_js_000 assets_snippet_s_dynamic_snippet_carousel_js_000 ir.ui.view qweb Inherits website.assets_snippet_s_dynamic_snippet_js_000
assets_snippet_s_dynamic_snippet_css_000 assets_snippet_s_dynamic_snippet_css_000 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_dynamic_snippet_js_000 assets_snippet_s_dynamic_snippet_js_000 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_facebook_page_js_000 assets_snippet_s_facebook_page_js_000 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_faq_collapse_css_000 assets_snippet_s_faq_collapse_css_000 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_features_grid_css_000 assets_snippet_s_features_grid_css_000 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_google_map_css_000 assets_snippet_s_google_map_css_000 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_google_map_js_000 assets_snippet_s_google_map_js_000 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_hr_css_000 assets_snippet_s_hr_css_000 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_image_gallery_css_000 assets_snippet_s_image_gallery_css_000 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_image_gallery_css_001 assets_snippet_s_image_gallery_css_001 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_image_gallery_js_000 assets_snippet_s_image_gallery_js_000 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_masonry_block_css_000 assets_snippet_s_masonry_block_css_000 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_masonry_block_css_001 assets_snippet_s_masonry_block_css_001 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_media_list_css_000 assets_snippet_s_media_list_css_000 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_media_list_css_001 assets_snippet_s_media_list_css_001 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_numbers_css_000 assets_snippet_s_numbers_css_000 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_popup_css_000 assets_snippet_s_popup_css_000 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_popup_css_001 assets_snippet_s_popup_css_001 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_popup_js_000 assets_snippet_s_popup_js_000 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_process_steps_css_000 assets_snippet_s_process_steps_css_000 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_product_catalog_css_001 assets_snippet_s_product_catalog_css_001 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_product_list_css_000 assets_snippet_s_product_list_css_000 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_progress_bar_css_000 assets_snippet_s_progress_bar_css_000 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_quotes_carousel_css_000 assets_snippet_s_quotes_carousel_css_000 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_quotes_carousel_css_001 assets_snippet_s_quotes_carousel_css_001 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_rating_css_000 assets_snippet_s_rating_css_000 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_rating_css_001 assets_snippet_s_rating_css_001 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_references_css_000 assets_snippet_s_references_css_000 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_share_css_000 assets_snippet_s_share_css_000 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_share_js_000 assets_snippet_s_share_js_000 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_showcase_css_000 assets_snippet_s_showcase_css_000 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_showcase_css_001 assets_snippet_s_showcase_css_001 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_table_of_content_css_000 assets_snippet_s_table_of_content_css_000 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_table_of_content_js_000 assets_snippet_s_table_of_content_js_000 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_tabs_css_001 assets_snippet_s_tabs_css_001 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_text_highlight_css_000 assets_snippet_s_text_highlight_css_000 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_three_columns_css_000 assets_snippet_s_three_columns_css_000 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_timeline_css_000 assets_snippet_s_timeline_css_000 ir.ui.view qweb Inherits website.assets_frontend
assets_snippet_s_title_css_000 assets_snippet_s_title_css_000 ir.ui.view qweb Inherits website.assets_frontend
assets_tests Website Assets Tests ir.ui.view qweb Inherits web.assets_tests
brand_promotion Brand Promotion ir.ui.view qweb Inherits web.brand_promotion
bs_debug_view BS Debug t New
color_combinations_debug_view Color Combinations Debug t New
company_description Company Description ir.ui.view qweb New
company_description_google_map Google map ir.ui.view qweb Inherits website.company_description
contactus Contact Us t New
cookie_policy Cookie Policy ir.ui.view qweb New
cookies_bar Cookies Bar ir.ui.view qweb Inherits website.layout
custom_code_layout Custom Code Layout ir.ui.view qweb Inherits website.layout
default_css default_css ir.ui.view qweb New
default_csv default_csv ir.ui.view qweb New
default_js default_js ir.ui.view qweb New
default_less default_less ir.ui.view qweb New
default_page default_page ir.ui.view qweb New
default_scss default_scss ir.ui.view qweb New
default_xml default_xml ir.ui.view qweb New
dynamic_filter_template_header_image_footer_card Header Image Footer Card ir.ui.view qweb New
dynamic_filter_template_image_title_footer Image Title Footer Card ir.ui.view qweb New
dynamic_snippet_carousel_options_template dynamic_snippet_carousel_options_template ir.ui.view qweb New
external_snippets external_snippets ir.ui.view qweb Inherits website.snippets
footer_custom Default ir.ui.view qweb Inherits website.layout
footer_language_selector_flag Footer Language Selector Flag ir.ui.view qweb Inherits portal.footer_language_selector
footer_language_selector_inline Footer Language Selector Inline ir.ui.view qweb Inherits portal.footer_language_selector
footer_language_selector_no_text Footer Language Selector No Text ir.ui.view qweb Inherits portal.footer_language_selector
footer_no_copyright Footer No Copyright ir.ui.view qweb Inherits website.layout
header_hoverable_dropdown Header Hoverable Dropdown ir.ui.view qweb Inherits website.layout
header_language_selector Header Language Selector ir.ui.view qweb Inherits website.placeholder_header_language_selector
header_language_selector_flag Header Language Selector Flag ir.ui.view qweb Inherits website.header_language_selector
header_language_selector_inline Header Language Selector Inline ir.ui.view qweb Inherits website.header_language_selector
header_language_selector_no_text Header Language Selector No Text ir.ui.view qweb Inherits website.header_language_selector
header_navbar_pills_style Navbar Links Style ir.ui.view qweb Inherits website.navbar_nav
header_visibility_disappears Header Effect Disappears ir.ui.view qweb Inherits website.layout
header_visibility_fade_out Header Effect Fade Out ir.ui.view qweb Inherits website.layout
header_visibility_fixed Header Effect Fixed ir.ui.view qweb Inherits website.layout
header_visibility_standard Header Visibility Standard ir.ui.view qweb Inherits website.layout
homepage Home t New
index_management index_management ir.ui.view qweb New
kanban kanban ir.ui.view qweb New
kanban_contain kanban_contain ir.ui.view qweb New
lang_flag Language Flag ir.ui.view qweb New
language_selector language_selector ir.ui.view qweb Inherits portal.language_selector
language_selector_add_language language_selector_add_language ir.ui.view qweb New
language_selector_inline language_selector_inline ir.ui.view qweb Inherits website.language_selector
layout Main layout ir.ui.view qweb Inherits portal.frontend_layout
list_website_pages Website Pages Management ir.ui.view qweb New
login_layout Website Login Layout ir.ui.view qweb Inherits web.login_layout
menu_search website.menu.search website.menu search New
menu_tree website.menu.tree website.menu tree New
navbar_nav Navbar Nav ir.ui.view qweb New
navbar_toggler Navbar Toggler ir.ui.view qweb New
no_autohide_menu no_autohide_menu ir.ui.view qweb Inherits website.layout
onboarding_website_theme_step onboarding_website_theme_step ir.ui.view qweb New
one_page_line one_page_line ir.ui.view qweb New
option_footer_scrolltop option_footer_scrolltop ir.ui.view qweb Inherits website.layout
option_header_brand_logo Header Brand Logo ir.ui.view qweb Inherits website.placeholder_header_brand
option_header_brand_name Header Brand Name ir.ui.view qweb Inherits website.placeholder_header_brand
option_header_off_canvas Off-Canvas Header ir.ui.view qweb Inherits website.navbar_nav
option_header_off_canvas_logo_show Show Logo (Off-Canvas) ir.ui.view qweb Inherits website.option_header_off_canvas
option_header_off_canvas_template_header_hamburger option_header_off_canvas_template_header_hamburger ir.ui.view qweb Inherits website.template_header_hamburger
option_header_off_canvas_template_header_hamburger_full option_header_off_canvas_template_header_hamburger_full ir.ui.view qweb Inherits website.template_header_hamburger_full
option_header_off_canvas_template_header_sidebar option_header_off_canvas_template_header_sidebar ir.ui.view qweb Inherits website.template_header_sidebar
option_layout_hide_header option_layout_hide_header ir.ui.view qweb Inherits website.layout
option_ripple_effect option_ripple_effect ir.ui.view qweb Inherits website.assets_frontend
page_404 Page Not Found ir.ui.view qweb New
pager Pager ir.ui.view qweb Inherits portal.pager
placeholder_header_brand Placeholder Header Brand ir.ui.view qweb New
placeholder_header_language_selector Placeholder Header Language Selector ir.ui.view qweb New
protected_403 Page Protected ir.ui.view qweb New
publish_management publish_management ir.ui.view qweb New
publish_short publish_short ir.ui.view qweb New
qunit_suite qunit_suite ir.ui.view qweb Inherits web.qunit_suite_tests
qweb_500 qweb_500 ir.ui.view qweb Inherits http_routing.500
record_cover record_cover ir.ui.view qweb New
res_config_settings_view_form res.config.settings.view.form.inherit.website res.config.settings xpath Inherits base.res_config_settings_view_form
reset_view_arch_wizard_view reset.view.arch.wizard field Inherits base.reset_view_arch_wizard_view
robots robots ir.ui.view qweb New
s_alert Alert ir.ui.view qweb New
s_alert_options s_alert_options ir.ui.view qweb Inherits website.snippet_options
s_badge Badge ir.ui.view qweb New
s_badge_options s_badge_options ir.ui.view qweb Inherits website.snippet_options
s_banner Banner ir.ui.view qweb New
s_blockquote Blockquote ir.ui.view qweb New
s_blockquote_options s_blockquote_options ir.ui.view qweb Inherits website.snippet_options
s_call_to_action Call to Action ir.ui.view qweb New
s_card Card ir.ui.view qweb New
s_carousel Carousel ir.ui.view qweb New
s_chart Chart ir.ui.view qweb New
s_chart_options s_chart_options ir.ui.view qweb Inherits website.snippet_options
s_color_blocks_2 Big Boxes ir.ui.view qweb New
s_company_team Team ir.ui.view qweb New
s_comparisons Comparisons ir.ui.view qweb New
s_countdown Countdown ir.ui.view qweb New
s_countdown_options s_countdown_options ir.ui.view qweb Inherits website.snippet_options
s_cover Cover ir.ui.view qweb New
s_dynamic_snippet Dynamic Snippet ir.ui.view qweb New
s_dynamic_snippet_carousel Dynamic Carousel ir.ui.view qweb New
s_dynamic_snippet_carousel_options s_dynamic_snippet_carousel_options ir.ui.view qweb Inherits website.snippet_options
s_dynamic_snippet_options s_dynamic_snippet_options ir.ui.view qweb Inherits website.snippet_options
s_facebook_page Facebook ir.ui.view qweb New
s_facebook_page_options s_facebook_page_options ir.ui.view qweb Inherits website.snippet_options
s_faq_collapse Accordion ir.ui.view qweb New
s_features Features ir.ui.view qweb New
s_features_grid Features Grid ir.ui.view qweb New
s_google_map Google Map ir.ui.view qweb New
s_google_map_options s_google_map_options ir.ui.view qweb Inherits website.snippet_options
s_hr Separator ir.ui.view qweb New
s_hr_options s_hr_options ir.ui.view qweb Inherits website.snippet_options
s_image_gallery Image Gallery ir.ui.view qweb New
s_image_gallery_options s_image_gallery_options ir.ui.view qweb Inherits website.snippet_options
s_image_text Image - Text ir.ui.view qweb New
s_images_wall Images Wall ir.ui.view qweb New
s_masonry_block Masonry ir.ui.view qweb New
s_media_list Media List ir.ui.view qweb New
s_media_list_options s_media_list_options ir.ui.view qweb Inherits website.snippet_options
s_mega_menu_menu_image_menu Menu - Image - Menu ir.ui.view qweb New
s_mega_menu_multi_menus Multi-Menus ir.ui.view qweb New
s_numbers Numbers ir.ui.view qweb New
s_parallax Parallax ir.ui.view qweb New
s_picture Picture ir.ui.view qweb New
s_popup Popup ir.ui.view qweb New
s_popup_options s_popup_options ir.ui.view qweb Inherits website.snippet_options
s_process_steps Steps ir.ui.view qweb New
s_product_catalog Pricelist ir.ui.view qweb New
s_product_catalog_dish s_product_catalog_dish ir.ui.view qweb New
s_product_catalog_options s_product_catalog_options ir.ui.view qweb Inherits website.snippet_options
s_product_list Items ir.ui.view qweb New
s_progress_bar Progress Bar ir.ui.view qweb New
s_progress_bar_options s_progress_bar_options ir.ui.view qweb Inherits website.snippet_options
s_quotes_carousel Quotes ir.ui.view qweb New
s_rating Rating ir.ui.view qweb New
s_rating_options s_rating_options ir.ui.view qweb Inherits website.snippet_options
s_references References ir.ui.view qweb New
s_share Share ir.ui.view qweb New
s_share_options s_share_options ir.ui.view qweb Inherits website.snippet_options
s_showcase Showcase ir.ui.view qweb New
s_showcase_options s_showcase_options ir.ui.view qweb Inherits website.snippet_options
s_table_of_content Table of Content ir.ui.view qweb New
s_table_of_content_options s_table_of_content_options ir.ui.view qweb Inherits website.snippet_options
s_tabs Tabs ir.ui.view qweb New
s_tabs_options s_tabs_options ir.ui.view qweb Inherits website.snippet_options
s_text_block Text ir.ui.view qweb New
s_text_highlight Text Highlight ir.ui.view qweb New
s_text_image Text - Image ir.ui.view qweb New
s_three_columns Columns ir.ui.view qweb New
s_timeline Timeline ir.ui.view qweb New
s_timeline_options s_timeline_options ir.ui.view qweb Inherits website.snippet_options
s_title Title ir.ui.view qweb New
show_website_info Show Odoo Information ir.ui.view qweb Inherits website.website_info
sitemap_index_xml sitemap_index_xml ir.ui.view qweb New
sitemap_locs sitemap_locs ir.ui.view qweb New
sitemap_xml sitemap_xml ir.ui.view qweb New
snippet_options snippet_options ir.ui.view qweb New
snippet_options_background_options snippet_options_background_options ir.ui.view qweb Inherits web_editor.snippet_options_background_options
snippet_options_border_line_widgets snippet_options_border_line_widgets ir.ui.view qweb New
snippet_options_border_widgets snippet_options_border_widgets ir.ui.view qweb New
snippet_options_shadow_widgets snippet_options_shadow_widgets ir.ui.view qweb New
snippets snippets ir.ui.view qweb Inherits web_editor.snippets
snippets_debug_view Snippet Debug t New
submenu Submenu ir.ui.view qweb New
template_footer_call_to_action Call-to-Action ir.ui.view qweb Inherits website.layout
template_footer_centered Centered ir.ui.view qweb Inherits website.layout
template_footer_contact Contact ir.ui.view qweb Inherits website.layout
template_footer_descriptive Descriptive ir.ui.view qweb Inherits website.layout
template_footer_headline Headline ir.ui.view qweb Inherits website.layout
template_footer_links Links ir.ui.view qweb Inherits website.layout
template_footer_minimalist Minimalist ir.ui.view qweb Inherits website.layout
template_footer_slideout Template Footer Slideout ir.ui.view qweb Inherits website.layout
template_header_boxed Template Header Boxed ir.ui.view qweb Inherits website.layout
template_header_boxed_oe_structure_header_boxed_1 Template Header Boxed (oe_structure_header_boxed_1) ir.ui.view qweb Inherits website.template_header_boxed
template_header_boxed_oe_structure_header_boxed_2 Template Header Boxed (oe_structure_header_boxed_2) ir.ui.view qweb Inherits website.template_header_boxed
template_header_centered_logo Template Header Centered Logo ir.ui.view qweb Inherits website.layout
template_header_contact Template Header Contact ir.ui.view qweb Inherits website.layout
template_header_contact_oe_structure_header_contact_1 Template Header Contact (oe_structure_header_contact_1) ir.ui.view qweb Inherits website.template_header_contact
template_header_default Template Header Default ir.ui.view qweb Inherits website.layout
template_header_default_align_center template_header_default_align_center ir.ui.view qweb Inherits website.template_header_default
template_header_default_align_right template_header_default_align_right ir.ui.view qweb Inherits website.template_header_default
template_header_default_oe_structure_header_default_1 Template Header Default (oe_structure_header_default_1) ir.ui.view qweb Inherits website.template_header_default
template_header_hamburger Template Header Hamburger ir.ui.view qweb Inherits website.layout
template_header_hamburger_align_center template_header_hamburger_align_center ir.ui.view qweb Inherits website.template_header_hamburger
template_header_hamburger_align_right template_header_hamburger_align_right ir.ui.view qweb Inherits website.template_header_hamburger
template_header_hamburger_full Template Header Hambuger Full ir.ui.view qweb Inherits website.layout
template_header_hamburger_full_oe_structure_header_hamburger_full_1 Template Header Hamburger Full (oe_structure_header_hamburger_full_1) ir.ui.view qweb Inherits website.template_header_hamburger_full
template_header_hamburger_oe_structure_header_hamburger_1 Template Header Hamburger (oe_structure_header_hamburger_1) ir.ui.view qweb Inherits website.template_header_hamburger
template_header_hamburger_oe_structure_header_hamburger_2 Template Header Hamburger (oe_structure_header_hamburger_2) ir.ui.view qweb Inherits website.template_header_hamburger
template_header_hamburger_oe_structure_header_hamburger_3 Template Header Hamburger (oe_structure_header_hamburger_3) ir.ui.view qweb Inherits website.template_header_hamburger
template_header_image Template Header Image ir.ui.view qweb Inherits website.layout
template_header_image_oe_structure_header_image_1 Template Header image (oe_structure_header_image_1) ir.ui.view qweb Inherits website.template_header_image
template_header_image_oe_structure_header_image_2 Template Header image (oe_structure_header_image_1) ir.ui.view qweb Inherits website.template_header_image
template_header_magazine Template Header Magazine ir.ui.view qweb Inherits website.layout
template_header_magazine_oe_structure_header_magazine_1 Template Header Magazine (oe_structure_header_magazine_1) ir.ui.view qweb Inherits website.template_header_magazine
template_header_minimalist Template Header Minimalist ir.ui.view qweb Inherits website.layout
template_header_sidebar Template Header Sidebar ir.ui.view qweb Inherits website.layout
template_header_sidebar_oe_structure_header_sidebar_1 Template Header Sidebar (oe_structure_header_sidebar_1) ir.ui.view qweb Inherits website.template_header_sidebar
template_header_slogan Template Header Slogan ir.ui.view qweb Inherits website.layout
template_header_slogan_oe_structure_header_slogan_1 Template Header Slogan (oe_structure_header_slogan_1) ir.ui.view qweb Inherits website.template_header_slogan
template_header_slogan_oe_structure_header_slogan_2 Template Header Slogan (oe_structure_header_slogan_2) ir.ui.view qweb Inherits website.template_header_slogan
template_header_slogan_oe_structure_header_slogan_3 Template Header Slogan (oe_structure_header_slogan_3) ir.ui.view qweb Inherits website.template_header_slogan
template_header_vertical Template Header Vertical ir.ui.view qweb Inherits website.layout
template_header_vertical_oe_structure_header_vertical_1 Template Header Vertical (oe_structure_header_vertical_1) ir.ui.view qweb Inherits website.template_header_vertical
template_header_vertical_oe_structure_header_vertical_2 Template Header Vertical (oe_structure_header_vertical_2) ir.ui.view qweb Inherits website.template_header_vertical
template_header_vertical_oe_structure_header_vertical_3 Template Header Vertical (oe_structure_header_vertical_3) ir.ui.view qweb Inherits website.template_header_vertical
theme_view_form_preview website.form ir.module.module form New
theme_view_kanban Themes Kanban ir.module.module kanban New
theme_view_search Themes Search ir.module.module search New
user_dropdown user_dropdown ir.ui.view qweb Inherits portal.user_dropdown
user_navbar User Navbar ir.ui.view qweb Inherits website.layout
view_arch_only website.ir_ui_view.arch_only ir.ui.view form New
view_attachment_form_inherit_website ir.attachment.form.inherit.website ir.attachment field Inherits base.view_attachment_form
view_attachment_tree_inherit_website ir.attachment.tree.inherit.website ir.attachment field Inherits base.view_attachment_tree
view_base_language_install view_base_language_install.inherit base.language.install group Inherits base.view_base_language_install
view_edit_robots Edit Robots.txt website.robots form New
view_partner_form_inherit_website res.partner.form.website.inherit res.partner xpath Inherits base.view_partner_form
view_rewrite_search website.rewrite.search website.rewrite search New
view_server_action_form_website ir.actions.server.form.website ir.actions.server data Inherits base.view_server_action_form
view_server_action_search_website ir.actions.server.search.website ir.actions.server xpath Inherits base.view_server_action_search
view_server_action_tree_website ir.actions.server.tree.website ir.actions.server xpath Inherits base.view_server_action_tree
view_view_form_extend ir.ui.view field Inherits base.view_view_form
view_view_tree_inherit_website ir.ui.view field Inherits base.view_view_tree
view_website_form website.form website form New
view_website_form_view_themes_modal website.modal.form website xpath Inherits website.view_website_form
view_website_rewrite_form website.rewrite form New
view_website_tree website.tree website tree New
website.assets_editor Website Editor Assets (used in website editor) ir.ui.view qweb New
website.assets_wysiwyg Website Editor Assets (used in website editor) ir.ui.view qweb New
website.compiled_assets_wysiwyg Website Editor Assets (used in website editor) ir.ui.view qweb New
website.s_dynamic_snippet_options_template website.s_dynamic_snippet_options_template ir.ui.view qweb New
website.s_dynamic_snippet_template website.s_dynamic_snippet_template ir.ui.view qweb New
website_info Odoo Information ir.ui.view qweb New
website_menus_form_view website.menu.form website.menu form New
website_pages_form_view website.page.form website.page form New
website_pages_tree_view website.page.list website.page tree New
website_pages_view_search website.page.view.search website.page search New
website_publisher Website Publisher ir.ui.view qweb New
website_search_box Website Searchbox ir.ui.view qweb New
website_visitor_page_view_graph website.track.view.graph website.track graph New
website_visitor_page_view_search website.track.view.search website.track search New
website_visitor_page_view_tree website.track.view.tree website.track tree New
website_visitor_track_view_graph website.track.view.graph website.track graph New
website_visitor_track_view_tree website.track.view.tree website.track tree New
website_visitor_view_form website.visitor.view.form website.visitor form New
website_visitor_view_graph website.visitor.view.graph website.visitor graph New
website_visitor_view_kanban website.visitor.view.kanban website.visitor kanban New
website_visitor_view_search website.visitor.view.search website.visitor search New
website_visitor_view_tree website.visitor.view.tree website.visitor tree New
Models touched (41)

New fields (0)

No new fields.

Public methods (2)
  • get_base_url(self)
    Returns baseurl about one given record. If a website_id field exists in the current record we use the url from this website as base url. :return: the base url for this record :rtype: string
  • get_website_meta(self)

New fields (1)
  • website_ids Many2many → website
    string='Websites to translate' args: 'website'
Public methods (2)
  • default_get(self, fields)
    @api.model
  • lang_install(self)

New fields (4)
  • website_path Char
    args: 'Website Path'
  • website_published Boolean
    copy=False help='A code server action can be executed from the website, using a dedicated controller. The address is <base>/website/action/<website_path>. Set this field as True to allow users to run this action. If it is set to False the action cannot be run through the website.' args: 'Available on the Website'
  • website_url Char
    compute='_get_website_url' help='The full URL to access the server action through the website.' args: 'Website Url'
  • xml_id Char
    compute='_compute_xml_id' help='ID of the action if defined in a XML file' args: 'External ID'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • action_launch(self)

New fields (3)
  • key Char
    help='Technical field used to resolve multiple attachments in a multi-website environment.'
  • website_id Many2one → website
    args: 'website'
  • website_url Char
    deprecated=True readonly=False related='local_url' string='Website URL'
Public methods (3)
  • create(self, vals)
    @api.model
  • get_serve_attachment(self, url, extra_domain=None, extra_fields=None, order=None)
    @api.model
  • get_serving_groups(self)
    @api.model

New fields (2)
  • key Char
    copy=False
  • theme_template_id Many2one → theme.ir.attachment
    copy=False args: 'theme.ir.attachment'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (4)
  • binary_content(self, xmlid=None, model='ir.attachment', id=None, field='datas', unique=False, filename=None, filename_field='name', download=False, mimetype=None, default_mimetype='application/octet-stream', access_token=None)
  • clear_caches(cls)
    @classmethod
  • get_frontend_session_info(self)
    @api.model
  • routing_map(cls, key=None)
    @classmethod

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • image_ids One2many → ir.attachment
    domain=[('res_model', '=', _name), ('mimetype', '=like', 'image/%')] readonly=True string='Screenshots' args: 'ir.attachment', 'res_id'
  • is_installed_on_current_website Boolean
    compute='_compute_is_installed_on_current_website'
Public methods (6)
  • button_choose_theme(self)
    Remove any existing theme on the current website and install the theme ``self`` instead. The actual loading of the theme on the current website will be done automatically on ``write`` thanks to the upgrade and/or install. When installating a new theme, upgrade the upstream chain first to make sure we have the latest version of the dependencies to prevent inconsistencies. :return: dict with the next action to execute
  • button_refresh_theme(self)
    Refresh the current theme of the current website. To refresh it, we only need to upgrade the modules. Indeed the (re)loading of the theme will be done automatically on ``write``.
  • button_remove_theme(self)
    Remove the current theme of the current website.
  • update_list(self)
    @api.model
  • update_theme_images(self)
    @api.model
  • write(self, vals)
    Override to correctly upgrade themes after upgrade/installation of modules. # Install If this theme wasn't installed before, then load it for every website for which it is in the stream. eg. The very first installation of a theme on a website will trigger this. eg. If a website uses theme_A and we install sale, then theme_A_sale will be autoinstalled, and in this case we need to load theme_A_sale for the website. # Upgrade There are 2 cases to handle when upgrading a theme: * When clicking on the theme upgrade button on the interface, in which case there will be an http request made. -> We want to upgrade the current website only, not any other. * When upgrading with -u, in which case no request should be set. -> We want to upgrade every website using this theme.

New fields (0)

No new fields.

Public methods (1)
  • get_asset_bundle(self, xmlid, files, env=None)

New fields (0)

No new fields.

Public methods (1)
  • get_available_options(self)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (7)
  • first_page_id Many2one → website.page
    compute='_compute_first_page_id' help='First page linked to this view' string='Website Page' args: 'website.page'
  • page_ids One2many → website.page
    args: 'website.page', 'view_id'
  • track Boolean
    default=False help='Allow to specify for one page of the website to be trackable or not' string='Track'
  • visibility Selection
    default='' args: [('', 'All'), ('connected', 'Signed In'), ('restricted_group', 'Restricted Group'), ('password', 'With Password')]
  • visibility_password Char
    copy=False groups='base.group_system'
  • visibility_password_display Char
    compute='_get_pwd' groups='website.group_website_designer' inverse='_set_pwd'
  • website_id Many2one → website
    ondelete='cascade' string='Website' args: 'website'
Public methods (11)
  • filter_duplicate(self)
    Filter current recordset only keeping the most suitable view per distinct key. Every non-accessible view will be removed from the set: * In non website context, every view with a website will be removed * In a website context, every view from another website
  • get_default_lang_code(self)
    @api.model
  • get_inheriting_views_arch(self, model)
    @api.model
  • get_related_views(self, key, bundles=False)
    @api.model
    Make this only return most specific views for website.
  • get_view_id(self, xml_id)
    @api.model@tools.ormcache_context('self.env.uid', 'self.env.su', 'xml_id', keys=('website_id'))
    If a website_id is in the context and the given xml_id is not an int then try to get the id of the specific view for that website, but fallback to the id of the generic view if there is no specific. If no website_id is in the context, it might randomly return the generic or the specific view, so it's probably not recommanded to use this method. `viewref` is probably more suitable. Archived views are ignored (unless the active_test context is set, but then the ormcache_context will not work as expected).
  • name_get(self)
  • read_template(self, xml_id)
    @api.model
    This method is deprecated
  • redirect_to_page_manager(self)
  • save(self, value, xpath=None)
  • unlink(self)
    This implements COU (copy-on-unlink). When deleting a generic page website-specific pages will be created so only the current website is affected.
  • write(self, vals)
    COW for ir.ui.view. This way editing websites does not impact other websites. Also this way newly created websites will only contain the default views.

New fields (1)
  • theme_template_id Many2one → theme.ir.ui.view
    copy=False args: 'theme.ir.ui.view'
Public methods (1)
  • write(self, vals)

New fields (1)
  • website_theme_onboarding_done Boolean
    compute='_compute_website_theme_onboarding_done' args: 'Onboarding website theme step done'
Public methods (3)
  • action_open_website_theme_selector(self)
    @api.model
  • google_map_img(self, zoom=8, width=298, height=298)
  • google_map_link(self, zoom=8)

New fields (36)
  • auth_signup_uninvited Selection
    compute='_compute_auth_signup' inverse='_set_auth_signup'
  • cdn_activated Boolean
    readonly=False related='website_id.cdn_activated'
  • cdn_filters Text
    readonly=False related='website_id.cdn_filters'
  • cdn_url Char
    readonly=False related='website_id.cdn_url'
  • favicon Binary
    readonly=False related='website_id.favicon' args: 'Favicon'
  • google_analytics_key Char
    readonly=False related='website_id.google_analytics_key' args: 'Google Analytics Key'
  • google_management_client_id Char
    readonly=False related='website_id.google_management_client_id' args: 'Google Client ID'
  • google_management_client_secret Char
    readonly=False related='website_id.google_management_client_secret' args: 'Google Client Secret'
  • google_maps_api_key Char
    readonly=False related='website_id.google_maps_api_key'
  • google_search_console Char
    readonly=False related='website_id.google_search_console' args: 'Google Search Console'
  • group_multi_website Boolean
    implied_group='website.group_multi_website' args: 'Multi-website'
  • has_default_share_image Boolean
    compute=has_default_share_image inverse=inverse_has_default_share_image args: 'Use a image by default for sharing'
  • has_google_analytics Boolean
    compute=has_google_analytics inverse=inverse_has_google_analytics args: 'Google Analytics'
  • has_google_analytics_dashboard Boolean
    compute=has_google_analytics_dashboard inverse=inverse_has_google_analytics_dashboard args: 'Google Analytics Dashboard'
  • has_google_maps Boolean
    compute=has_google_maps inverse=inverse_has_google_maps args: 'Google Maps'
  • has_google_search_console Boolean
    compute=has_google_search_console inverse=inverse_has_google_search_console args: 'Console Google Search'
  • has_social_network Boolean
    compute=has_social_network inverse=inverse_has_social_network args: 'Configure Social Network'
  • language_ids Many2many
    readonly=False related='website_id.language_ids' relation='res.lang'
  • social_default_image Binary
    readonly=False related='website_id.social_default_image' args: 'Default Social Share Image'
  • social_facebook Char
    readonly=False related='website_id.social_facebook'
  • social_github Char
    readonly=False related='website_id.social_github'
  • social_instagram Char
    readonly=False related='website_id.social_instagram'
  • social_linkedin Char
    readonly=False related='website_id.social_linkedin'
  • social_twitter Char
    readonly=False related='website_id.social_twitter'
  • social_youtube Char
    readonly=False related='website_id.social_youtube'
  • specific_user_account Boolean
    help='Are newly created user accounts website specific' readonly=False related='website_id.specific_user_account'
  • website_company_id Many2one
    readonly=False related='website_id.company_id' string='Website Company'
  • website_cookies_bar Boolean
    readonly=False related='website_id.cookies_bar'
  • website_country_group_ids Many2many
    readonly=False related='website_id.country_group_ids'
  • website_default_lang_code Char
    readonly=False related='website_id.default_lang_id.code' args: 'Default language code'
  • website_default_lang_id Many2one
    readonly=False related='website_id.default_lang_id' string='Default language'
  • website_domain Char
    readonly=False related='website_id.domain' args: 'Website Domain'
  • website_id Many2one → website
    default=_default_website ondelete='cascade' string='website' args: 'website'
  • website_language_count Integer
    compute='_compute_website_language_count' readonly=True string='Number of languages'
  • website_logo Binary
    readonly=False related='website_id.logo'
  • website_name Char
    readonly=False related='website_id.name' args: 'Website Name'
Public methods (19)
  • action_open_robots(self)
  • action_ping_sitemap(self)
  • action_website_create_new(self)
  • has_default_share_image(self)
    @api.depends('website_id')
  • has_google_analytics(self)
    @api.depends('website_id')
  • has_google_analytics_dashboard(self)
    @api.depends('website_id')
  • has_google_maps(self)
    @api.depends('website_id')
  • has_google_search_console(self)
    @api.depends('website_id')
  • has_social_network(self)
    @api.depends('website_id', 'social_twitter', 'social_facebook', 'social_github', 'social_linkedin', 'social_youtube', 'social_instagram')
  • install_theme_on_current_website(self)
  • inverse_has_default_share_image(self)
  • inverse_has_google_analytics(self)
  • inverse_has_google_analytics_dashboard(self)
  • inverse_has_google_maps(self)
  • inverse_has_google_search_console(self)
  • inverse_has_social_network(self)
  • open_template_user(self)
  • set_values(self)
  • website_go_to(self)

New fields (0)

No new fields.

Public methods (2)
  • get_available(self)
    @api.model@tools.ormcache_context(keys=('website_id'))
  • write(self, vals)

New fields (1)
  • visitor_ids One2many → website.visitor
    string='Visitors' args: 'website.visitor', 'partner_id'
Public methods (2)
  • google_map_img(self, zoom=8, width=298, height=298)
  • google_map_link(self, zoom=10)

New fields (1)
  • website_id Many2one → website
    readonly=False related='partner_id.website_id' related_sudo=False store=True args: 'website'
Public methods (1)
  • authenticate(cls, db, login, password, user_agent_env)
    @classmethod
    Override to link the logged in user's res.partner to website.visitor. If both a request-based visitor and a user-based visitor exist we try to update them (have same partner_id), and move sub records to the main visitor (user one). Purpose is to try to keep a main visitor with as much sub-records (tracked pages, leads, ...) as possible.

New fields (4)
  • copy_ids One2many → ir.attachment
    copy=False readonly=True args: 'ir.attachment', 'theme_template_id', 'Attachment using a copy of me'
  • key Char
    required=True
  • name Char
    required=True
  • url Char
Public methods (0)

No public methods.

New fields (11)
  • active Boolean
    default=True
  • arch Text
    translate=xml_translate
  • arch_fs Char
    default=compute_arch_fs
  • copy_ids One2many → ir.ui.view
    copy=False readonly=True args: 'ir.ui.view', 'theme_template_id', 'Views using a copy of me'
  • customize_show Boolean
  • inherit_id Reference
    selection=[('ir.ui.view', 'ir.ui.view'), ('theme.ir.ui.view', 'theme.ir.ui.view')]
  • key Char
  • mode Selection
    args: [('primary', 'Base view'), ('extension', 'Extension View')]
  • name Char
    required=True
  • priority Integer
    default=16 required=True
  • type Char
Public methods (1)
  • compute_arch_fs(self)

New fields (0)

No new fields.

Public methods (3)
  • disable_view(self, xml_id)
    @api.model
  • enable_header_off_canvas(self)
    @api.model
    Enabling off canvas require to enable quite a lot of template so this shortcut was made to make it easier.
  • enable_view(self, xml_id)
    @api.model

New fields (7)
  • copy_ids One2many → website.menu
    copy=False readonly=True args: 'website.menu', 'theme_template_id', 'Menu using a copy of me'
  • name Char
    required=True translate=True
  • new_window Boolean
    args: 'New Window'
  • page_id Many2one → theme.website.page
    ondelete='cascade' args: 'theme.website.page'
  • parent_id Many2one → theme.website.menu
    index=True ondelete='cascade' args: 'theme.website.menu'
  • sequence Integer
  • url Char
    default=''
Public methods (0)

No public methods.

New fields (4)
  • copy_ids One2many → website.page
    copy=False readonly=True args: 'website.page', 'theme_template_id', 'Page using a copy of me'
  • url Char
  • view_id Many2one → theme.ir.ui.view
    ondelete='cascade' required=True args: 'theme.ir.ui.view'
  • website_indexed Boolean
    default=True args: 'Page Indexed'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • make_scss_customization(self, url, values)
    Makes a scss customization of the given file. That file must contain a scss map including a line comment containing the word 'hook', to indicate the location where to write the new key,value pairs. Params: url (str): the URL of the scss file to customize (supposed to be a variable file which will appear in the assets_common bundle) values (dict): key,value mapping to integrate in the file's map (containing the word hook). If a key is already in the file's map, its value is overridden.

New fields (36)
  • auth_signup_uninvited Selection
    default='b2b' string='Customer Account' args: [('b2b', 'On invitation'), ('b2c', 'Free sign up')]
  • auto_redirect_lang Boolean
    default=True help="Should users be redirected to their browser's language" args: 'Autoredirect Language'
  • cdn_activated Boolean
    args: 'Content Delivery Network (CDN)'
  • cdn_filters Text
    default=<expr> help='URL matching those filters will be rewritten using the CDN Base URL' args: 'CDN Filters'
  • cdn_url Char
    default='' args: 'CDN Base URL'
  • company_id Many2one → res.company
    default=<expr> required=True string='Company' args: 'res.company'
  • cookies_bar Boolean
    help='Display a customizable cookies bar on your website.' args: 'Cookies Bar'
  • country_group_ids Many2many → res.country.group
    help='Used when multiple websites have the same domain.' string='Country Groups' args: 'res.country.group', 'website_country_group_rel', 'website_id', 'country_group_id'
  • custom_code_footer Text
    args: 'Custom end of <body> code'
  • custom_code_head Text
    args: 'Custom <head> code'
  • default_lang_id Many2one → res.lang
    default=_default_language required=True string='Default Language' args: 'res.lang'
  • domain Char
    help='Will be prefixed by http in canonical URLs if no scheme is specified' args: 'Website Domain'
  • favicon Binary
    default=_default_favicon help='This field holds the image used to display a favicon on the website.' string='Website Favicon'
  • google_analytics_key Char
    args: 'Google Analytics Key'
  • google_management_client_id Char
    args: 'Google Client ID'
  • google_management_client_secret Char
    args: 'Google Client Secret'
  • google_maps_api_key Char
    args: 'Google Maps API Key'
  • google_search_console Char
    help='Google key, or Enable to access first reply'
  • has_social_default_image Boolean
    compute='_compute_has_social_default_image' store=True
  • homepage_id Many2one → website.page
    string='Homepage' args: 'website.page'
  • language_ids Many2many → res.lang
    default=_active_languages args: 'res.lang', 'website_lang_rel', 'website_id', 'lang_id', 'Languages'
  • logo Binary
    default=_default_logo help='Display this logo on the website.' args: 'Website Logo'
  • menu_id Many2one → website.menu
    compute='_compute_menu' string='Main Menu' args: 'website.menu'
  • name Char
    required=True args: 'Website Name'
  • partner_id Many2one
    readonly=False related='user_id.partner_id' string='Public Partner'
  • robots_txt Text
    groups='website.group_website_designer' translate=False args: 'Robots.txt'
  • social_default_image Binary
    help='If set, replaces the website logo as the default social share image.' string='Default Social Share Image'
  • social_facebook Char
    default=_default_social_facebook args: 'Facebook Account'
  • social_github Char
    default=_default_social_github args: 'GitHub Account'
  • social_instagram Char
    default=_default_social_instagram args: 'Instagram Account'
  • social_linkedin Char
    default=_default_social_linkedin args: 'LinkedIn Account'
  • social_twitter Char
    default=_default_social_twitter args: 'Twitter Account'
  • social_youtube Char
    default=_default_social_youtube args: 'Youtube Account'
  • specific_user_account Boolean
    help='If True, new accounts will be associated to the current website' args: 'Specific User Account'
  • theme_id Many2one → ir.module.module
    help='Installed theme' args: 'ir.module.module'
  • user_id Many2one → res.users
    required=True string='Public User' args: 'res.users'
Public methods (28)
  • action_dashboard_redirect(self)
    @api.model
  • button_go_website(self, path='/', mode_edit=False)
  • copy_menu_hierarchy(self, top_menu)
  • create(self, vals)
    @api.model
  • create_and_redirect_to_theme(self)
  • get_base_url(self)
  • get_cdn_url(self, uri)
  • get_current_website(self, fallback=True)
    @api.model
  • get_suggested_controllers(self)
    Returns a tuple (name, url, icon). Where icon can be a module name, or a path
  • get_template(self, template)
    @api.model
  • get_unique_key(self, string, template_module=False)
    Given a string, return an unique key including module prefix. It will be suffixed by a counter if it already exists to garantee uniqueness. :param string : the key to be checked for uniqueness, you can pass it with 'website.' or not :param template_module : the module to be prefixed on the key, if not set, we will use website
  • get_unique_path(self, page_url)
    Given an url, return that url suffixed by counter if it already exists :param page_url : the url to be checked for uniqueness
  • guess_mimetype(self)
    @api.model
  • image_url(self, record, field, size=None)
    @api.model
    Returns a local url that points to the image field of a given browse record.
  • is_public_user(self)
    @api.model
  • is_publisher(self)
    @api.model
  • is_user(self)
    @api.model
  • is_view_active(self, key, raise_if_not_found=False)
    @tools.ormcache_context('key', keys=('website_id'))
    Return True if active, False if not active, None if not found or not a customize_show view
  • new_page(self, name=False, add_menu=False, template='website.default_page', ispage=True, namespace=None)
    @api.model
    Create a new website page, and assign it a xmlid based on the given one :param name : the name of the page :param template : potential xml_id of the page to create :param namespace : module part of the xml_id if none, the template module name is used
  • page_search_dependencies(self, page_id=False)
    @api.model
    Search dependencies just for information. It will not catch 100% of dependencies and False positive is more than possible Each module could add dependences in this dict :returns a dictionnary where key is the 'categorie' of object related to the given view, and the value is the list of text and link to the resource using given page
  • page_search_key_dependencies(self, page_id=False)
    @api.model
    Search dependencies just for information. It will not catch 100% of dependencies and False positive is more than possible Each module could add dependences in this dict :returns a dictionnary where key is the 'categorie' of object related to the given view, and the value is the list of text and link to the resource using given page
  • pager(self, url, total, page=1, step=30, scope=5, url_args=None)
    @api.model
  • rule_is_enumerable(self, rule)
    Checks that it is possible to generate sensible GET queries for a given rule (if the endpoint matches its own requirements) :type rule: werkzeug.routing.Rule :rtype: bool
  • search_pages(self, needle=None, limit=None)
  • unlink(self)
  • viewref(self, view_id, raise_if_not_found=True)
    @api.model
    Given an xml_id or a view_id, return the corresponding view record. In case of website context, return the most specific one. If no website_id is in the context, it will return the generic view, instead of a random one like `get_view_id`. Look also for archived views, no matter the context. :param view_id: either a string xml_id or an integer view_id :param raise_if_not_found: should the method raise an error if no view found :return: The view record or empty recordset
  • website_domain(self, website_id=False)
    @api.model
  • write(self, values)

New fields (1)
  • cover_properties Text
    default=<expr> args: 'Cover Properties'
Public methods (1)
  • write(self, vals)

New fields (14)
  • child_id One2many → website.menu
    string='Child Menus' args: 'website.menu', 'parent_id'
  • group_ids Many2many → res.groups
    help='User need to be at least in one of these groups to see the menu' string='Visible Groups' args: 'res.groups'
  • is_mega_menu Boolean
    compute=_compute_field_is_mega_menu inverse=_set_field_is_mega_menu
  • is_visible Boolean
    compute='_compute_visible' string='Is Visible'
  • mega_menu_classes Char
  • mega_menu_content Html
    prefetch=True sanitize=False translate=html_translate
  • name Char
    required=True translate=True args: 'Menu'
  • new_window Boolean
    args: 'New Window'
  • page_id Many2one → website.page
    ondelete='cascade' args: 'website.page', 'Related Page'
  • parent_id Many2one → website.menu
    index=True ondelete='cascade' args: 'website.menu', 'Parent Menu'
  • parent_path Char
    index=True
  • sequence Integer
    default=_default_sequence
  • url Char
    default='' args: 'Url'
  • website_id Many2one → website
    ondelete='cascade' args: 'website', 'Website'
Public methods (7)
  • clean_url(self)
    @api.model
  • create(self, vals)
    @api.model
    In case a menu without a website_id is trying to be created, we duplicate it for every website. Note: Particulary useful when installing a module that adds a menu like /shop. So every website has the shop menu. Be careful to return correct record for ir.model.data xml_id in case of default main menus creation.
  • get_tree(self, website_id, menu_id=None)
    @api.model
  • name_get(self)
  • save(self, website_id, data)
    @api.model
  • unlink(self)
  • write(self, values)

New fields (1)
  • theme_template_id Many2one → theme.website.menu
    copy=False args: 'theme.website.menu'
Public methods (0)

No public methods.

New fields (1)
  • website_id Many2one → website
    help='Restrict publishing to this website.' index=True ondelete='restrict' string='Website' args: 'website'
Public methods (1)
  • can_access_from_current_website(self, website_id=False)

New fields (15)
  • arch Text
    depends_context=('website_id') readonly=False related='view_id.arch'
  • cache_key_expr Char
    help='Expression (tuple) to evaluate the cached key. \nE.g.: "(request.params.get("currency"), )"'
  • cache_time Integer
    default=3600 help='Time to cache the page. (0 = no cache)'
  • date_publish Datetime
    args: 'Publishing Date'
  • footer_visible Boolean
    default=True
  • header_color Char
  • header_overlay Boolean
  • header_visible Boolean
    default=True
  • is_homepage Boolean
    compute='_compute_homepage' inverse='_set_homepage' string='Homepage'
  • is_visible Boolean
    compute='_compute_visible' string='Is Visible'
  • menu_ids One2many → website.menu
    args: 'website.menu', 'page_id', 'Related Menus'
  • url Char
    args: 'Page URL'
  • view_id Many2one → ir.ui.view
    ondelete='cascade' required=True string='View' args: 'ir.ui.view'
  • website_id Many2one
    ondelete='cascade' readonly=False related='view_id.website_id' store=True
  • website_indexed Boolean
    default=True args: 'Is Indexed'
Public methods (7)
  • clone_page(self, page_id, page_name=None, clone_menu=True)
    @api.model
    Clone a page, given its identifier :param page_id : website.page identifier
  • copy(self, default=None)
    @api.returns('self', <expr>)
  • get_page_properties(self)
  • get_website_meta(self)
  • save_page_info(self, website_id, data)
    @api.model
  • unlink(self)
  • write(self, vals)

New fields (1)
  • theme_template_id Many2one → theme.website.page
    copy=False args: 'theme.website.page'
Public methods (0)

No public methods.

New fields (4)
  • can_publish Boolean
    compute='_compute_can_publish' args: 'Can Publish'
  • is_published Boolean
    copy=False default=<expr> index=True args: 'Is Published'
  • website_published Boolean
    readonly=False related='is_published' args: 'Visible on current website'
  • website_url Char
    compute='_compute_website_url' help='The full URL to access the document through the website.' args: 'Website URL'
Public methods (5)
  • create(self, vals_list)
    @api.model_create_multi
  • create_and_get_website_url(self, **kwargs)
  • open_website_url(self)
  • website_publish_button(self)
  • write(self, values)

New fields (8)
  • active Boolean
    default=True
  • name Char
    required=True args: 'Name'
  • redirect_type Selection
    default='302' help="Type of redirect/Rewrite:\n\n 301 Moved permanently: The browser will keep in cache the new url.\n 302 Moved temporarily: The browser will not keep in cache the new url and ask again the next time the new url.\n 404 Not Found: If you want remove a specific page/controller (e.g. Ecommerce is installed, but you don't want /shop on a specific website)\n 308 Redirect / Rewrite: If you want rename a controller with a new url. (Eg: /shop -> /garden - Both url will be accessible but /shop will automatically be redirected to /garden)\n " string='Action' args: [('404', '404 Not Found'), ('301', '301 Moved permanently'), ('302', '302 Moved temporarily'), ('308', '308 Redirect / Rewrite')]
  • route_id Many2one → website.route
    args: 'website.route'
  • sequence Integer
  • url_from Char
    index=True args: 'URL from'
  • url_to Char
    args: 'URL to'
  • website_id Many2one → website
    index=True ondelete='cascade' string='Website' args: 'website'
Public methods (5)
  • create(self, vals)
    @api.model
  • name_get(self)
  • refresh_routes(self)
  • unlink(self)
  • write(self, vals)

New fields (1)
  • content Text
    default=<expr>
Public methods (1)
  • action_save(self)

New fields (1)
  • path Char
    args: 'Route'
Public methods (0)

No public methods.

New fields (6)
  • is_seo_optimized Boolean
    compute='_compute_is_seo_optimized' args: 'SEO optimized'
  • seo_name Char
    translate=True args: 'Seo name'
  • website_meta_description Text
    translate=True args: 'Website meta description'
  • website_meta_keywords Char
    translate=True args: 'Website meta keywords'
  • website_meta_og_img Char
    args: 'Website opengraph image'
  • website_meta_title Char
    translate=True args: 'Website meta title'
Public methods (1)
  • get_website_meta(self)
    This method will return final meta information. It will replace default values with user's custom value (if user modified it from the seo popup of frontend) This method is not meant for overridden. To customize meta values override `_default_website_meta` method instead of this method. This method only replaces user custom values in defaults.

New fields (6)
  • action_server_id Many2one → ir.actions.server
    ondelete='cascade' args: 'ir.actions.server', 'Server Action'
  • field_names Char
    help='A list of comma-separated field names' required=True
  • filter_id Many2one → ir.filters
    ondelete='cascade' args: 'ir.filters', 'Filter'
  • limit Integer
    help='The limit is the maximum number of records retrieved' required=True
  • name Char
    required=True translate=True
  • website_id Many2one → website
    ondelete='cascade' required=True string='Website' args: 'website'
Public methods (2)
  • escape_falsy_as_empty(self, s)
    @api.model
  • render(self, template_key, limit, search_domain=[])
    Renders the website dynamic snippet items

New fields (4)
  • page_id Many2one → website.page
    index=True ondelete='cascade' readonly=True args: 'website.page'
  • url Text
    index=True args: 'Url'
  • visit_datetime Datetime
    default=fields.Datetime.now readonly=True required=True args: 'Visit Date'
  • visitor_id Many2one → website.visitor
    index=True ondelete='cascade' readonly=True required=True args: 'website.visitor'
Public methods (0)

No public methods.

New fields (22)
  • access_token Char
    copy=False default=<expr> groups='base.group_website_publisher' index=False required=True
  • active Boolean
    default=True args: 'Active'
  • country_flag Char
    related='country_id.image_url' string='Country Flag'
  • country_id Many2one → res.country
    readonly=True args: 'res.country', 'Country'
  • create_date Datetime
    readonly=True args: 'First connection date'
  • email Char
    compute='_compute_email_phone' compute_sudo=True string='Email'
  • is_connected Boolean
    compute='_compute_time_statistics' help='A visitor is considered as connected if his last page view was within the last 5 minutes.' args: 'Is connected ?'
  • lang_id Many2one → res.lang
    help='Language from the website when visitor has been created' string='Language' args: 'res.lang'
  • last_connection_datetime Datetime
    default=fields.Datetime.now help='Last page view date' readonly=True args: 'Last Connection'
  • last_visited_page_id Many2one → website.page
    compute='_compute_last_visited_page_id' string='Last Visited Page' args: 'website.page'
  • mobile Char
    compute='_compute_email_phone' compute_sudo=True string='Mobile Phone'
  • name Char
    args: 'Name'
  • page_count Integer
    compute='_compute_page_statistics' help='Total number of tracked page visited' args: '# Visited Pages'
  • page_ids Many2many → website.page
    compute='_compute_page_statistics' groups='website.group_website_designer' search='_search_page_ids' string='Visited Pages' args: 'website.page'
  • partner_id Many2one → res.partner
    help='Partner of the last logged in user.' string='Linked Partner' args: 'res.partner'
  • partner_image Binary
    related='partner_id.image_1920'
  • time_since_last_action Char
    compute='_compute_time_statistics' help='Time since last page view. E.g.: 2 minutes ago' args: 'Last action'
  • timezone Selection
    string='Timezone' args: _tz_get
  • visit_count Integer
    default=1 help='A new visit is considered if last connection was more than 8 hours ago.' readonly=True args: 'Number of visits'
  • visitor_page_count Integer
    compute='_compute_page_statistics' help='Total number of visits on tracked pages' args: 'Page Views'
  • website_id Many2one → website
    readonly=True args: 'website', 'Website'
  • website_track_ids One2many → website.track
    readonly=True string='Visited Pages History' args: 'website.track', 'visitor_id'
Public methods (2)
  • action_send_mail(self)
  • name_get(self)
    @api.depends('name')
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/13.0/website
VERSION
VERSION 1.0
CATEGORY
CATEGORYWebsite/Website
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Christophe Matthieu, Martin Trigaux, Olivier Dony, Thibault Delavallée, Denis Ledoux, Christophe Simonis, David Monjoie, Xavier Morel, Goffin Simon, Nicolas Martinelli, Nicolas Lempereur, Géry Debongnie, Aaron Bohy, Jeremy Kersten, GitHub, Yannick Tivisse, qsm-odoo, Martin Geubelle, Dharmraj Jhala, Odoo Online, SEINLET Nicolas, Romain Derie, jem-odoo, RomainLibert, Christophe Monniez, Jorge Pinna Puissant, Jairo Llopis, Nans Lefebvre, Toufik Ben Jaa, Adrian Torres, mreficent, Aurélien Warnon, Xavier-Do, jvm-odoo, jerome hanke (jhk), Victor Feyens, Paul Morelle, Sébastien Theys, Nasreddin (bon), alt-odoo, Jason Van Malder, Vincent Schippefilt, fw-bot, Samuel Degueldre, David Beguin, Lucas Lefèvre, Ivan Yelizariev, Naglis Jonaitis, Jérémy Hennecart, Swapnesh Shah, nie, IEL, Thanh Dodeur, Gorash, Williams Estrada, Denis Mudarisov, fja-odoo, ThanhDodeurOdoo, Younn Olivier, Mathieu Duckerts-Antoine, Pierre Paridans, Parth Choksi, Yenthe666, Hiral Bhavsar, Benjamin Vray, Benoit Socias, Hubert Van de Walle (huvw), Guillaume (gdi), Kaushalya Mandaliya, jpr-odoo, Holden, Franck Plazanet, Sébastien Mottet (oms), Huy Le, Pragya Ladda, Krupa Patel, Antoine Guenet, Arthur Detroux (ard)
WEBSITE
WEBSITEhttps://www.odoo.com/page/website-builder
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:06:41
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - web
    - base
    - web_editor
    - http_routing
    - portal
    - mail
    - base_setup
    - bus
    - web_tour
    - auth_signup
    - social_media
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (121)
XML IDNameModelTypeStatus
_assets_frontend_helpers _assets_frontend_helpers ir.ui.view qweb Inherits portal._assets_frontend_helpers
_assets_primary_variables _assets_primary_variables ir.ui.view qweb Inherits portal._assets_primary_variables
_assets_secondary_variables _assets_secondary_variables ir.ui.view qweb Inherits web_editor._assets_secondary_variables
aboutus About us t New
action_website_rewrite_tree website.rewrite.list website.rewrite tree New
affix_top_menu Fixed Top Menu ir.ui.view qweb Inherits website.layout
assets_backend Website Backend Assets (used in backend interface) ir.ui.view qweb Inherits web.assets_backend
assets_frontend Website Assets ir.ui.view qweb Inherits portal.assets_frontend
assets_frontend_compatibility_for_12_0 assets_frontend_compatibility_for_12_0 ir.ui.view qweb Inherits website.assets_frontend
assets_tests Website Assets Tests ir.ui.view qweb Inherits web.assets_tests
brand_promotion Brand Promotion ir.ui.view qweb Inherits web.brand_promotion
bs_debug_view BS Debug t New
company_description Company Description ir.ui.view qweb New
contactus Contact Us t New
default_css default_css ir.ui.view qweb New
default_csv default_csv ir.ui.view qweb New
default_js default_js ir.ui.view qweb New
default_less default_less ir.ui.view qweb New
default_page default_page ir.ui.view qweb New
default_scss default_scss ir.ui.view qweb New
default_xml default_xml ir.ui.view qweb New
external_snippets external_snippets ir.ui.view qweb Inherits website.snippets
footer_custom Footer ir.ui.view qweb Inherits website.layout
homepage Home t New
index_management index_management ir.ui.view qweb New
kanban kanban ir.ui.view qweb New
kanban_contain kanban_contain ir.ui.view qweb New
language_selector language_selector ir.ui.view qweb New
layout Main layout ir.ui.view qweb Inherits portal.frontend_layout
layout_logo_show Show Logo ir.ui.view qweb Inherits website.layout
list_website_pages Website Pages Management ir.ui.view qweb New
login_layout Website Login Layout ir.ui.view qweb Inherits web.login_layout
menu_search website.menu.search website.menu search New
menu_tree website.menu.tree website.menu tree New
no_autohide_menu no_autohide_menu ir.ui.view qweb Inherits website.layout
one_page_line one_page_line ir.ui.view qweb New
option_custom_body_image option_custom_body_image ir.ui.view qweb Inherits website.assets_frontend
option_custom_body_pattern option_custom_body_pattern ir.ui.view qweb Inherits website.assets_frontend
option_layout_boxed_variables option_layout_boxed_variables ir.ui.view qweb Inherits website._assets_primary_variables
page_404 page_404 ir.ui.view qweb New
pager Pager ir.ui.view qweb Inherits portal.pager
portal_404 portal_404 ir.ui.view qweb Inherits portal.portal_404
publish_management publish_management ir.ui.view qweb New
publish_short publish_short ir.ui.view qweb New
qunit_suite qunit_suite ir.ui.view qweb Inherits web.qunit_suite
qweb_500 qweb_500 ir.ui.view qweb Inherits http_routing.500
record_cover record_cover ir.ui.view qweb New
res_config_settings_view_form res.config.settings.view.form.inherit.website res.config.settings xpath Inherits base.res_config_settings_view_form
robots robots ir.ui.view qweb New
s_alert Alert ir.ui.view qweb New
s_banner Banner ir.ui.view qweb New
s_btn Button ir.ui.view qweb New
s_call_to_action Call to Action ir.ui.view qweb New
s_card Card ir.ui.view qweb New
s_carousel Carousel ir.ui.view qweb New
s_company_team Company Team ir.ui.view qweb New
s_comparisons Comparisons ir.ui.view qweb New
s_cover Cover ir.ui.view qweb New
s_facebook_page Facebook Page ir.ui.view qweb New
s_faq_collapse Accordion ir.ui.view qweb New
s_features Features ir.ui.view qweb New
s_features_grid Features Grid ir.ui.view qweb New
s_hr Separator ir.ui.view qweb New
s_image_gallery Image Gallery ir.ui.view qweb New
s_image_text Image - Text ir.ui.view qweb New
s_mega_menu_menu_image_menu Menu - Image - Menu ir.ui.view qweb New
s_mega_menu_multi_menus Multi-Menus ir.ui.view qweb New
s_parallax Parallax ir.ui.view qweb New
s_picture Picture ir.ui.view qweb New
s_quotes_carousel Quotes ir.ui.view qweb New
s_rating Rating ir.ui.view qweb New
s_references References ir.ui.view qweb New
s_share Share ir.ui.view qweb New
s_tabs Tabs ir.ui.view qweb New
s_text_block Text block ir.ui.view qweb New
s_text_image Text - Image ir.ui.view qweb New
s_three_columns Columns ir.ui.view qweb New
s_title Title ir.ui.view qweb New
show_website_info Show Odoo Information ir.ui.view qweb Inherits website.website_info
sitemap_index_xml sitemap_index_xml ir.ui.view qweb New
sitemap_locs sitemap_locs ir.ui.view qweb New
sitemap_xml sitemap_xml ir.ui.view qweb New
snippet_options snippet_options ir.ui.view qweb New
snippets snippets ir.ui.view qweb Inherits web_editor.snippets
snippets_debug_view Snippet Debug t New
submenu Submenu ir.ui.view qweb New
theme_customize theme_customize ir.ui.view qweb New
user_navbar user_navbar ir.ui.view qweb Inherits website.layout
view_attachment_form_inherit_website ir.attachment.form.inherit.website ir.attachment field Inherits base.view_attachment_form
view_attachment_tree_inherit_website ir.attachment.tree.inherit.website ir.attachment field Inherits base.view_attachment_tree
view_base_language_install view_base_language_install.inherit base.language.install group Inherits base.view_base_language_install
view_partner_form_inherit_website res.partner.form.website.inherit res.partner xpath Inherits base.view_partner_form
view_rewrite_search website.rewrite.search website.rewrite search New
view_server_action_form_website ir.actions.server.form.website ir.actions.server data Inherits base.view_server_action_form
view_server_action_search_website ir.actions.server.search.website ir.actions.server xpath Inherits base.view_server_action_search
view_server_action_tree_website ir.actions.server.tree.website ir.actions.server xpath Inherits base.view_server_action_tree
view_view_form_extend ir.ui.view field Inherits base.view_view_form
view_view_tree_inherit_website ir.ui.view field Inherits base.view_view_tree
view_website_form website.form website form New
view_website_rewrite_form website.rewrite form New
view_website_tree website.tree website tree New
website.assets_editor Website Editor Assets (used in website editor) ir.ui.view qweb New
website.assets_wysiwyg Website Editor Assets (used in website editor) ir.ui.view qweb New
website.compiled_assets_wysiwyg Website Editor Assets (used in website editor) ir.ui.view qweb New
website_info Odoo Information ir.ui.view qweb New
website_menus_form_view website.menu.form website.menu form New
website_pages_form_view website.page.form website.page form New
website_pages_tree_view website.page.list website.page tree New
website_pages_view_search website.page.view.search website.page search New
website_search_box Website Searchbox ir.ui.view qweb New
website_visitor_page_view_graph website.track.view.graph website.track graph New
website_visitor_page_view_search website.track.view.search website.track search New
website_visitor_page_view_tree website.track.view.tree website.track tree New
website_visitor_track_view_graph website.track.view.graph website.track graph New
website_visitor_track_view_tree website.track.view.tree website.track tree New
website_visitor_view_form website.visitor.view.form website.visitor form New
website_visitor_view_graph website.visitor.view.graph website.visitor graph New
website_visitor_view_graph website.visitor.view.graph website.visitor graph New
website_visitor_view_kanban website.visitor.view.kanban website.visitor kanban New
website_visitor_view_search website.visitor.view.search website.visitor search New
website_visitor_view_tree website.visitor.view.tree website.visitor tree New
Models touched (27)

New fields (0)

No new fields.

Public methods (1)
  • get_base_url(self)
    Returns baseurl about one given record. If a website_id field exists in the current record we use the url from this website as base url. :return: the base url for this record :rtype: string

New fields (1)
  • website_ids Many2many → website
    string='Websites to translate' args: 'website'
Public methods (2)
  • default_get(self, fields)
    @api.model
  • lang_install(self)

New fields (4)
  • website_path Char
    args: 'Website Path'
  • website_published Boolean
    copy=False help='A code server action can be executed from the website, using a dedicated controller. The address is <base>/website/action/<website_path>. Set this field as True to allow users to run this action. If it is set to False the action cannot be run through the website.' args: 'Available on the Website'
  • website_url Char
    compute='_get_website_url' help='The full URL to access the server action through the website.' args: 'Website Url'
  • xml_id Char
    compute='_compute_xml_id' help='ID of the action if defined in a XML file' args: 'External ID'
Public methods (1)
  • run_action_code_multi(self, action, eval_context=None)
    @api.model
    Override to allow returning response the same way action is already returned by the basic server action behavior. Note that response has priority over action, avoid using both.

New fields (3)
  • key Char
    help='Technical field used to resolve multiple attachments in a multi-website environment.'
  • website_id Many2one → website
    args: 'website'
  • website_url Char
    deprecated=True readonly=False related='local_url' string='Website URL'
Public methods (5)
  • create(self, vals)
    @api.model
  • get_attachment_by_key(self, key, extra_domain=None, order=None)
    @api.model
  • get_serve_attachment(self, url, extra_domain=None, extra_fields=None, order=None)
    @api.model
  • get_serving_groups(self)
    @api.model
  • init(self)

New fields (0)

No new fields.

Public methods (4)
  • binary_content(self, xmlid=None, model='ir.attachment', id=None, field='datas', unique=False, filename=None, filename_field='name', download=False, mimetype=None, default_mimetype='application/octet-stream', access_token=None)
  • clear_caches(cls)
    @classmethod
  • get_frontend_session_info(self)
    @api.model
  • routing_map(cls, key=None)
    @classmethod

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • get_asset_bundle(self, xmlid, files, env=None)

New fields (0)

No new fields.

Public methods (1)
  • get_available_options(self)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (5)
  • customize_show Boolean
    default=False args: 'Show As Optional Inherit'
  • first_page_id Many2one → website.page
    compute='_compute_first_page_id' help='First page linked to this view' string='Website Page' args: 'website.page'
  • page_ids One2many → website.page
    args: 'website.page', 'view_id'
  • track Boolean
    default=False help='Allow to specify for one page of the website to be trackable or not' string='Track'
  • website_id Many2one → website
    ondelete='cascade' string='Website' args: 'website'
Public methods (11)
  • filter_duplicate(self)
    Filter current recordset only keeping the most suitable view per distinct key. Every non-accessible view will be removed from the set: * In non website context, every view with a website will be removed * In a website context, every view from another website
  • get_default_lang_code(self)
    @api.model
  • get_inheriting_views_arch(self, view_id, model)
    @api.model
  • get_related_views(self, key, bundles=False)
    @api.model
    Make this only return most specific views for website.
  • get_view_id(self, xml_id)
    @api.model@tools.ormcache_context('self.env.uid', 'self.env.su', 'xml_id', keys=('website_id'))
    If a website_id is in the context and the given xml_id is not an int then try to get the id of the specific view for that website, but fallback to the id of the generic view if there is no specific. If no website_id is in the context, it might randomly return the generic or the specific view, so it's probably not recommanded to use this method. `viewref` is probably more suitable. Archived views are ignored (unless the active_test context is set, but then the ormcache_context will not work as expected).
  • name_get(self)
  • redirect_to_page_manager(self)
  • render(self, values=None, engine='ir.qweb', minimal_qcontext=False)
    Render the template. If website is enabled on request, then extend rendering context with website values.
  • save(self, value, xpath=None)
  • unlink(self)
    This implements COU (copy-on-unlink). When deleting a generic page website-specific pages will be created so only the current website is affected.
  • write(self, vals)
    COW for ir.ui.view. This way editing websites does not impact other websites. Also this way newly created websites will only contain the default views.

New fields (0)

No new fields.

Public methods (2)
  • google_map_img(self, zoom=8, width=298, height=298)
  • google_map_link(self, zoom=8)

New fields (34)
  • auth_signup_uninvited Selection
    compute='_compute_auth_signup' inverse='_set_auth_signup'
  • cdn_activated Boolean
    readonly=False related='website_id.cdn_activated'
  • cdn_filters Text
    readonly=False related='website_id.cdn_filters'
  • cdn_url Char
    readonly=False related='website_id.cdn_url'
  • favicon Binary
    readonly=False related='website_id.favicon' args: 'Favicon'
  • google_analytics_key Char
    readonly=False related='website_id.google_analytics_key' args: 'Google Analytics Key'
  • google_management_client_id Char
    readonly=False related='website_id.google_management_client_id' args: 'Google Client ID'
  • google_management_client_secret Char
    readonly=False related='website_id.google_management_client_secret' args: 'Google Client Secret'
  • google_maps_api_key Char
    readonly=False related='website_id.google_maps_api_key'
  • group_multi_website Boolean
    implied_group='website.group_multi_website' args: 'Multi-website'
  • has_google_analytics Boolean
    compute=has_google_analytics inverse=inverse_has_google_analytics args: 'Google Analytics'
  • has_google_analytics_dashboard Boolean
    compute=has_google_analytics_dashboard inverse=inverse_has_google_analytics_dashboard args: 'Google Analytics Dashboard'
  • has_google_maps Boolean
    compute=has_google_maps inverse=inverse_has_google_maps args: 'Google Maps'
  • has_social_network Boolean
    compute=has_social_network inverse=inverse_has_social_network args: 'Configure Social Network'
  • language_ids Many2many
    readonly=False related='website_id.language_ids' relation='res.lang'
  • module_website_links Boolean
    args: 'Link Trackers'
  • module_website_version Boolean
    args: 'A/B Testing'
  • social_default_image Binary
    readonly=False related='website_id.social_default_image' args: 'Default Social Share Image'
  • social_facebook Char
    readonly=False related='website_id.social_facebook'
  • social_github Char
    readonly=False related='website_id.social_github'
  • social_instagram Char
    readonly=False related='website_id.social_instagram'
  • social_linkedin Char
    readonly=False related='website_id.social_linkedin'
  • social_twitter Char
    readonly=False related='website_id.social_twitter'
  • social_youtube Char
    readonly=False related='website_id.social_youtube'
  • specific_user_account Boolean
    help='Are newly created user accounts website specific' readonly=False related='website_id.specific_user_account'
  • website_company_id Many2one
    readonly=False related='website_id.company_id' string='Website Company'
  • website_country_group_ids Many2many
    readonly=False related='website_id.country_group_ids'
  • website_default_lang_code Char
    readonly=False related='website_id.default_lang_id.code' args: 'Default language code'
  • website_default_lang_id Many2one
    readonly=False related='website_id.default_lang_id' relation='res.lang' string='Default language'
  • website_domain Char
    readonly=False related='website_id.domain' args: 'Website Domain'
  • website_id Many2one → website
    default=_default_website ondelete='cascade' string='website' args: 'website'
  • website_language_count Integer
    compute='_compute_website_language_count' readonly=True string='Number of languages'
  • website_logo Binary
    readonly=False related='website_id.logo'
  • website_name Char
    readonly=False related='website_id.name' args: 'Website Name'
Public methods (12)
  • action_website_create_new(self)
  • has_google_analytics(self)
    @api.depends('website_id')
  • has_google_analytics_dashboard(self)
    @api.depends('website_id')
  • has_google_maps(self)
    @api.depends('website_id')
  • has_social_network(self)
    @api.depends('website_id', 'social_twitter', 'social_facebook', 'social_github', 'social_linkedin', 'social_youtube', 'social_instagram')
  • inverse_has_google_analytics(self)
  • inverse_has_google_analytics_dashboard(self)
  • inverse_has_google_maps(self)
  • inverse_has_social_network(self)
  • open_template_user(self)
  • set_values(self)
  • website_go_to(self)

New fields (0)

No new fields.

Public methods (2)
  • get_available(self)
    @api.model@tools.ormcache_context(keys=('website_id'))
    Return the available languages as a list of (code, name) sorted by name.
  • write(self, vals)

New fields (1)
  • visitor_ids Many2many → website.visitor
    string='Visitors' args: 'website.visitor', 'website_visitor_partner_rel', 'partner_id', 'visitor_id'
Public methods (2)
  • google_map_img(self, zoom=8, width=298, height=298)
  • google_map_link(self, zoom=10)

New fields (1)
  • website_id Many2one → website
    readonly=False related='partner_id.website_id' related_sudo=False store=True args: 'website'
Public methods (1)
  • authenticate(cls, db, login, password, user_agent_env)
    @classmethod
    Override to link the logged in user's res.partner to website.visitor

New fields (0)

No new fields.

Public methods (1)
  • make_scss_customization(self, url, values)
    Makes a scss customization of the given file. That file must contain a scss map including a line comment containing the word 'hook', to indicate the location where to write the new key,value pairs. Params: url (str): the URL of the scss file to customize (supposed to be a variable file which will appear in the assets_common bundle) values (dict): key,value mapping to integrate in the file's map (containing the word hook). If a key is already in the file's map, its value is overridden.

New fields (30)
  • auth_signup_uninvited Selection
    default='b2b' string='Customer Account' args: [('b2b', 'On invitation'), ('b2c', 'Free sign up')]
  • auto_redirect_lang Boolean
    default=True help="Should users be redirected to their browser's language" args: 'Autoredirect Language'
  • cdn_activated Boolean
    args: 'Content Delivery Network (CDN)'
  • cdn_filters Text
    default=<expr> help='URL matching those filters will be rewritten using the CDN Base URL' args: 'CDN Filters'
  • cdn_url Char
    default='' args: 'CDN Base URL'
  • company_id Many2one → res.company
    default=<expr> required=True string='Company' args: 'res.company'
  • country_group_ids Many2many → res.country.group
    help='Used when multiple websites have the same domain.' string='Country Groups' args: 'res.country.group', 'website_country_group_rel', 'website_id', 'country_group_id'
  • default_lang_id Many2one → res.lang
    default=_default_language required=True string='Default Language' args: 'res.lang'
  • domain Char
    help='Will be prefixed by http in canonical URLs if no scheme is specified' args: 'Website Domain'
  • favicon Binary
    default=_default_favicon help='This field holds the image used to display a favicon on the website.' string='Website Favicon'
  • google_analytics_key Char
    args: 'Google Analytics Key'
  • google_management_client_id Char
    args: 'Google Client ID'
  • google_management_client_secret Char
    args: 'Google Client Secret'
  • google_maps_api_key Char
    args: 'Google Maps API Key'
  • homepage_id Many2one → website.page
    string='Homepage' args: 'website.page'
  • language_ids Many2many → res.lang
    default=_active_languages args: 'res.lang', 'website_lang_rel', 'website_id', 'lang_id', 'Languages'
  • logo Binary
    default=_default_logo help='Display this logo on the website.' args: 'Website Logo'
  • menu_id Many2one → website.menu
    compute='_compute_menu' string='Main Menu' args: 'website.menu'
  • name Char
    required=True args: 'Website Name'
  • partner_id Many2one
    readonly=False related='user_id.partner_id' relation='res.partner' string='Public Partner'
  • social_default_image Binary
    help='If set, replaces the company logo as the default social share image.' string='Default Social Share Image'
  • social_facebook Char
    default=_default_social_facebook args: 'Facebook Account'
  • social_github Char
    default=_default_social_github args: 'GitHub Account'
  • social_instagram Char
    default=_default_social_instagram args: 'Instagram Account'
  • social_linkedin Char
    default=_default_social_linkedin args: 'LinkedIn Account'
  • social_twitter Char
    default=_default_social_twitter args: 'Twitter Account'
  • social_youtube Char
    default=_default_social_youtube args: 'Youtube Account'
  • specific_user_account Boolean
    help='If True, new accounts will be associated to the current website' args: 'Specific User Account'
  • theme_id Many2one → ir.module.module
    help='Installed theme' args: 'ir.module.module'
  • user_id Many2one → res.users
    required=True string='Public User' args: 'res.users'
Public methods (27)
  • action_dashboard_redirect(self)
    @api.model
  • button_go_website(self)
  • copy_menu_hierarchy(self, top_menu)
  • create(self, vals)
    @api.model
  • enumerate_pages(self, query_string=None, force=False)
    Available pages in the website/CMS. This is mostly used for links generation and can be overridden by modules setting up new HTML controllers for dynamic pages (e.g. blog). By default, returns template views marked as pages. :param str query_string: a (user-provided) string, fetches pages matching the string :returns: a list of mappings with two keys: ``name`` is the displayable name of the resource (page), ``url`` is the absolute URL of the same. :rtype: list({name: str, url: str})
  • get_base_url(self)
  • get_cdn_url(self, uri)
  • get_current_website(self, fallback=True)
    @api.model
  • get_template(self, template)
    @api.model
  • get_unique_key(self, string, template_module=False)
    Given a string, return an unique key including module prefix. It will be suffixed by a counter if it already exists to garantee uniqueness. :param string : the key to be checked for uniqueness, you can pass it with 'website.' or not :param template_module : the module to be prefixed on the key, if not set, we will use website
  • get_unique_path(self, page_url)
    Given an url, return that url suffixed by counter if it already exists :param page_url : the url to be checked for uniqueness
  • get_website_pages(self, domain=[], order='name', limit=None)
  • guess_mimetype(self)
    @api.model
  • image_url(self, record, field, size=None)
    @api.model
    Returns a local url that points to the image field of a given browse record.
  • is_public_user(self)
    @api.model
  • is_publisher(self)
    @api.model
  • is_user(self)
    @api.model
  • new_page(self, name=False, add_menu=False, template='website.default_page', ispage=True, namespace=None)
    @api.model
    Create a new website page, and assign it a xmlid based on the given one :param name : the name of the page :param template : potential xml_id of the page to create :param namespace : module part of the xml_id if none, the template module name is used
  • page_search_dependencies(self, page_id=False)
    @api.model
    Search dependencies just for information. It will not catch 100% of dependencies and False positive is more than possible Each module could add dependences in this dict :returns a dictionnary where key is the 'categorie' of object related to the given view, and the value is the list of text and link to the resource using given page
  • page_search_key_dependencies(self, page_id=False)
    @api.model
    Search dependencies just for information. It will not catch 100% of dependencies and False positive is more than possible Each module could add dependences in this dict :returns a dictionnary where key is the 'categorie' of object related to the given view, and the value is the list of text and link to the resource using given page
  • pager(self, url, total, page=1, step=30, scope=5, url_args=None)
    @api.model
  • rule_is_enumerable(self, rule)
    Checks that it is possible to generate sensible GET queries for a given rule (if the endpoint matches its own requirements) :type rule: werkzeug.routing.Rule :rtype: bool
  • search_pages(self, needle=None, limit=None)
  • unlink(self)
  • viewref(self, view_id, raise_if_not_found=True)
    @api.model
    Given an xml_id or a view_id, return the corresponding view record. In case of website context, return the most specific one. If no website_id is in the context, it will return the generic view, instead of a random one like `get_view_id`. Look also for archived views, no matter the context. :param view_id: either a string xml_id or an integer view_id :param raise_if_not_found: should the method raise an error if no view found :return: The view record or empty recordset
  • website_domain(self, website_id=False)
    @api.model
  • write(self, values)

New fields (14)
  • child_id One2many → website.menu
    string='Child Menus' args: 'website.menu', 'parent_id'
  • group_ids Many2many → res.groups
    help='User need to be at least in one of these groups to see the menu' string='Visible Groups' args: 'res.groups'
  • is_mega_menu Boolean
    compute=_compute_field_is_mega_menu inverse=_set_field_is_mega_menu
  • is_visible Boolean
    compute='_compute_visible' string='Is Visible'
  • mega_menu_classes Char
  • mega_menu_content Html
    prefetch=True sanitize=False translate=html_translate
  • name Char
    required=True translate=True args: 'Menu'
  • new_window Boolean
    args: 'New Window'
  • page_id Many2one → website.page
    ondelete='cascade' args: 'website.page', 'Related Page'
  • parent_id Many2one → website.menu
    index=True ondelete='cascade' args: 'website.menu', 'Parent Menu'
  • parent_path Char
    index=True
  • sequence Integer
    default=_default_sequence
  • url Char
    default='' args: 'Url'
  • website_id Many2one → website
    ondelete='cascade' args: 'website', 'Website'
Public methods (7)
  • clean_url(self)
    @api.model
  • create(self, vals)
    @api.model
    In case a menu without a website_id is trying to be created, we duplicate it for every website. Note: Particulary useful when installing a module that adds a menu like /shop. So every website has the shop menu. Be careful to return correct record for ir.model.data xml_id in case of default main menus creation.
  • get_tree(self, website_id, menu_id=None)
    @api.model
  • name_get(self)
  • save(self, website_id, data)
    @api.model
  • unlink(self)
  • write(self, values)

New fields (1)
  • website_id Many2one → website
    help='Restrict publishing to this website.' ondelete='restrict' string='Website' args: 'website'
Public methods (1)
  • can_access_from_current_website(self, website_id=False)

New fields (11)
  • arch Text
    depends_context=('website_id') readonly=False related='view_id.arch'
  • date_publish Datetime
    args: 'Publishing Date'
  • header_color Char
  • header_overlay Boolean
  • is_homepage Boolean
    compute='_compute_homepage' inverse='_set_homepage' string='Homepage'
  • is_visible Boolean
    compute='_compute_visible' string='Is Visible'
  • menu_ids One2many → website.menu
    args: 'website.menu', 'page_id', 'Related Menus'
  • url Char
    args: 'Page URL'
  • view_id Many2one → ir.ui.view
    ondelete='cascade' required=True string='View' args: 'ir.ui.view'
  • website_id Many2one
    ondelete='cascade' readonly=False related='view_id.website_id' store=True
  • website_indexed Boolean
    default=True args: 'Page Indexed'
Public methods (8)
  • clone_page(self, page_id, clone_menu=True)
    @api.model
    Clone a page, given its identifier :param page_id : website.page identifier
  • copy(self, default=None)
    @api.returns('self', <expr>)
  • get_page_info(self, id)
    @api.model
  • get_view_identifier(self)
    Get identifier of this page view that may be used to render it
  • get_website_meta(self)
  • save_page_info(self, website_id, data)
    @api.model
  • unlink(self)
  • write(self, vals)

New fields (4)
  • can_publish Boolean
    compute='_compute_can_publish' args: 'Can Publish'
  • is_published Boolean
    copy=False default=<expr> args: 'Is Published'
  • website_published Boolean
    readonly=False related='is_published' args: 'Visible on current website'
  • website_url Char
    compute='_compute_website_url' help='The full URL to access the document through the website.' args: 'Website URL'
Public methods (5)
  • create(self, vals_list)
    @api.model_create_multi
  • create_and_get_website_url(self, **kwargs)
  • open_website_url(self)
  • website_publish_button(self)
  • write(self, values)

New fields (8)
  • active Boolean
    default=True
  • name Char
    required=True args: 'Name'
  • redirect_type Selection
    default='302' help="Type of redirect/Rewrite:\n\n 301 Moved permanently: The browser will keep in cache the new url.\n 302 Moved temporarily: The browser will not keep in cache the new url and ask again the next time the new url.\n 404 Not Found: If you want remove a specific page/controller (e.g. Ecommerce is installed, but you don't want /shop on a specific website)\n 308 Redirect / Rewrite: If you want rename a controller with a new url. (Eg: /shop -> /garden - Both url will be accessible but /shop will automatically be redirected to /garden)\n " string='Action' args: [('404', '404 Not Found'), ('301', '301 Moved permanently'), ('302', '302 Moved temporarily'), ('308', '308 Redirect / Rewrite')]
  • route_id Many2one → website.route
    args: 'website.route'
  • sequence Integer
  • url_from Char
    index=True args: 'URL from'
  • url_to Char
    args: 'URL to'
  • website_id Many2one → website
    index=True ondelete='cascade' string='Website' args: 'website'
Public methods (5)
  • create(self, vals)
    @api.model
  • name_get(self)
  • refresh_routes(self)
  • unlink(self)
  • write(self, vals)

New fields (1)
  • path Char
    args: 'Route'
Public methods (0)

No public methods.

New fields (5)
  • is_seo_optimized Boolean
    compute='_compute_is_seo_optimized' args: 'SEO optimized'
  • website_meta_description Text
    translate=True args: 'Website meta description'
  • website_meta_keywords Char
    translate=True args: 'Website meta keywords'
  • website_meta_og_img Char
    args: 'Website opengraph image'
  • website_meta_title Char
    translate=True args: 'Website meta title'
Public methods (1)
  • get_website_meta(self)
    This method will return final meta information. It will replace default values with user's custom value (if user modified it from the seo popup of frontend) This method is not meant for overridden. To customize meta values override `_default_website_meta` method instead of this method. This method only replaces user custom values in defaults.

New fields (4)
  • page_id Many2one → website.page
    index=True ondelete='cascade' readonly=True args: 'website.page'
  • url Text
    index=True args: 'Url'
  • visit_datetime Datetime
    default=fields.Datetime.now readonly=True required=True args: 'Visit Date'
  • visitor_id Many2one → website.visitor
    index=True ondelete='cascade' readonly=True required=True args: 'website.visitor'
Public methods (0)

No public methods.

New fields (22)
  • access_token Char
    copy=False default=<expr> groups='base.group_website_publisher' index=False required=True
  • active Boolean
    default=True args: 'Active'
  • country_flag Binary
    related='country_id.image' string='Country Flag'
  • country_id Many2one → res.country
    readonly=True args: 'res.country', 'Country'
  • create_date Datetime
    readonly=True args: 'First connection date'
  • email Char
    compute='_compute_email_phone' string='Email'
  • is_connected Boolean
    compute='_compute_time_statistics' help='A visitor is considered as connected if his last page view was within the last 5 minutes.' args: 'Is connected ?'
  • lang_id Many2one → res.lang
    help='Language from the website when visitor has been created' string='Language' args: 'res.lang'
  • last_connection_datetime Datetime
    default=fields.Datetime.now help='Last page view date' readonly=True args: 'Last Connection'
  • last_visited_page_id Many2one → website.page
    compute='_compute_last_visited_page_id' string='Last Visited Page' args: 'website.page'
  • mobile Char
    compute='_compute_email_phone' string='Mobile Phone'
  • name Char
    args: 'Name'
  • page_count Integer
    compute='_compute_page_statistics' help='Total number of tracked page visited' args: '# Visited Pages'
  • page_ids Many2many → website.page
    compute='_compute_page_statistics' search='_search_page_ids' string='Visited Pages' args: 'website.page'
  • partner_id Many2one → res.partner
    help='Partner of the last logged in user.' string='Linked Partner' args: 'res.partner'
  • partner_image Binary
    related='partner_id.image_1920'
  • time_since_last_action Char
    compute='_compute_time_statistics' help='Time since last page view. E.g.: 2 minutes ago' args: 'Last action'
  • timezone Selection
    string='Timezone' args: _tz_get
  • visit_count Integer
    default=1 help='A new visit is considered if last connection was more than 8 hours ago.' readonly=True args: 'Number of visits'
  • visitor_page_count Integer
    compute='_compute_page_statistics' help='Total number of visits on tracked pages' args: 'Page Views'
  • website_id Many2one → website
    readonly=True args: 'website', 'Website'
  • website_track_ids One2many → website.track
    readonly=True string='Visited Pages History' args: 'website.track', 'visitor_id'
Public methods (2)
  • action_send_mail(self)
  • name_get(self)
    @api.depends('name')
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/12.0/website
VERSION
VERSION 1.0
CATEGORY
CATEGORYWebsite
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Christophe Matthieu, Martin Trigaux, Fabien Pinckaers, Olivier Dony, Thibault Delavallée, Denis Ledoux, Christophe Simonis, Xavier Morel, Goffin Simon, Nicolas Martinelli, Nicolas Lempereur, qdp-odoo, Atul Patel, Géry Debongnie, Aaron Bohy, Jeremy Kersten, GitHub, Lucas Perais (lpe), Yannick Tivisse, Alexandre Kühn, qsm-odoo, Martin Geubelle, Nicolas Seinlet, Romain Derie, Adrien Dieudonne, RomainLibert, Christophe Monniez, len-odoo, Julien (juc) Castiaux, Jorge Pinna Puissant, Jairo Llopis, Nans Lefebvre, Alexandre Kühn, Toufik Ben Jaa, Adrian Torres, mreficent, XavierDo, Julien Castiaux, Priyanka Kakadiya, Xavier-Do, jvm-odoo, Victor Feyens, Paul Morelle, Sébastien Theys, Nasreddin (bon), Samuel Degueldre, Kinjal Mehta, Quentin Smetz (qsm), Swapnesh Shah, nie, Gorash, Williams Estrada, Manuel Vázquez Acosta, Denis Mudarisov, fja-odoo, ThanhDodeurOdoo, Younn Olivier
WEBSITE
WEBSITEhttps://www.odoo.com/page/website-builder
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:57:00
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - web
    - base
    - web_editor
    - http_routing
    - portal
    - mail
    - base_setup
    - bus
    - web_tour
    - social_media
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (127)
XML IDNameModelTypeStatus
403 403 ir.ui.view qweb New
404 404 ir.ui.view qweb New
500 500 ir.ui.view qweb New
_assets_frontend_helpers _assets_frontend_helpers ir.ui.view qweb Inherits web._assets_frontend_helpers
_assets_primary_variables _assets_primary_variables ir.ui.view qweb Inherits web._assets_primary_variables
_assets_secondary_variables _assets_secondary_variables ir.ui.view qweb Inherits web._assets_secondary_variables
aboutus About us t New
affix_top_menu Affix Top Menu ir.ui.view qweb Inherits website.layout
assets_backend Website Backend Assets (used in backend interface) ir.ui.view qweb Inherits web.assets_backend
assets_common Website Assets Common ir.ui.view qweb Inherits web.assets_common
assets_frontend Website Assets ir.ui.view qweb Inherits web.assets_frontend
assets_frontend_compatibility_for_12_0 assets_frontend_compatibility_for_12_0 ir.ui.view qweb Inherits website.assets_frontend
brand_promotion Brand Promotion ir.ui.view qweb New
company_description Company Description ir.ui.view qweb New
contactus Contact Us t New
default_css default_css ir.ui.view qweb New
default_csv default_csv ir.ui.view qweb New
default_js default_js ir.ui.view qweb New
default_less default_less ir.ui.view qweb New
default_page default_page ir.ui.view qweb New
default_scss default_scss ir.ui.view qweb New
default_xml default_xml ir.ui.view qweb New
external_snippets external_snippets ir.ui.view qweb Inherits website.snippets
footer_custom Footer ir.ui.view qweb Inherits website.layout
homepage Home t New
http_error http_error ir.ui.view qweb New
http_error_debug http_error_debug ir.ui.view qweb New
index_management index_management ir.ui.view qweb New
kanban kanban ir.ui.view qweb New
kanban_contain kanban_contain ir.ui.view qweb New
language_selector language_selector ir.ui.view qweb New
layout Main layout ir.ui.view qweb Inherits portal.frontend_layout
layout_footer_copyright Footer Copyright ir.ui.view qweb Inherits website.layout
layout_logo_show Show Logo ir.ui.view qweb Inherits website.layout
list_website_pages Website Pages Management ir.ui.view qweb New
login_layout Website Login Layout ir.ui.view qweb Inherits web.login_layout
menu_search website.menu.search website.menu search New
menu_tree website.menu.tree website.menu tree New
no_autohide_menu no_autohide_menu ir.ui.view qweb Inherits website.layout
one_page_line one_page_line ir.ui.view qweb New
option_custom_body_image option_custom_body_image ir.ui.view qweb Inherits website.assets_frontend
option_custom_body_pattern option_custom_body_pattern ir.ui.view qweb Inherits website.assets_frontend
option_font_body_02_variables option_font_body_02_variables ir.ui.view qweb Inherits website._assets_primary_variables
option_font_body_03_variables option_font_body_03_variables ir.ui.view qweb Inherits website._assets_primary_variables
option_font_body_04_variables option_font_body_04_variables ir.ui.view qweb Inherits website._assets_primary_variables
option_font_body_05_variables option_font_body_05_variables ir.ui.view qweb Inherits website._assets_primary_variables
option_font_body_06_variables option_font_body_06_variables ir.ui.view qweb Inherits website._assets_primary_variables
option_font_button_02_variables option_font_button_02_variables ir.ui.view qweb Inherits website._assets_primary_variables
option_font_button_03_variables option_font_button_03_variables ir.ui.view qweb Inherits website._assets_primary_variables
option_font_button_04_variables option_font_button_04_variables ir.ui.view qweb Inherits website._assets_primary_variables
option_font_button_05_variables option_font_button_05_variables ir.ui.view qweb Inherits website._assets_primary_variables
option_font_button_06_variables option_font_button_06_variables ir.ui.view qweb Inherits website._assets_primary_variables
option_font_navbar_02_variables option_font_navbar_02_variables ir.ui.view qweb Inherits website._assets_primary_variables
option_font_navbar_03_variables option_font_navbar_03_variables ir.ui.view qweb Inherits website._assets_primary_variables
option_font_navbar_04_variables option_font_navbar_04_variables ir.ui.view qweb Inherits website._assets_primary_variables
option_font_navbar_05_variables option_font_navbar_05_variables ir.ui.view qweb Inherits website._assets_primary_variables
option_font_navbar_06_variables option_font_navbar_06_variables ir.ui.view qweb Inherits website._assets_primary_variables
option_font_title_02_variables option_font_title_02_variables ir.ui.view qweb Inherits website._assets_primary_variables
option_font_title_03_variables option_font_title_03_variables ir.ui.view qweb Inherits website._assets_primary_variables
option_font_title_04_variables option_font_title_04_variables ir.ui.view qweb Inherits website._assets_primary_variables
option_font_title_05_variables option_font_title_05_variables ir.ui.view qweb Inherits website._assets_primary_variables
option_font_title_06_variables option_font_title_06_variables ir.ui.view qweb Inherits website._assets_primary_variables
option_layout_boxed_variables option_layout_boxed_variables ir.ui.view qweb Inherits website._assets_primary_variables
page_404 page_404 ir.ui.view qweb New
pager Pager ir.ui.view qweb Inherits portal.pager
portal.portal_show_sign_in New
publish_management publish_management ir.ui.view qweb New
publish_short publish_short ir.ui.view qweb New
qunit_suite qunit_suite ir.ui.view qweb Inherits web.qunit_suite
res_config_settings_view_form res.config.settings.view.form.inherit.website res.config.settings xpath Inherits base.res_config_settings_view_form
robots robots ir.ui.view qweb New
s_alert Alert ir.ui.view qweb New
s_banner Banner ir.ui.view qweb New
s_btn Button ir.ui.view qweb New
s_call_to_action Call to Action ir.ui.view qweb New
s_card Card ir.ui.view qweb New
s_carousel Carousel ir.ui.view qweb New
s_company_team Company Team ir.ui.view qweb New
s_comparisons Comparisons ir.ui.view qweb New
s_cover Cover ir.ui.view qweb New
s_facebook_page Facebook Page ir.ui.view qweb New
s_faq_collapse Accordion ir.ui.view qweb New
s_features Features ir.ui.view qweb New
s_features_grid Features Grid ir.ui.view qweb New
s_hr Separator ir.ui.view qweb New
s_image_gallery Image Gallery ir.ui.view qweb New
s_image_text Image - Text ir.ui.view qweb New
s_parallax Parallax ir.ui.view qweb New
s_picture Picture ir.ui.view qweb New
s_quotes_carousel Quotes ir.ui.view qweb New
s_rating Rating ir.ui.view qweb New
s_references References ir.ui.view qweb New
s_share Share ir.ui.view qweb New
s_tabs Tabs ir.ui.view qweb New
s_text_block Text block ir.ui.view qweb New
s_text_image Text - Image ir.ui.view qweb New
s_three_columns Three Columns ir.ui.view qweb New
s_title Title ir.ui.view qweb New
show_website_info Show Odoo Information ir.ui.view qweb Inherits website.website_info
sitemap_index_xml sitemap_index_xml ir.ui.view qweb New
sitemap_locs sitemap_locs ir.ui.view qweb New
sitemap_xml sitemap_xml ir.ui.view qweb New
snippet_options snippet_options ir.ui.view qweb New
snippets snippets ir.ui.view qweb Inherits web_editor.snippets
submenu Submenu ir.ui.view qweb New
theme_customize theme_customize ir.ui.view qweb New
user_navbar user_navbar ir.ui.view qweb Inherits website.layout
view_attachment_form_inherit_website ir.attachment.form.inherit.website ir.attachment field Inherits base.view_attachment_form
view_attachment_tree_inherit_website ir.attachment.tree.inherit.website ir.attachment field Inherits base.view_attachment_tree
view_base_language_install view_base_language_install.inherit base.language.install group Inherits base.view_base_language_install
view_partner_form_inherit_website res.partner.form.website.inherit res.partner field Inherits base.view_partner_form
view_redirect_search website.redirect.search website.redirect search New
view_server_action_form_website ir.actions.server.form.website ir.actions.server data Inherits base.view_server_action_form
view_server_action_search_website ir.actions.server.search.website ir.actions.server xpath Inherits base.view_server_action_search
view_server_action_tree_website ir.actions.server.tree.website ir.actions.server xpath Inherits base.view_server_action_tree
view_view_form_extend ir.ui.view field Inherits base.view_view_form
view_view_tree_inherit_website ir.ui.view field Inherits base.view_view_tree
view_website_form website.form website form New
view_website_tree website.tree website tree New
website.assets_editor Website Editor Assets (used in website editor) ir.ui.view qweb New
website_info Odoo Information ir.ui.view qweb New
website_menus_form_view website.menu.form website.menu form New
website_pages_form_view website.page.form website.page form New
website_pages_tree_view website.page.list website.page tree New
website_redirect_form_view website.redirect.form website.redirect form New
website_redirect_tree_view website.redirect.list website.redirect tree New
website_search_box Website Searchbox ir.ui.view qweb New
Models touched (22)

New fields (1)
  • website_ids Many2many → website
    string='Websites to translate' args: 'website'
Public methods (2)
  • default_get(self, fields)
    @api.model
  • lang_install(self)
    @api.multi

New fields (4)
  • website_path Char
    args: 'Website Path'
  • website_published Boolean
    copy=False help='A code server action can be executed from the website, using a dedicated controller. The address is <base>/website/action/<website_path>. Set this field as True to allow users to run this action. If it is set to False the action cannot be run through the website.' args: 'Available on the Website'
  • website_url Char
    compute='_get_website_url' help='The full URL to access the server action through the website.' args: 'Website Url'
  • xml_id Char
    compute='_compute_xml_id' help='ID of the action if defined in a XML file' args: 'External ID'
Public methods (1)
  • run_action_code_multi(self, action, eval_context=None)
    @api.model
    Override to allow returning response the same way action is already returned by the basic server action behavior. Note that response has priority over action, avoid using both.

New fields (3)
  • key Char
    help='Technical field used to resolve multiple attachments in a multi-website environment.'
  • website_id Many2one → website
    args: 'website'
  • website_url Char
    deprecated=True readonly=False related='local_url' string='Website URL'
Public methods (5)
  • create(self, vals)
    @api.model
  • get_attachment_by_key(self, key, extra_domain=None, order=None)
    @api.model
  • get_serve_attachment(self, url, extra_domain=None, extra_fields=None, order=None)
    @api.model
  • get_serving_groups(self)
    @api.model
  • init(self)

New fields (0)

No new fields.

Public methods (1)
  • binary_content(cls, xmlid=None, model='ir.attachment', id=None, field='datas', unique=False, filename=None, filename_field='datas_fname', download=False, mimetype=None, default_mimetype='application/octet-stream', access_token=None, related_id=None, access_mode=None, env=None)
    @classmethod

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • get_asset_bundle(self, xmlid, files, remains=None, env=None)

New fields (0)

No new fields.

Public methods (1)
  • get_available_options(self)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • load_module_terms(self, modules, langs)
    Add missing website specific translation

New fields (4)
  • customize_show Boolean
    default=False args: 'Show As Optional Inherit'
  • first_page_id Many2one → website.page
    compute='_compute_first_page_id' help='First page linked to this view' string='Website Page' args: 'website.page'
  • page_ids One2many → website.page
    args: 'website.page', 'view_id'
  • website_id Many2one → website
    ondelete='cascade' string='Website' args: 'website'
Public methods (10)
  • filter_duplicate(self)
    Filter current recordset only keeping the most suitable view per distinct key. Every non-accessible view will be removed from the set: * In non website context, every view with a website will be removed * In a website context, every view from another website
  • get_default_lang_code(self)
    @api.model
  • get_inheriting_views_arch(self, view_id, model)
    @api.model
  • get_related_views(self, key, bundles=False)
    @api.model
    Make this only return most specific views for website.
  • get_view_id(self, xml_id)
    @api.model@tools.ormcache_context('self._uid', 'xml_id', keys=('website_id'))
    If a website_id is in the context and the given xml_id is not an int then try to get the id of the specific view for that website, but fallback to the id of the generic view if there is no specific. If no website_id is in the context, it might randomly return the generic or the specific view, so it's probably not recommanded to use this method. `viewref` is probably more suitable. Archived views are ignored (unless the active_test context is set, but then the ormcache_context will not work as expected).
  • redirect_to_page_manager(self)
    @api.multi
  • render(self, values=None, engine='ir.qweb', minimal_qcontext=False)
    @api.multi
    Render the template. If website is enabled on request, then extend rendering context with website values.
  • save(self, value, xpath=None)
    @api.multi
  • unlink(self)
    @api.multi
    This implements COU (copy-on-unlink). When deleting a generic page website-specific pages will be created so only the current website is affected.
  • write(self, vals)
    @api.multi
    COW for ir.ui.view. This way editing websites does not impact other websites. Also this way newly created websites will only contain the default views.

New fields (0)

No new fields.

Public methods (2)
  • google_map_img(self, zoom=8, width=298, height=298)
    @api.multi
  • google_map_link(self, zoom=8)
    @api.multi

New fields (34)
  • auth_signup_uninvited Selection
    readonly=False related='website_id.auth_signup_uninvited' args: 'Customer Account'
  • cdn_activated Boolean
    readonly=False related='website_id.cdn_activated'
  • cdn_filters Text
    readonly=False related='website_id.cdn_filters'
  • cdn_url Char
    readonly=False related='website_id.cdn_url'
  • favicon Binary
    readonly=False related='website_id.favicon' args: 'Favicon'
  • google_analytics_key Char
    readonly=False related='website_id.google_analytics_key' args: 'Google Analytics Key'
  • google_management_client_id Char
    readonly=False related='website_id.google_management_client_id' args: 'Google Client ID'
  • google_management_client_secret Char
    readonly=False related='website_id.google_management_client_secret' args: 'Google Client Secret'
  • google_maps_api_key Char
    readonly=False related='website_id.google_maps_api_key'
  • group_multi_website Boolean
    implied_group='website.group_multi_website' args: 'Multi-website'
  • has_google_analytics Boolean
    compute=has_google_analytics inverse=inverse_has_google_analytics args: 'Google Analytics'
  • has_google_analytics_dashboard Boolean
    compute=has_google_analytics_dashboard inverse=inverse_has_google_analytics_dashboard args: 'Google Analytics Dashboard'
  • has_google_maps Boolean
    compute=has_google_maps inverse=inverse_has_google_maps args: 'Google Maps'
  • has_social_network Boolean
    compute=has_social_network inverse=inverse_has_social_network args: 'Configure Social Network'
  • language_count Integer
    compute='_compute_language_count' readonly=True string='Number of languages'
  • language_ids Many2many
    readonly=False related='website_id.language_ids' relation='res.lang'
  • module_website_links Boolean
    args: 'Link Trackers'
  • module_website_version Boolean
    args: 'A/B Testing'
  • social_default_image Binary
    readonly=False related='website_id.social_default_image' args: 'Default Social Share Image'
  • social_facebook Char
    readonly=False related='website_id.social_facebook'
  • social_github Char
    readonly=False related='website_id.social_github'
  • social_googleplus Char
    readonly=False related='website_id.social_googleplus'
  • social_instagram Char
    readonly=False related='website_id.social_instagram'
  • social_linkedin Char
    readonly=False related='website_id.social_linkedin'
  • social_twitter Char
    readonly=False related='website_id.social_twitter'
  • social_youtube Char
    readonly=False related='website_id.social_youtube'
  • specific_user_account Boolean
    help='Are newly created user accounts website specific' readonly=False related='website_id.specific_user_account'
  • website_company_id Many2one
    readonly=False related='website_id.company_id' string='Website Company'
  • website_country_group_ids Many2many
    readonly=False related='website_id.country_group_ids'
  • website_default_lang_code Char
    oldname='default_lang_code' readonly=False related='website_id.default_lang_code' args: 'Default language code'
  • website_default_lang_id Many2one
    oldname='default_lang_id' readonly=False related='website_id.default_lang_id' relation='res.lang' string='Default language'
  • website_domain Char
    readonly=False related='website_id.domain' args: 'Website Domain'
  • website_id Many2one → website
    default=_default_website ondelete='cascade' string='website' args: 'website'
  • website_name Char
    readonly=False related='website_id.name' args: 'Website Name'
Public methods (12)
  • action_website_create_new(self)
  • has_google_analytics(self)
    @api.depends('website_id')
  • has_google_analytics_dashboard(self)
    @api.depends('website_id')
  • has_google_maps(self)
    @api.depends('website_id')
  • has_social_network(self)
    @api.depends('website_id', 'social_twitter', 'social_facebook', 'social_github', 'social_linkedin', 'social_youtube', 'social_googleplus', 'social_instagram')
  • inverse_has_google_analytics(self)
  • inverse_has_google_analytics_dashboard(self)
  • inverse_has_google_maps(self)
  • inverse_has_social_network(self)
  • open_template_user(self)
    @api.multi
  • set_values(self)
  • website_go_to(self)

New fields (0)

No new fields.

Public methods (1)
  • write(self, vals)
    @api.multi

New fields (1)
  • website_id Many2one → website
    string='Registration Website' args: 'website'
Public methods (3)
  • get_base_url(self)
    @api.multi
    When using multi-website, we want the user to be redirected to the most appropriate website if possible.
  • google_map_img(self, zoom=8, width=298, height=298)
    @api.multi
  • google_map_link(self, zoom=10)
    @api.multi

New fields (1)
  • website_id Many2one → website
    readonly=False related='partner_id.website_id' related_sudo=False store=True args: 'website'
Public methods (0)

No public methods.

New fields (31)
  • auth_signup_uninvited Selection
    default='b2b' string='Customer Account' args: [('b2b', 'On invitation'), ('b2c', 'Free sign up')]
  • auto_redirect_lang Boolean
    default=True help="Should users be redirected to their browser's language" args: 'Autoredirect Language'
  • cdn_activated Boolean
    args: 'Content Delivery Network (CDN)'
  • cdn_filters Text
    default=<expr> help='URL matching those filters will be rewritten using the CDN Base URL' args: 'CDN Filters'
  • cdn_url Char
    default='' args: 'CDN Base URL'
  • company_id Many2one → res.company
    default=<expr> required=True string='Company' args: 'res.company'
  • country_group_ids Many2many → res.country.group
    help='Used when multiple websites have the same domain.' string='Country Groups' args: 'res.country.group', 'website_country_group_rel', 'website_id', 'country_group_id'
  • default_lang_code Char
    readonly=False related='default_lang_id.code' store=True args: 'Default language code'
  • default_lang_id Many2one → res.lang
    default=_default_language required=True string='Default Language' args: 'res.lang'
  • domain Char
    args: 'Website Domain'
  • favicon Binary
    help='This field holds the image used to display a favicon on the website.' string='Website Favicon'
  • google_analytics_key Char
    args: 'Google Analytics Key'
  • google_management_client_id Char
    args: 'Google Client ID'
  • google_management_client_secret Char
    args: 'Google Client Secret'
  • google_maps_api_key Char
    args: 'Google Maps API Key'
  • homepage_id Many2one → website.page
    string='Homepage' args: 'website.page'
  • language_ids Many2many → res.lang
    default=_active_languages args: 'res.lang', 'website_lang_rel', 'website_id', 'lang_id', 'Languages'
  • menu_id Many2one → website.menu
    compute='_compute_menu' string='Main Menu' args: 'website.menu'
  • name Char
    required=True args: 'Website Name'
  • partner_id Many2one
    readonly=False related='user_id.partner_id' relation='res.partner' string='Public Partner'
  • social_default_image Binary
    attachment=True help='If set, replaces the company logo as the default social share image.' string='Default Social Share Image'
  • social_facebook Char
    default=_default_social_facebook args: 'Facebook Account'
  • social_github Char
    default=_default_social_github args: 'GitHub Account'
  • social_googleplus Char
    default=_default_social_googleplus args: 'Google+ Account'
  • social_instagram Char
    default=_default_social_instagram args: 'Instagram Account'
  • social_linkedin Char
    default=_default_social_linkedin args: 'LinkedIn Account'
  • social_twitter Char
    default=_default_social_twitter args: 'Twitter Account'
  • social_youtube Char
    default=_default_social_youtube args: 'Youtube Account'
  • specific_user_account Boolean
    help='If True, new accounts will be associated to the current website' args: 'Specific User Account'
  • theme_id Many2one → ir.module.module
    help='Installed theme' args: 'ir.module.module'
  • user_id Many2one → res.users
    required=True string='Public User' args: 'res.users'
Public methods (28)
  • action_dashboard_redirect(self)
    @api.model
  • button_go_website(self)
  • copy_menu_hierarchy(self, top_menu)
  • create(self, vals)
    @api.model
  • enumerate_pages(self, query_string=None, force=False)
    @api.multi
    Available pages in the website/CMS. This is mostly used for links generation and can be overridden by modules setting up new HTML controllers for dynamic pages (e.g. blog). By default, returns template views marked as pages. :param str query_string: a (user-provided) string, fetches pages matching the string :returns: a list of mappings with two keys: ``name`` is the displayable name of the resource (page), ``url`` is the absolute URL of the same. :rtype: list({name: str, url: str})
  • get_alternate_languages(self, req=None)
    @api.multi
  • get_cdn_url(self, uri)
  • get_current_website(self, fallback=True)
    @api.model
  • get_languages(self)
    @api.multi
  • get_template(self, template)
    @api.model
  • get_unique_key(self, string, template_module=False)
    Given a string, return an unique key including module prefix. It will be suffixed by a counter if it already exists to garantee uniqueness. :param string : the key to be checked for uniqueness, you can pass it with 'website.' or not :param template_module : the module to be prefixed on the key, if not set, we will use website
  • get_unique_path(self, page_url)
    Given an url, return that url suffixed by counter if it already exists :param page_url : the url to be checked for uniqueness
  • get_website_pages(self, domain=[], order='name', limit=None)
    @api.multi
  • guess_mimetype(self)
    @api.model
  • image_url(self, record, field, size=None)
    @api.model
    Returns a local url that points to the image field of a given browse record.
  • is_public_user(self)
    @api.model
  • is_publisher(self)
    @api.model
  • is_user(self)
    @api.model
  • new_page(self, name=False, add_menu=False, template='website.default_page', ispage=True, namespace=None)
    @api.model
    Create a new website page, and assign it a xmlid based on the given one :param name : the name of the page :param template : potential xml_id of the page to create :param namespace : module part of the xml_id if none, the template module name is used
  • page_search_dependencies(self, page_id=False)
    @api.model
    Search dependencies just for information. It will not catch 100% of dependencies and False positive is more than possible Each module could add dependences in this dict :returns a dictionnary where key is the 'categorie' of object related to the given view, and the value is the list of text and link to the resource using given page
  • page_search_key_dependencies(self, page_id=False)
    @api.model
    Search dependencies just for information. It will not catch 100% of dependencies and False positive is more than possible Each module could add dependences in this dict :returns a dictionnary where key is the 'categorie' of object related to the given view, and the value is the list of text and link to the resource using given page
  • pager(self, url, total, page=1, step=30, scope=5, url_args=None)
    @api.model
  • rule_is_enumerable(self, rule)
    Checks that it is possible to generate sensible GET queries for a given rule (if the endpoint matches its own requirements) :type rule: werkzeug.routing.Rule :rtype: bool
  • search_pages(self, needle=None, limit=None)
    @api.multi
  • unlink(self)
    @api.multi
  • viewref(self, view_id, raise_if_not_found=True)
    @api.model
    Given an xml_id or a view_id, return the corresponding view record. In case of website context, return the most specific one. If no website_id is in the context, it will return the generic view, instead of a random one like `get_view_id`. Look also for archived views, no matter the context. :param view_id: either a string xml_id or an integer view_id :param raise_if_not_found: should the method raise an error if no view found :return: The view record or empty recordset
  • website_domain(self, website_id=False)
    @api.model
  • write(self, values)
    @api.multi

New fields (10)
  • child_id One2many → website.menu
    string='Child Menus' args: 'website.menu', 'parent_id'
  • is_visible Boolean
    compute='_compute_visible' string='Is Visible'
  • name Char
    required=True translate=True args: 'Menu'
  • new_window Boolean
    args: 'New Window'
  • page_id Many2one → website.page
    ondelete='cascade' args: 'website.page', 'Related Page'
  • parent_id Many2one → website.menu
    index=True ondelete='cascade' args: 'website.menu', 'Parent Menu'
  • parent_path Char
    index=True
  • sequence Integer
    default=_default_sequence
  • url Char
    default='' args: 'Url'
  • website_id Many2one → website
    ondelete='cascade' args: 'website', 'Website'
Public methods (6)
  • clean_url(self)
    @api.model
  • create(self, vals)
    @api.model
    In case a menu without a website_id is trying to be created, we duplicate it for every website. Note: Particulary useful when installing a module that adds a menu like /shop. So every website has the shop menu. Be careful to return correct record for ir.model.data xml_id in case of default main menus creation.
  • get_tree(self, website_id, menu_id=None)
    @api.model
  • name_get(self)
    @api.multi
  • save(self, website_id, data)
    @api.model
  • unlink(self)
    @api.multi

New fields (1)
  • website_id Many2one → website
    help='Restrict publishing to this website.' ondelete='restrict' string='Website' args: 'website'
Public methods (1)
  • can_access_from_current_website(self, website_id=False)
    @api.multi

New fields (10)
  • date_publish Datetime
    args: 'Publishing Date'
  • header_color Char
  • header_overlay Boolean
  • is_homepage Boolean
    compute='_compute_homepage' inverse='_set_homepage' string='Homepage'
  • is_visible Boolean
    compute='_compute_visible' string='Is Visible'
  • menu_ids One2many → website.menu
    args: 'website.menu', 'page_id', 'Related Menus'
  • url Char
    args: 'Page URL'
  • view_id Many2one → ir.ui.view
    ondelete='cascade' required=True string='View' args: 'ir.ui.view'
  • website_id Many2one
    ondelete='cascade' readonly=False related='view_id.website_id' store=True
  • website_indexed Boolean
    default=True args: 'Page Indexed'
Public methods (8)
  • clone_page(self, page_id, clone_menu=True)
    @api.model
    Clone a page, given its identifier :param page_id : website.page identifier
  • copy(self, default=None)
    @api.multi@api.returns('self', <expr>)
  • get_page_info(self, id)
    @api.model
  • get_view_identifier(self)
    @api.multi
    Get identifier of this page view that may be used to render it
  • get_website_meta(self)
  • save_page_info(self, website_id, data)
    @api.model
  • unlink(self)
    @api.multi
  • write(self, vals)
    @api.multi

New fields (3)
  • is_published Boolean
    copy=False args: 'Is published'
  • website_published Boolean
    readonly=False related='is_published' args: 'Visible on current website'
  • website_url Char
    compute='_compute_website_url' help='The full URL to access the document through the website.' args: 'Website URL'
Public methods (3)
  • create_and_get_website_url(self, **kwargs)
  • open_website_url(self)
  • website_publish_button(self)
    @api.multi

New fields (6)
  • active Boolean
    default=True
  • sequence Integer
  • type Selection
    default='301' required=True string='Redirection Type' args: [('301', 'Moved permanently (301)'), ('302', 'Moved temporarily (302)')]
  • url_from Char
    required=True args: 'Redirect From'
  • url_to Char
    required=True args: 'Redirect To'
  • website_id Many2one → website
    ondelete='cascade' args: 'website', 'Website'
Public methods (0)

No public methods.

New fields (5)
  • is_seo_optimized Boolean
    compute='_compute_is_seo_optimized' args: 'SEO optimized'
  • website_meta_description Text
    translate=True args: 'Website meta description'
  • website_meta_keywords Char
    translate=True args: 'Website meta keywords'
  • website_meta_og_img Char
    args: 'Website opengraph image'
  • website_meta_title Char
    translate=True args: 'Website meta title'
Public methods (1)
  • get_website_meta(self)
    This method will return final meta information. It will replace default values with user's custom value (if user modified it from the seo popup of fronted) This method is not meant for overridden. To customize meta values override `_default_website_meta` method instead of this method. This method only replaces user custom values in defaults.
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/11.0/website
VERSION
VERSION 1.0
CATEGORY
CATEGORYWebsite
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Christophe Matthieu, Martin Trigaux, Olivier Dony, Thibault Delavallée, Denis Ledoux, Christophe Simonis, Xavier Morel, Goffin Simon, 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, Olivier Colson, Yannick Tivisse, Alexandre Kühn, qsm-odoo, Odoo Online, Romain Derie, Denis Vermylen (dve), fwi-odoo, rde, len-odoo, Jairo Llopis, Adrian Torres, Paul Morelle, Sébastien Theys, Sanjay Jamod, Akim Juillerat
WEBSITE
WEBSITEhttps://www.odoo.com/page/website-builder
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:53:42
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - web
    - base
    - web_editor
    - web_planner
    - http_routing
    - portal
    - mail
    - base_setup
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (91)
XML IDNameModelTypeStatus
403 403 ir.ui.view qweb New
404 404 ir.ui.view qweb New
500 500 ir.ui.view qweb New
aboutus About us t New
assets_backend Website Backend Assets (used in backend interface) ir.ui.view qweb Inherits web.assets_backend
assets_frontend Website Assets ir.ui.view qweb Inherits web.assets_frontend
company_description Company Description ir.ui.view qweb New
contactus Contact Us t New
default_css default_css ir.ui.view qweb New
default_csv default_csv ir.ui.view qweb New
default_js default_js ir.ui.view qweb New
default_less default_less ir.ui.view qweb New
default_page default_page ir.ui.view qweb New
default_xml default_xml ir.ui.view qweb New
edit_website_pages Website Pages Management ir.ui.view qweb New
external_snippets external_snippets ir.ui.view qweb Inherits website.snippets
footer_custom Footer ir.ui.view qweb Inherits website.layout
footer_default Automatic Footer ir.ui.view qweb Inherits website.footer_custom
homepage Home t New
http_error http_error ir.ui.view qweb New
http_error_debug http_error_debug ir.ui.view qweb New
index_management index_management ir.ui.view qweb New
kanban kanban ir.ui.view qweb New
kanban_contain kanban_contain ir.ui.view qweb New
language_selector language_selector ir.ui.view qweb New
layout Main layout ir.ui.view qweb Inherits portal.frontend_layout
layout_footer_copyright Footer Copyright ir.ui.view qweb Inherits website.layout
layout_logo_show Show Logo ir.ui.view qweb Inherits website.layout
login_layout Website Login Layout ir.ui.view qweb Inherits web.login_layout
menu_search website.menu.search website.menu search New
menu_tree website.menu.tree website.menu tree New
page_404 page_404 ir.ui.view qweb New
pager Pager ir.ui.view qweb Inherits portal.pager
portal.portal_show_sign_in New
publish_management publish_management ir.ui.view qweb New
publish_short publish_short ir.ui.view qweb New
qunit_suite qunit_suite ir.ui.view qweb Inherits web.qunit_suite
res_config_settings_view_form res.config.settings.view.form.inherit.website res.config.settings xpath Inherits base.res_config_settings_view_form
robots robots ir.ui.view qweb New
s_banner Slider ir.ui.view qweb New
s_big_message Big Message ir.ui.view qweb New
s_big_picture Big Picture ir.ui.view qweb New
s_button Call to Action ir.ui.view qweb New
s_company_team Company Team ir.ui.view qweb New
s_comparisons Comparisons ir.ui.view qweb New
s_cover Cover ir.ui.view qweb New
s_faq_collapse FAQ ir.ui.view qweb New
s_feature_grid Feature Grid ir.ui.view qweb New
s_features Features ir.ui.view qweb New
s_image_floating Image Floating ir.ui.view qweb New
s_image_gallery Image Gallery ir.ui.view qweb New
s_image_text Image-Text ir.ui.view qweb New
s_panel Panel ir.ui.view qweb New
s_parallax Parallax ir.ui.view qweb New
s_parallax_slider Parallax Slider ir.ui.view qweb New
s_references References ir.ui.view qweb New
s_share Share ir.ui.view qweb New
s_text_block Text Block ir.ui.view qweb New
s_text_image Text-Image ir.ui.view qweb New
s_three_columns Three Columns ir.ui.view qweb New
s_title Title ir.ui.view qweb New
s_well Well ir.ui.view qweb New
show_website_info Show Odoo Information ir.ui.view qweb Inherits website.website_info
sitemap_index_xml sitemap_index_xml ir.ui.view qweb New
sitemap_locs sitemap_locs ir.ui.view qweb New
sitemap_xml sitemap_xml ir.ui.view qweb New
snippet_options snippet_options ir.ui.view qweb New
snippets snippets ir.ui.view qweb Inherits web_editor.snippets
submenu Submenu ir.ui.view qweb New
template_partner_comment Partner Comment (Website Server Action Demo) ir.ui.view qweb New
template_partner_post Partner Post and Thanks (Website Server Action Demo) ir.ui.view qweb New
user_navbar user_navbar ir.ui.view qweb Inherits website.layout
view_base_language_install view_base_language_install.inherit base.language.install group Inherits base.view_base_language_install
view_company_form_inherit_website res.company.form.inherit.website res.company xpath Inherits base.view_company_form
view_server_action_form_website ir.actions.server.form.website ir.actions.server data Inherits base.view_server_action_form
view_server_action_search_website ir.actions.server.search.website ir.actions.server xpath Inherits base.view_server_action_search
view_server_action_tree_website ir.actions.server.tree.website ir.actions.server xpath Inherits base.view_server_action_tree
view_view_form_extend ir.ui.view field Inherits base.view_view_form
view_website_form website.form website form New
view_website_tree website.tree website tree New
website.assets_editor Website Editor Assets (used in website editor) ir.ui.view qweb New
website.theme_customize Theme Modal for Customization ir.ui.view qweb New
website2_contactus Contact Us t New
website2_homepage Home t New
website_info Odoo Information ir.ui.view qweb New
website_pages_form_view website.page.form website.page form New
website_pages_tree_view website.page.list website.page tree New
website_planner website_planner ir.ui.view qweb New
website_redirect_form_view website.redirect.form website.redirect form New
website_redirect_tree_view website.redirect.list website.redirect tree New
website_search_box Website Searchbox ir.ui.view qweb New
Models touched (17)

New fields (1)
  • website_ids Many2many → website
    string='Websites to translate' args: 'website'
Public methods (2)
  • default_get(self, fields)
    @api.model
  • lang_install(self)
    @api.multi

New fields (4)
  • website_path Char
    args: 'Website Path'
  • website_published Boolean
    copy=False help='A code server action can be executed from the website, using a dedicated controller. The address is <base>/website/action/<website_path>. Set this field as True to allow users to run this action. If it is set to False the action cannot be run through the website.' args: 'Available on the Website'
  • website_url Char
    compute='_get_website_url' help='The full URL to access the server action through the website.' args: 'Website Url'
  • xml_id Char
    compute='_compute_xml_id' help='ID of the action if defined in a XML file' args: 'External ID'
Public methods (1)
  • run_action_code_multi(self, action, eval_context=None)
    @api.model
    Override to allow returning response the same way action is already returned by the basic server action behavior. Note that response has priority over action, avoid using both.

New fields (1)
  • website_url Char
    deprecated=True related='local_url' string='Attachment URL'
Public methods (1)
  • get_serving_groups(self)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • binary_content(cls, xmlid=None, model='ir.attachment', id=None, field='datas', unique=False, filename=None, filename_field='datas_fname', download=False, mimetype=None, default_mimetype='application/octet-stream', access_token=None, env=None)
    @classmethod

New fields (0)

No new fields.

Public methods (1)
  • unlink(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • customize_show Boolean
    default=False args: 'Show As Optional Inherit'
  • page_ids One2many → website.page
    compute='_compute_page_ids' store=False args: 'website.page'
  • website_id Many2one → website
    ondelete='cascade' string='Website' args: 'website'
Public methods (6)
  • filter_duplicate(self)
    Filter current recordset only keeping the most suitable view per distinct key
  • get_default_lang_code(self)
    @api.model
  • get_view_id(self, xml_id)
    @api.model@tools.ormcache_context('self._uid', 'xml_id', keys=('website_id'))
  • redirect_to_page_manager(self)
    @api.multi
  • render(self, values=None, engine='ir.qweb')
    @api.multi
    Render the template. If website is enabled on request, then extend rendering context with website values.
  • unlink(self)
    @api.multi

New fields (6)
  • social_facebook Char
    args: 'Facebook Account'
  • social_github Char
    args: 'GitHub Account'
  • social_googleplus Char
    args: 'Google+ Account'
  • social_linkedin Char
    args: 'LinkedIn Account'
  • social_twitter Char
    args: 'Twitter Account'
  • social_youtube Char
    args: 'Youtube Account'
Public methods (2)
  • google_map_img(self, zoom=8, width=298, height=298)
    @api.multi
  • google_map_link(self, zoom=8)
    @api.multi

New fields (19)
  • auth_signup_uninvited Selection
    string='Customer Account' args: [('b2b', 'On invitation (B2B)'), ('b2c', 'Free sign up (B2C)')]
  • cdn_activated Boolean
    related='website_id.cdn_activated' args: 'Use a Content Delivery Network (CDN)'
  • cdn_filters Text
    related='website_id.cdn_filters'
  • cdn_url Char
    related='website_id.cdn_url'
  • default_lang_code Char
    related='website_id.default_lang_code' args: 'Default language code'
  • default_lang_id Many2one
    related='website_id.default_lang_id' relation='res.lang' required=True string='Default language'
  • favicon Binary
    related='website_id.favicon' args: 'Favicon'
  • google_analytics_key Char
    related='website_id.google_analytics_key' args: 'Google Analytics Key'
  • google_management_client_id Char
    related='website_id.google_management_client_id' args: 'Google Client ID'
  • google_management_client_secret Char
    related='website_id.google_management_client_secret' args: 'Google Client Secret'
  • google_maps_api_key Char
    string='Google Maps API Key'
  • has_google_analytics Boolean
    args: 'Google Analytics'
  • has_google_analytics_dashboard Boolean
    args: 'Google Analytics in Dashboard'
  • has_google_maps Boolean
    args: 'Google Maps'
  • language_count Integer
    compute='_compute_language_count' readonly=True string='Number of languages'
  • language_ids Many2many
    related='website_id.language_ids' relation='res.lang'
  • module_website_version Boolean
    args: 'A/B Testing'
  • website_id Many2one → website
    default=_default_website required=True string='website' args: 'website'
  • website_name Char
    related='website_id.name' args: 'Website Name'
Public methods (5)
  • get_values(self)
    @api.model
  • onchange_has_google_analytics(self)
    @api.onchange('has_google_analytics')
  • onchange_has_google_analytics_dashboard(self)
    @api.onchange('has_google_analytics_dashboard')
  • open_template_user(self)
    @api.multi
  • set_values(self)

New fields (0)

No new fields.

Public methods (2)
  • google_map_img(self, zoom=8, width=298, height=298)
    @api.multi
  • google_map_link(self, zoom=10)
    @api.multi

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (24)
  • auto_redirect_lang Boolean
    default=True help="Should users be redirected to their browser's language" args: 'Autoredirect Language'
  • cdn_activated Boolean
    args: 'Activate CDN for assets'
  • cdn_filters Text
    default=<expr> help='URL matching those filters will be rewritten using the CDN Base URL' args: 'CDN Filters'
  • cdn_url Char
    default='' args: 'CDN Base URL'
  • company_id Many2one → res.company
    default=<expr> string='Company' args: 'res.company'
  • default_lang_code Char
    related='default_lang_id.code' store=True string='Default language code'
  • default_lang_id Many2one → res.lang
    default=_default_language required=True string='Default Language' args: 'res.lang'
  • domain Char
    args: 'Website Domain'
  • favicon Binary
    help='This field holds the image used to display a favicon on the website.' string='Website Favicon'
  • google_analytics_key Char
    args: 'Google Analytics Key'
  • google_management_client_id Char
    args: 'Google Client ID'
  • google_management_client_secret Char
    args: 'Google Client Secret'
  • homepage_id Many2one → website.page
    string='Homepage' args: 'website.page'
  • language_ids Many2many → res.lang
    default=_active_languages args: 'res.lang', 'website_lang_rel', 'website_id', 'lang_id', 'Languages'
  • menu_id Many2one → website.menu
    compute='_compute_menu' string='Main Menu' args: 'website.menu'
  • name Char
    args: 'Website Name'
  • partner_id Many2one
    related='user_id.partner_id' relation='res.partner' string='Public Partner'
  • social_facebook Char
    related='company_id.social_facebook'
  • social_github Char
    related='company_id.social_github'
  • social_googleplus Char
    related='company_id.social_googleplus'
  • social_linkedin Char
    related='company_id.social_linkedin'
  • social_twitter Char
    related='company_id.social_twitter'
  • social_youtube Char
    related='company_id.social_youtube'
  • user_id Many2one → res.users
    default=<expr> required=True string='Public User' args: 'res.users'
Public methods (25)
  • action_dashboard_redirect(self)
    @api.model
  • enumerate_pages(self, query_string=None, force=False)
    @api.multi
    Available pages in the website/CMS. This is mostly used for links generation and can be overridden by modules setting up new HTML controllers for dynamic pages (e.g. blog). By default, returns template views marked as pages. :param str query_string: a (user-provided) string, fetches pages matching the string :returns: a list of mappings with two keys: ``name`` is the displayable name of the resource (page), ``url`` is the absolute URL of the same. :rtype: list({name: str, url: str})
  • get_alternate_languages(self, req=None)
    @api.multi
  • get_cdn_url(self, uri)
  • get_current_website(self)
    @api.model
  • get_languages(self)
    @api.multi
  • get_template(self, template)
    @api.model
  • get_unique_key(self, string, template_module=False)
    Given a string, return an unique key including module prefix. It will be suffixed by a counter if it already exists to garantee uniqueness. :param string : the key to be checked for uniqueness, you can pass it with 'website.' or not :param template_module : the module to be prefixed on the key, if not set, we will use website
  • get_unique_path(self, page_url)
    Given an url, return that url suffixed by counter if it already exists :param page_url : the url to be checked for uniqueness
  • get_website_pages(self, domain=[], order='name', limit=None)
    @api.multi
  • guess_mimetype(self)
    @api.model
  • image_url(self, record, field, size=None)
    @api.model
    Returns a local url that points to the image field of a given browse record.
  • is_public_user(self)
    @api.model
  • is_publisher(self)
    @api.model
  • is_user(self)
    @api.model
  • key_to_view_id(self, view_id)
  • new_page(self, name=False, add_menu=False, template='website.default_page', ispage=True, namespace=None)
    @api.model
    Create a new website page, and assign it a xmlid based on the given one :param name : the name of the page :param template : potential xml_id of the page to create :param namespace : module part of the xml_id if none, the template module name is used
  • noop(self, *args, **kwargs)
  • page_exists(self, name, module='website')
    @api.model
  • page_search_dependencies(self, page_id=False)
    @api.model
    Search dependencies just for information. It will not catch 100% of dependencies and False positive is more than possible Each module could add dependences in this dict :returns a dictionnary where key is the 'categorie' of object related to the given view, and the value is the list of text and link to the resource using given page
  • page_search_key_dependencies(self, page_id=False)
    @api.model
    Search dependencies just for information. It will not catch 100% of dependencies and False positive is more than possible Each module could add dependences in this dict :returns a dictionnary where key is the 'categorie' of object related to the given view, and the value is the list of text and link to the resource using given page
  • pager(self, url, total, page=1, step=30, scope=5, url_args=None)
    @api.model
  • rule_is_enumerable(self, rule)
    Checks that it is possible to generate sensible GET queries for a given rule (if the endpoint matches its own requirements) :type rule: werkzeug.routing.Rule :rtype: bool
  • search_pages(self, needle=None, limit=None)
    @api.multi
  • write(self, values)
    @api.multi

New fields (11)
  • child_id One2many → website.menu
    string='Child Menus' args: 'website.menu', 'parent_id'
  • is_visible Boolean
    compute='_compute_visible' string='Is Visible'
  • name Char
    required=True translate=True args: 'Menu'
  • new_window Boolean
    args: 'New Window'
  • page_id Many2one → website.page
    args: 'website.page', 'Related Page'
  • parent_id Many2one → website.menu
    index=True ondelete='cascade' args: 'website.menu', 'Parent Menu'
  • parent_left Integer
    index=True args: 'Parent Left'
  • parent_right Integer
    index=True args: 'Parent Rigth'
  • sequence Integer
    default=_default_sequence
  • url Char
    default='' args: 'Url'
  • website_id Many2one → website
    args: 'website', 'Website'
Public methods (3)
  • clean_url(self)
    @api.model
  • get_tree(self, website_id, menu_id=None)
    @api.model
  • save(self, website_id, data)
    @api.model

New fields (8)
  • date_publish Datetime
    args: 'Publishing Date'
  • is_homepage Boolean
    compute='_compute_homepage' inverse='_set_homepage' string='Homepage'
  • is_visible Boolean
    compute='_compute_visible' string='Is Visible'
  • menu_ids One2many → website.menu
    args: 'website.menu', 'page_id', 'Related Menus'
  • url Char
    args: 'Page URL'
  • view_id Many2one → ir.ui.view
    ondelete='cascade' required=True string='View' args: 'ir.ui.view'
  • website_ids Many2many → website
    string='Websites' args: 'website'
  • website_indexed Boolean
    default=True args: 'Page Indexed'
Public methods (8)
  • clone_page(self, page_id, clone_menu=True)
    @api.model
    Clone a page, given its identifier :param page_id : website.page identifier
  • copy(self, default=None)
    @api.multi
  • delete_page(self, page_id)
    @api.model
    Delete a page, given its identifier :param page_id : website.page identifier
  • get_page_info(self, id, website_id)
    @api.model
  • get_view_identifier(self)
    @api.multi
    Get identifier of this page view that may be used to render it
  • save_page_info(self, website_id, data)
    @api.model
  • unlink(self)
    @api.multi
    When a website_page is deleted, the ORM does not delete its ir_ui_view. So we got to delete it ourself, but only if the ir_ui_view is not used by another website_page.
  • write(self, vals)
    @api.multi

New fields (2)
  • website_published Boolean
    copy=False args: 'Visible in Website'
  • website_url Char
    compute='_compute_website_url' help='The full URL to access the document through the website.' args: 'Website URL'
Public methods (2)
  • open_website_url(self)
  • website_publish_button(self)
    @api.multi

New fields (6)
  • active Boolean
    default=True
  • sequence Integer
    default=0
  • type Selection
    default='301' string='Redirection Type' args: [('301', 'Moved permanently'), ('302', 'Moved temporarily')]
  • url_from Char
    args: 'Redirect From'
  • url_to Char
    args: 'Redirect To'
  • website_id Many2one → website
    ondelete='cascade' args: 'website', 'Website'
Public methods (0)

No public methods.

New fields (3)
  • website_meta_description Text
    translate=True args: 'Website meta description'
  • website_meta_keywords Char
    translate=True args: 'Website meta keywords'
  • website_meta_title Char
    translate=True args: 'Website meta title'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/10.0/website
VERSION
VERSION 1.0
CATEGORY
CATEGORYWebsite
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Christophe Matthieu, Martin Trigaux, Fabien Pinckaers, Olivier Dony, Thibault Delavallée, Denis Ledoux, Christophe Simonis, Goffin Simon, Simon Lejeune, Nicolas Martinelli, Nicolas Lempereur, Jérome Maes, Julien Legros, xmo-odoo, qdp-odoo, Géry Debongnie, Aaron Bohy, Jeremy Kersten, GitHub, Lucas Perais (lpe), Damien Bouvy, Yannick Tivisse, qsm-odoo, Martin Geubelle, Pierre Masereel, Romain Derie, Denis Vermylen (dve)
WEBSITE
WEBSITEhttps://www.odoo.com/page/website-builder
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:50:47
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - web
    - base
    - web_editor
    - web_planner
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Odoo Website CMS
===================

        

Code Analysis

Views touched (75)
XML IDNameModelTypeStatus
403 403 ir.ui.view qweb New
404 404 ir.ui.view qweb New
500 500 ir.ui.view qweb New
aboutus About us ir.ui.view qweb New
assets_backend Website Backend Assets ir.ui.view qweb Inherits web.assets_backend
assets_frontend Website Frontend Assets ir.ui.view qweb Inherits web.assets_frontend
company_description Company Description ir.ui.view qweb New
contactus Contact us ir.ui.view qweb New
default_page default_page ir.ui.view qweb New
footer_custom Footer ir.ui.view qweb Inherits website.layout
footer_default Automatic Footer ir.ui.view qweb Inherits website.footer_custom
homepage Homepage ir.ui.view qweb New
http_error http_error ir.ui.view qweb New
http_error_debug http_error_debug ir.ui.view qweb New
kanban kanban ir.ui.view qweb New
kanban_contain kanban_contain ir.ui.view qweb New
language_selector language_selector ir.ui.view qweb New
layout Main layout ir.ui.view qweb New
layout_footer_copyright Footer Copyright ir.ui.view qweb Inherits website.layout
layout_logo_show Show Logo ir.ui.view qweb Inherits website.layout
login_layout Website Login Layout ir.ui.view qweb Inherits web.login_layout
menu_search website.menu.search website.menu search New
menu_tree website.menu.tree website.menu tree New
page_404 page_404 ir.ui.view qweb New
pager Pager ir.ui.view qweb New
publish_management publish_management ir.ui.view qweb New
publish_short publish_short ir.ui.view qweb New
robots robots ir.ui.view qweb New
s_banner Banner ir.ui.view qweb New
s_big_message Big message ir.ui.view qweb New
s_big_picture Big Picture ir.ui.view qweb New
s_button Call to Action ir.ui.view qweb New
s_comparisons Comparisons ir.ui.view qweb New
s_cover Cover ir.ui.view qweb New
s_faq_collapse Accordion ir.ui.view qweb New
s_feature_grid Feature Grid ir.ui.view qweb New
s_features Features ir.ui.view qweb New
s_image_floating Image Floating ir.ui.view qweb New
s_image_gallery Image Gallery ir.ui.view qweb New
s_image_text Image-Text ir.ui.view qweb New
s_panel Panel ir.ui.view qweb New
s_parallax Parallax ir.ui.view qweb New
s_parallax_slider Parallax Slider ir.ui.view qweb New
s_references References ir.ui.view qweb New
s_share Share ir.ui.view qweb New
s_text_block Text Block ir.ui.view qweb New
s_text_image Text-Image ir.ui.view qweb New
s_three_columns Three Columns ir.ui.view qweb New
s_title Title ir.ui.view qweb New
s_well Well ir.ui.view qweb New
show_sign_in Show Sign In ir.ui.view qweb Inherits website.layout
show_website_info Show Odoo Information ir.ui.view qweb Inherits website.website_info
sitemap_index_xml sitemap_index_xml ir.ui.view qweb New
sitemap_locs sitemap_locs ir.ui.view qweb New
sitemap_xml sitemap_xml ir.ui.view qweb New
snippet_options snippet_options ir.ui.view qweb New
snippets snippets ir.ui.view qweb Inherits web_editor.snippets
submenu Submenu ir.ui.view qweb New
template_partner_comment Partner Comment (Website Server Action Demo) ir.ui.view qweb New
template_partner_post Partner Post and Thanks (Website Server Action Demo) ir.ui.view qweb New
user_navbar user_navbar ir.ui.view qweb Inherits website.layout
view_base_language_install view_base_language_install.inherit base.language.install group Inherits base.view_base_language_install
view_server_action_form_website ir.actions.server.form.website ir.actions.server data Inherits base.view_server_action_form
view_server_action_search_website ir.actions.server.search.website ir.actions.server xpath Inherits base.view_server_action_search
view_server_action_tree_website ir.actions.server.tree.website ir.actions.server xpath Inherits base.view_server_action_tree
view_view_form_extend ir.ui.view field Inherits base.view_view_form
view_website_config_settings Website settings website.config.settings form New
view_website_form website.form website form New
view_website_tree website.tree website tree New
website.assets_editor Website Editor Assets ir.ui.view qweb New
website.theme_customize Theme Modal for Customization ir.ui.view qweb New
website2_homepage Homepage t New
website_info Odoo Information ir.ui.view qweb New
website_planner website_planner ir.ui.view qweb New
website_search_box Website Searchbox ir.ui.view qweb New
Models touched (12)

New fields (1)
  • website_ids Many2many → website
    string='Websites to translate' args: 'website'
Public methods (2)
  • default_get(self, fields)
    @api.model
  • lang_install(self)
    @api.multi

New fields (4)
  • website_path Char
    args: 'Website Path'
  • website_published Boolean
    copy=False help='A code server action can be executed from the website, using a dedicated controller. The address is <base>/website/action/<website_path>. Set this field as True to allow users to run this action. If it is set to False the action cannot be run through the website.' args: 'Available on the Website'
  • website_url Char
    compute='_get_website_url' help='The full URL to access the server action through the website.' args: 'Website Url'
  • xml_id Char
    compute='_compute_xml_id' help='ID of the action if defined in a XML file' args: 'External ID'
Public methods (1)
  • run_action_code_multi(self, action, eval_context=None)
    @api.model
    Override to allow returning response the same way action is already returned by the basic server action behavior. Note that response has priority over action, avoid using both.

New fields (1)
  • website_url Char
    deprecated=True related='local_url' string='Attachment URL'
Public methods (1)
  • get_serving_groups(self)
    @api.model

New fields (3)
  • customize_show Boolean
    default=False args: 'Show As Optional Inherit'
  • page Boolean
    default=False args: 'Whether this view is a web page template (complete)'
  • website_id Many2one → website
    ondelete='cascade' string='Website' args: 'website'
Public methods (5)
  • filter_duplicate(self)
    Filter current recordset only keeping the most suitable view per distinct key
  • get_default_lang_code(self)
    @api.model
  • get_view_id(self, xml_id)
    @api.model@tools.ormcache_context('self._uid', 'xml_id', keys=('website_id'))
  • render(self, values=None, engine='ir.qweb')
    @api.multi
    Render the template. If website is enabled on request, then extend rendering context with website values.
  • unlink(self)
    @api.multi

New fields (0)

No new fields.

Public methods (2)
  • google_map_img(self, zoom=8, width=298, height=298)
    @api.multi
  • google_map_link(self, zoom=8)
    @api.multi

New fields (0)

No new fields.

Public methods (2)
  • google_map_img(self, zoom=8, width=298, height=298)
    @api.multi
  • google_map_link(self, zoom=10)
    @api.multi

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (21)
  • cdn_activated Boolean
    args: 'Activate CDN for assets'
  • cdn_filters Text
    default=<expr> help='URL matching those filters will be rewritten using the CDN Base URL' args: 'CDN Filters'
  • cdn_url Char
    default='' args: 'CDN Base URL'
  • company_id Many2one → res.company
    default=<expr> string='Company' args: 'res.company'
  • compress_html Boolean
    args: 'Compress HTML'
  • default_lang_code Char
    related='default_lang_id.code' store=True string='Default language code'
  • default_lang_id Many2one → res.lang
    default=_default_language required=True string='Default Language' args: 'res.lang'
  • domain Char
    args: 'Website Domain'
  • favicon Binary
    help='This field holds the image used to display a favicon on the website.' string='Website Favicon'
  • google_analytics_key Char
    args: 'Google Analytics Key'
  • language_ids Many2many → res.lang
    default=_active_languages args: 'res.lang', 'website_lang_rel', 'website_id', 'lang_id', 'Languages'
  • menu_id Many2one → website.menu
    compute='_compute_menu' string='Main Menu' args: 'website.menu'
  • name Char
    args: 'Website Name'
  • partner_id Many2one
    related='user_id.partner_id' relation='res.partner' string='Public Partner'
  • social_facebook Char
    args: 'Facebook Account'
  • social_github Char
    args: 'GitHub Account'
  • social_googleplus Char
    args: 'Google+ Account'
  • social_linkedin Char
    args: 'LinkedIn Account'
  • social_twitter Char
    args: 'Twitter Account'
  • social_youtube Char
    args: 'Youtube Account'
  • user_id Many2one → res.users
    default=<expr> required=True string='Public User' args: 'res.users'
Public methods (20)
  • delete_page(self, view_id)
    @api.model
    Delete a page, given its identifier :param view_id : ir.ui.view identifier
  • enumerate_pages(self, query_string=None)
    @api.multi
    Available pages in the website/CMS. This is mostly used for links generation and can be overridden by modules setting up new HTML controllers for dynamic pages (e.g. blog). By default, returns template views marked as pages. :param str query_string: a (user-provided) string, fetches pages matching the string :returns: a list of mappings with two keys: ``name`` is the displayable name of the resource (page), ``url`` is the absolute URL of the same. :rtype: list({name: str, url: str})
  • get_alternate_languages(self, req=None)
    @api.multi
  • get_cdn_url(self, uri)
    @api.model
  • get_current_website(self)
    @api.model
  • get_languages(self)
    @api.multi
  • get_template(self, template)
    @api.model
  • image_url(self, record, field, size=None)
    @api.model
    Returns a local url that points to the image field of a given browse record.
  • is_publisher(self)
    @api.model
  • is_user(self)
    @api.model
  • key_to_view_id(self, view_id)
  • new_page(self, name, template='website.default_page', ispage=True)
    @api.model
    Create a new website page, and assign it a xmlid based on the given one :param name : the name of the page :param template : potential xml_id of the page to create
  • noop(self, *args, **kwargs)
  • page_exists(self, name, module='website')
    @api.model
  • page_search_dependencies(self, view_id=False)
    @api.model
    Search dependencies just for information. It will not catch 100% of dependencies and False positive is more than possible Each module could add dependences in this dict :returns a dictionnary where key is the 'categorie' of object related to the given view, and the value is the list of text and link to the resource using given page
  • pager(self, url, total, page=1, step=30, scope=5, url_args=None)
    @api.model
    Generate a dict with required value to render `website.pager` template. This method compute url, page range to display, ... in the pager. :param url : base url of the page link :param total : number total of item to be splitted into pages :param page : current page :param step : item per page :param scope : number of page to display on pager :param url_args : additionnal parameters to add as query params to page url :type url_args : dict :returns dict
  • rename_page(self, view_id, new_name)
    @api.model
    Change the name of the given page :param view_id : id of the view to rename :param new_name : name to use
  • rule_is_enumerable(self, rule)
    Checks that it is possible to generate sensible GET queries for a given rule (if the endpoint matches its own requirements) :type rule: werkzeug.routing.Rule :rtype: bool
  • search_pages(self, needle=None, limit=None)
    @api.multi
  • write(self, values)
    @api.multi

New fields (20)
  • cdn_activated Boolean
    related='website_id.cdn_activated' args: 'Use a Content Delivery Network (CDN)'
  • cdn_filters Text
    related='website_id.cdn_filters'
  • cdn_url Char
    related='website_id.cdn_url'
  • compress_html Boolean
    related='website_id.compress_html' args: 'Compress rendered HTML'
  • default_lang_code Char
    related='website_id.default_lang_code' args: 'Default language code'
  • default_lang_id Many2one
    related='website_id.default_lang_id' relation='res.lang' required=True
  • favicon Binary
    related='website_id.favicon' args: 'Favicon'
  • google_analytics_key Char
    related='website_id.google_analytics_key' args: 'Google Analytics Key'
  • google_maps_api_key Char
    string='Google Maps API Key'
  • language_ids Many2many
    related='website_id.language_ids' relation='res.lang'
  • module_website_form_editor Selection
    args: [(0, 'Use standard forms'), (1, 'Create and customize forms to generate emails, leads, issues and extra information in the checkout process (new snippet available)')], 'Form Builder'
  • module_website_version Selection
    args: [(0, 'No version management and A/B testing (easy)'), (1, 'Allow multiple versions of the same page (advanced)')], 'A/B Testing'
  • social_facebook Char
    related='website_id.social_facebook'
  • social_github Char
    related='website_id.social_github'
  • social_googleplus Char
    related='website_id.social_googleplus'
  • social_linkedin Char
    related='website_id.social_linkedin'
  • social_twitter Char
    related='website_id.social_twitter'
  • social_youtube Char
    related='website_id.social_youtube'
  • website_id Many2one → website
    default=_default_website required=True string='website' args: 'website'
  • website_name Char
    related='website_id.name' args: 'Website Name'
Public methods (2)
  • get_default_google_maps_api_key(self, fields)
  • set_google_maps_api_key(self)

New fields (9)
  • child_id One2many → website.menu
    string='Child Menus' args: 'website.menu', 'parent_id'
  • name Char
    required=True translate=True args: 'Menu'
  • new_window Boolean
    args: 'New Window'
  • parent_id Many2one → website.menu
    index=True ondelete='cascade' args: 'website.menu', 'Parent Menu'
  • parent_left Integer
    index=True args: 'Parent Left'
  • parent_right Integer
    index=True args: 'Parent Rigth'
  • sequence Integer
    default=_default_sequence
  • url Char
    default='' args: 'Url'
  • website_id Many2one → website
    args: 'website', 'Website'
Public methods (2)
  • get_tree(self, website_id, menu_id=None)
    @api.model
  • save(self, website_id, data)
    @api.model

New fields (2)
  • website_published Boolean
    copy=False args: 'Visible in Website'
  • website_url Char
    compute='_compute_website_url' help='The full URL to access the document through the website.' args: 'Website URL'
Public methods (2)
  • open_website_url(self)
  • website_publish_button(self)
    @api.multi

New fields (3)
  • website_meta_description Text
    translate=True args: 'Website meta description'
  • website_meta_keywords Char
    translate=True args: 'Website meta keywords'
  • website_meta_title Char
    translate=True args: 'Website meta title'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/9.0/website
VERSION
VERSION 1.0
CATEGORY
CATEGORYWebsite
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
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, Goffin Simon, Simon Lejeune, Nicolas Martinelli, Nicolas Lempereur, Jérome Maes, Julien Legros, xmo-odoo, Richard Mathot, Géry Debongnie, Aaron Bohy, Jeremy Kersten, Lucas Perais (lpe), Damien Bouvy, Julien De Coster, Yannick Tivisse, qsm-odoo, Martin Geubelle, Odoo Online, Romain Derie, Wisniewski, mge-odoo
WEBSITE
WEBSITEhttps://www.odoo.com/page/website-builder
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:48:30
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - web
    - base
    - web_editor
    - web_planner
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
OpenERP Website CMS
===================

        

Code Analysis

Views touched (82)
XML IDNameModelTypeStatus
403 403 ir.ui.view qweb New
404 404 ir.ui.view qweb New
500 500 ir.ui.view qweb New
aboutus About us ir.ui.view qweb New
assets_backend website assets for backend ir.ui.view qweb Inherits web.assets_backend
assets_common Website assets ir.ui.view qweb Inherits web.assets_common
assets_editor Editor assets ir.ui.view qweb New
assets_frontend Website assets ir.ui.view qweb New
company_description Company Description ir.ui.view qweb New
contactus Contact us ir.ui.view qweb New
default_page default_page ir.ui.view qweb New
footer_custom Footer ir.ui.view qweb Inherits website.layout
footer_default Automatic Footer ir.ui.view qweb Inherits website.footer_custom
homepage Homepage ir.ui.view qweb New
http_error http_error ir.ui.view qweb New
http_error_debug http_error_debug ir.ui.view qweb New
info Odoo Information ir.ui.view qweb New
kanban kanban ir.ui.view qweb New
kanban_contain kanban_contain ir.ui.view qweb New
language_selector language_selector ir.ui.view qweb New
layout Main layout ir.ui.view qweb New
layout_editor Editor ir.ui.view qweb Inherits website.layout
layout_footer_copyright Footer Copyright ir.ui.view qweb Inherits website.layout
layout_logo_show Show Logo ir.ui.view qweb Inherits website.layout
login_layout Website Login Layout ir.ui.view qweb Inherits web.login_layout
menu_search website.menu.search website.menu search New
menu_tree website.menu.tree website.menu tree New
page_404 page_404 ir.ui.view qweb New
pager Pager ir.ui.view qweb New
pdf_js_lib PDF JS Library ir.ui.view qweb New
publish_management publish_management ir.ui.view qweb New
publish_short publish_short ir.ui.view qweb New
robots robots ir.ui.view qweb New
s_banner Banner ir.ui.view qweb New
s_big_message Big message ir.ui.view qweb New
s_big_picture Big Picture ir.ui.view qweb New
s_button Button ir.ui.view qweb New
s_comparisons Comparisons ir.ui.view qweb New
s_faq FAQ ir.ui.view qweb New
s_faq_collapse FAQ Roller ir.ui.view qweb New
s_feature_grid Feature Grid ir.ui.view qweb New
s_features Features ir.ui.view qweb New
s_image_floating Image Floating ir.ui.view qweb New
s_image_gallery Image Gallery ir.ui.view qweb New
s_image_text Image-Text ir.ui.view qweb New
s_panel Panel ir.ui.view qweb New
s_parallax Parallax ir.ui.view qweb New
s_parallax_slider Parallax Slider ir.ui.view qweb New
s_quote Quote ir.ui.view qweb New
s_quotes_slider Quotes Slider ir.ui.view qweb New
s_references References ir.ui.view qweb New
s_separator Separator ir.ui.view qweb New
s_share Share ir.ui.view qweb New
s_text_block Text Block ir.ui.view qweb New
s_text_image Text-Image ir.ui.view qweb New
s_text_image_floating Image Float ir.ui.view qweb New
s_three_columns Three Columns ir.ui.view qweb New
s_title Title ir.ui.view qweb New
s_well Well ir.ui.view qweb New
show_sign_in Show Sign In ir.ui.view qweb Inherits website.layout
show_website_info Show Odoo Information ir.ui.view qweb Inherits website.info
sitemap_index_xml sitemap_index_xml ir.ui.view qweb New
sitemap_locs sitemap_locs ir.ui.view qweb New
sitemap_xml sitemap_xml ir.ui.view qweb New
snippet_options snippet_options ir.ui.view qweb New
snippets snippets ir.ui.view qweb New
submenu Submenu ir.ui.view qweb New
template_partner_comment Partner Comment (Website Server Action Demo) ir.ui.view qweb New
template_partner_post Partner Post and Thanks (Website Server Action Demo) ir.ui.view qweb New
user_navbar user_navbar ir.ui.view qweb Inherits website.layout
view_base_language_install view_base_language_install.inherit base.language.install group Inherits base.view_base_language_install
view_server_action_form_website ir.actions.server.form.website ir.actions.server data Inherits base.view_server_action_form
view_server_action_search_website ir.actions.server.search.website ir.actions.server xpath Inherits base.view_server_action_search
view_server_action_tree_website ir.actions.server.tree.website ir.actions.server xpath Inherits base.view_server_action_tree
view_view_form_extend ir.ui.view field Inherits base.view_view_form
view_website_config_settings Website settings website.config.settings form New
view_website_form website.form website form New
view_website_tree website.tree website tree New
website.theme_customize Theme Modal for Customization ir.ui.view qweb New
website2_homepage Homepage t New
website_planner website_planner ir.ui.view qweb New
website_search_box Website Searchbox ir.ui.view qweb New
Models touched (3)

New fields (0)

No new fields.

Public methods (2)
  • on_change_website_path(self, cr, uid, ids, website_path, xml_id, context=None)
  • run_action_code_multi(self, cr, uid, action, eval_context=None, context=None)
    Override to allow returning response the same way action is already returned by the basic server action behavior. Note that response has priority over action, avoid using both.

New fields (0)

No new fields.

Public methods (3)
  • render_attribute(self, element, name, value, qwebcontext)
  • render_tail(self, tail, element, qwebcontext)
  • render_text(self, text, element, qwebcontext)

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/8.0/website
VERSION
VERSION 1.0
CATEGORY
CATEGORYWebsite
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOpenERP SA
MAINTAINERS
MAINTAINERSOpenERP SA
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Christophe Matthieu, ajay javiya (OpenERP), Martin Trigaux, Fabien Pinckaers, Antony Lesuisse, Olivier Dony, Thibault Delavallée, Quentin (OpenERP), Denis Ledoux, Fabien Meghazi, Christophe Simonis, David Monjoie, Xavier Morel, Goffin Simon, Simon Lejeune, Frédéric van der Essen, Vidhin Mehta (OpenERP), RGA(OpenERP), Kersten Jeremy, Paramjit Singh Sahota, Nicolas Lempereur, Vidhin Mehta, Julien Legros, xmo-odoo, Richard Mathot, Géry Debongnie, jke-openerp, Aaron Bohy, bth-openerp, Richard Mathot (OpenERP), chm@openerp.com, ddm, ddm@openerp.com, Nicolas Wisniewski, openerp-sle, Jeremy Kersten, Kunal Chavda (Open ERP), --global, Pooja Zankhariya (OpenERP), Parth Gajjar (Open ERP), Franck Bret, Dharmraj Jhala (OpenERP), Jojo le bricolo, Max Mumford, FalcoBolger
WEBSITE
WEBSITEhttps://www.odoo.com/page/website-builder
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:45:38
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - web
    - base
    - share
    - mail
    - base_setup
    - web_kanban
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
OpenERP Website CMS
===================

        

Code Analysis

Views touched (61)
XML IDNameModelTypeStatus
403 403 ir.ui.view qweb New
404 404 ir.ui.view qweb New
500 500 ir.ui.view qweb New
aboutus About us ir.ui.view qweb New
assets_backend website assets for backend ir.ui.view qweb Inherits web.assets_backend
assets_editor Editor assets ir.ui.view qweb New
company_description Company Description ir.ui.view qweb New
contactus Contact us ir.ui.view qweb New
default_page default_page ir.ui.view qweb New
editor_head Editor ir.ui.view qweb Inherits website.layout
footer_custom Footer ir.ui.view qweb Inherits website.layout
footer_default Automatic Footer ir.ui.view qweb Inherits website.footer_custom
homepage Homepage ir.ui.view qweb New
http_error http_error ir.ui.view qweb New
http_error_debug http_error_debug ir.ui.view qweb New
info Odoo Information ir.ui.view qweb New
kanban kanban ir.ui.view qweb New
kanban_contain kanban_contain ir.ui.view qweb New
layout Main layout ir.ui.view qweb New
layout_footer_copyright Footer Copyright ir.ui.view qweb Inherits website.layout
layout_logo_show Show Logo ir.ui.view qweb Inherits website.layout
login_layout Website Login Layout ir.ui.view qweb Inherits web.login_layout
menu_tree website.menu.tree website.menu tree New
page_404 page_404 ir.ui.view qweb New
pager Pager ir.ui.view qweb New
publish_management publish_management ir.ui.view qweb New
publish_short publish_short ir.ui.view qweb New
robots robots ir.ui.view qweb New
show_sign_in Show Sign In ir.ui.view qweb Inherits website.layout
show_website_info Show Odoo Information ir.ui.view qweb Inherits website.info
sitemap_index_xml sitemap_index_xml ir.ui.view qweb New
sitemap_locs sitemap_locs ir.ui.view qweb New
sitemap_xml sitemap_xml ir.ui.view qweb New
snippet_options snippet_options ir.ui.view qweb New
snippets snippets ir.ui.view qweb New
template_partner_comment Partner Comment (Website Server Action Demo) ir.ui.view qweb New
template_partner_post Partner Post and Thanks (Website Server Action Demo) ir.ui.view qweb New
user_navbar user_navbar ir.ui.view qweb Inherits website.layout
view_base_language_install view_base_language_install.inherit base.language.install group Inherits base.view_base_language_install
view_server_action_form_website ir.actions.server.form.website ir.actions.server data Inherits base.view_server_action_form
view_server_action_search_website ir.actions.server.search.website ir.actions.server xpath Inherits base.view_server_action_search
view_server_action_tree_website ir.actions.server.tree.website ir.actions.server xpath Inherits base.view_server_action_tree
view_website_config_settings Website settings website.config.settings form New
view_website_form website.form website form New
view_website_tree website.tree website tree New
website.assets_frontend Website assets ir.ui.view qweb New
website.submenu Submenu ir.ui.view qweb New
website.theme Theme ir.ui.view qweb New
website.theme_amelia Amelia ir.ui.view qweb Inherits website.theme
website.theme_cerulean Cerulean ir.ui.view qweb Inherits website.theme
website.theme_cosmo Cosmo ir.ui.view qweb Inherits website.theme
website.theme_cyborg Cyborg ir.ui.view qweb Inherits website.theme
website.theme_flatly Flatly ir.ui.view qweb Inherits website.theme
website.theme_journal Journal ir.ui.view qweb Inherits website.theme
website.theme_readable Readable ir.ui.view qweb Inherits website.theme
website.theme_simplex Simplex ir.ui.view qweb Inherits website.theme
website.theme_slate Slate ir.ui.view qweb Inherits website.theme
website.theme_spacelab Spacelab ir.ui.view qweb Inherits website.theme
website.theme_united United ir.ui.view qweb Inherits website.theme
website.theme_yeti Yeti ir.ui.view qweb Inherits website.theme
website.themes Themes ir.ui.view qweb New
Models touched (20)

New fields (0)

No new fields.

Public methods (2)
  • on_change_website_path(self, cr, uid, ids, website_path, xml_id, context=None)
  • run_action_code_multi(self, cr, uid, action, eval_context=None, context=None)
    Override to allow returning response the same way action is already returned by the basic server action behavior. Note that response has priority over action, avoid using both.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • add_template(self, qcontext, name, node)
  • get_converter_for(self, field_type)
  • render_att_att(self, element, attribute_name, attribute_value, qwebcontext)

New fields (0)

No new fields.

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

New fields (0)

No new fields.

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

New fields (0)

No new fields.

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

New fields (0)

No new fields.

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

New fields (0)

No new fields.

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

New fields (0)

No new fields.

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

New fields (0)

No new fields.

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

New fields (0)

No new fields.

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

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

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

New fields (0)

No new fields.

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

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

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

New fields (0)

No new fields.

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