Major changes:
- Remove some of the recursively when compiling
- Compile attributes became a directive
- Compile options became a directive
- `t-field` compilation now uses the same logic as `t-out`
- Simplification of ``t-if`` directive compilation
- Improved handling of errors wrapped by QWebException
- Constants defined outside the class
Odoo
┗━► _render (returns MarkupSafe)
┗━► _compile (returns function) ◄━━━━━━━━━━┓
┗━► _compile_node (returns code string array) ◄━━━━━━━━┓ ┃
┃ (skip the current node if found t-qweb-skip) ┃ ┃
┃ (add technical directives: t-tag-open, t-tag-close, t-inner-content) ┃ ┃
┃ ┃ ┃
┣━► _directives_eval_order (defined directive order) ┃ ┃
┣━► _compile_directives (loop) Consume all remaining directives ◄━━━┓ ┃ ┃
┃ ┃ (e.g.: to change the indentation) ┃ ┃ ┃
┃ ┣━► _compile_directive ┃ ┃ ┃
┃ ┃ ┗━► t-if ━━► _compile_directive_if ━┫ ┃ ┃
┃ ┃ ┗━► t-foreach ━━► _compile_directive_foreach ━┛ ┃ ┃
┃ ┃ ┗━► t-inner-content ━━► _compile_directive_inner_content ◄━━━━━┓ ━┛ ┃
┃ ┃ ┗━► t-options ━━► _compile_directive_options ┃ ┃
┃ ┃ ┗━► t-call ━━► _compile_directive_call ━┫ ━━━┛
┃ ┃ ┗━► t-att ━━► _compile_directive_att ┃
┃ ┃ ┗━► t-tag-open ━━► _compile_directive_open ◄━━┓ ┃
┃ ┃ ┗━► t-tag-close ━━► _compile_directive_close ◄━━┫ ┃
┃ ┃ ┗━► t-out ━━► _compile_directive_out ━┛ ━┫ ◄━━┓
┃ ┃ ┗━► t-field ━━► _compile_directive_field ┃ ━┫
┃ ┃ ┗━► t-esc ━━► _compile_directive_esc ┃ ━┛
┃ ┃ ┗━► t-* ━━► ... ┃
┃ ┃ ┃
┗━━┻━► _compile_static_node ━┛
closes odoo/odoo#81024
Related: odoo/enterprise#22942
Signed-off-by: Christophe Monniez (moc) <moc@odoo.com>
73 lines
3.0 KiB
XML
73 lines
3.0 KiB
XML
<?xml version="1.0"?>
|
||
<odoo>
|
||
<template id="project.milestone_deadline">
|
||
<t t-if="milestone['deadline']">
|
||
(due <t t-esc="milestone['deadline']" t-options='{"widget": "date"}'/><t t-if="not milestone['is_reached'] or not milestone['reached_date']">)</t><t t-else=""> - reached on<t t-if="milestone['reached_date'] > milestone['deadline']">
|
||
<font t-att-style="'color: rgb(' + str(color_level) + ', 0, 0)'"><b><t t-esc="milestone['reached_date']" t-options='{"widget": "date"}'/></b></font>)</t><t t-else="">
|
||
<font t-att-style="'color: rgb(0, ' + str(color_level) + ', 0)'"><b><t t-esc="milestone['reached_date']" t-options='{"widget": "date"}'/></b></font>)</t></t>
|
||
</t>
|
||
</template>
|
||
|
||
<template id="project_update_default_description" name="Project Update Description">
|
||
<!--As this template is rendered in an html field, the spaces may be interpreted as nbsp while editing. -->
|
||
<div name="summary">
|
||
<br/><h1 style="font-weight: bolder;">Sprint Summary</h1>
|
||
<br/><p>How’s this project going?</p><br/><br/>
|
||
</div>
|
||
|
||
<div name="activities" t-if="show_activities">
|
||
<h1 style="font-weight: bolder;">Activities</h1>
|
||
</div>
|
||
|
||
<div name="milestone" t-if="milestones['show_section']">
|
||
<br/>
|
||
<h3 style="font-weight: bolder"><u>Milestones</u></h3>
|
||
|
||
<ul class="o_checklist" t-if="milestones['list']">
|
||
<t t-foreach="milestones['list']" t-as="milestone">
|
||
<li t-attf-class="{{milestone['is_reached'] and 'o_checked' or ''}}">
|
||
<t t-esc="milestone['name']"/>
|
||
<span t-if="milestone['is_deadline_future'] and not milestone['is_reached']"><font style="color: rgb(190, 190, 190);"><t t-set="color_level" t-value="64"/><t t-call="project.milestone_deadline"/></font></span>
|
||
<span t-else=""><t t-set="color_level" t-value="128"/><t t-call="project.milestone_deadline"/></span>
|
||
</li>
|
||
</t>
|
||
</ul>
|
||
|
||
<t t-if="milestones['updated']">
|
||
<t t-if="milestones['last_update_date']">Since <t t-esc="milestones['last_update_date']" t-options='{"widget": "date"}'/> (last project update), </t>
|
||
<t t-if="len(milestones['updated']) > 1">the deadline of the following milestones has been updated:</t>
|
||
<t t-else="">the deadline of the following milestone has been updated:</t>
|
||
<ul>
|
||
<t t-foreach="milestones['updated']" t-as="milestone">
|
||
<li>
|
||
<t t-esc="milestone['name']"/> (<t t-esc="milestone['old_value']" t-options='{"widget": "date"}'/> => <t t-esc="milestone['new_value']" t-options='{"widget": "date"}'/>)
|
||
</li>
|
||
</t>
|
||
</ul>
|
||
</t>
|
||
|
||
<t t-if="milestones['created']">
|
||
<t t-if="len(milestones['created']) > 1">The following milestones have been added:</t>
|
||
<t t-else="">The following milestone has been added:</t>
|
||
<ul>
|
||
<t t-foreach="milestones['created']" t-as="milestone">
|
||
<li>
|
||
<t t-esc="milestone['name']"/><span t-if="milestone['is_deadline_future'] and not milestone['is_reached']">
|
||
<font style="color: rgb(190, 190, 190);">
|
||
<t t-set="color_level" t-value="64"/>
|
||
<t t-call="project.milestone_deadline"/>
|
||
</font>
|
||
</span>
|
||
<span t-else="">
|
||
<t t-set="color_level" t-value="128"/>
|
||
<t t-call="project.milestone_deadline"/>
|
||
</span>
|
||
</li>
|
||
</t>
|
||
</ul>
|
||
</t>
|
||
</div>
|
||
</template>
|
||
|
||
</odoo>
|