QWeb is the primary templating engine used by Odoo. It is an XML templating engine and used mostly to generate XML, HTML fragments and pages. To create new XML template, please see :doc:`QWeb Templates documentation <https://www.odoo.com/documentation/15.0/developer/reference/frontend/qweb.html>` In **input** you have an XML template giving the corresponding input etree. Each etree input nodes are used to generate a python function. This fonction is called and will give the XML **output**. The ``_compile`` method is responsible to generate the function from the etree, that function is a python generator that yield one output line at a time. This generator is consumed by ``_render``. The generated function is orm cached. In the graphic below you can see theresume of the call of the methods performed in the IrQweb class. Odoo ┗━► _render (returns MarkupSafe) ┗━► _compile (returns function) ◄━━━━━━━━━┓ ┗━► _compile_node (returns code string array) ◄━━━━━━━┓ ┃ ┃ (add technical directives: t-inner-content, t-tag) ┃ ┃ ┣━► _directives_eval_order (defined directive order) ┃ ┃ ┃ ┃ ┃ ┣━► _compile_directives (recursive) ◄━━━━┓ ┃ ┃ ┃ ┣━► _compile_directive ┃ ┃ ┃ ┃ ┃ ┗━► t-if ━━► _compile_directive_if ━┫ ┃ ┃ ┃ ┃ ┗━► t-foreach ━━► _compile_directive_foreach ━┫ ┃ ┃ ┃ ┃ ┗━► t-* ━━► ... ━┛ ┃ ┃ ┃ ┃ ┗━► t-inner-content ━━► _compile_directive_inner_content ◄━━━━┓ ━┛ ┃ ┃ ┃ ┗━► t-tag ━━► _compile_directive_tag ━┫ ┃ ┃ ┃ ┗━► t-call ━━► _compile_directive_call ━┫ ━━━┛ ┃ ┃ ┗━► t-out ━━► _compile_directive_out ◄━┓ ━┫ ┃ ┃ ┗━► t-field ━━► _compile_directive_field ━┛ ┃ ┃ ┃ ┃ ┗━━┻━► _compile_static_node ━┛ Part-of: odoo/odoo#81024
57 lines
1.5 KiB
Python
57 lines
1.5 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
# core models (required for mixins)
|
|
from . import mail_alias
|
|
from . import models
|
|
|
|
# mixin
|
|
from . import mail_activity_mixin
|
|
from . import mail_alias_mixin
|
|
from . import mail_render_mixin
|
|
from . import mail_composer_mixin
|
|
from . import mail_thread
|
|
from . import mail_thread_blacklist
|
|
from . import mail_thread_cc
|
|
|
|
# mail models
|
|
from . import mail_notification # keep before as decorated m2m
|
|
from . import mail_activity_type
|
|
from . import mail_activity
|
|
from . import mail_blacklist
|
|
from . import mail_followers
|
|
from . import mail_message_reaction
|
|
from . import mail_message_subtype
|
|
from . import mail_message
|
|
from . import mail_mail
|
|
from . import mail_tracking_value
|
|
from . import mail_template
|
|
|
|
# discuss
|
|
from . import mail_channel_partner
|
|
from . import mail_channel_rtc_session
|
|
from . import mail_channel
|
|
from . import mail_guest
|
|
from . import mail_ice_server
|
|
from . import mail_shortcode
|
|
from . import res_users_settings
|
|
from . import res_users_settings_volumes
|
|
|
|
# odoo models
|
|
from . import bus_presence
|
|
from . import ir_action_act_window
|
|
from . import ir_actions_server
|
|
from . import ir_attachment
|
|
from . import ir_config_parameter
|
|
from . import ir_http
|
|
from . import ir_model
|
|
from . import ir_model_fields
|
|
from . import ir_ui_view
|
|
from . import ir_qweb
|
|
from . import res_company
|
|
from . import res_config_settings
|
|
from . import res_partner
|
|
from . import res_users
|
|
from . import res_groups
|
|
from . import update
|