summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorChristophe Matthieu <chm@odoo.com>2016-05-02 16:03:48 +0200
committerChristophe Matthieu <chm@odoo.com>2016-06-14 09:46:25 +0200
commit7ede9bcb2de9d52994b3a6fcb84edc3f81d60284 (patch)
treebf91070143134b5b5ef31334c913bf52089c6710 /addons
parent3ebf46fcc0ca048fcc1d433a073b94e64fb7049c (diff)
[IMP] base ir.qweb: compile template (and use ast) to improve rendering speed
* The compiled templates are cached per user, lang, inherit context values * ir.ui.fields: attributes method return an dict, and record_to_html return only the content value of the field * all rendered text use build_text and all attributes use build_attribute * t-esc-options is removed and replace by format_value method * AssetsBundle receive the list files and remains
Diffstat (limited to 'addons')
-rw-r--r--addons/account/views/report_agedpartnerbalance.xml28
-rw-r--r--addons/account/views/report_financial.xml10
-rw-r--r--addons/account/views/report_generalledger.xml12
-rw-r--r--addons/account/views/report_journal.xml14
-rw-r--r--addons/account/views/report_overdue.xml12
-rw-r--r--addons/account/views/report_partnerledger.xml14
-rw-r--r--addons/account/views/report_trialbalance.xml6
-rw-r--r--addons/l10n_fr/views/report_l10nfrbilan.xml274
-rw-r--r--addons/l10n_fr/views/report_l10nfrresultat.xml106
-rw-r--r--addons/report/models/ir_qweb.py5
-rw-r--r--addons/sale/views/report_invoice_layouted.xml2
-rw-r--r--addons/sale/views/report_saleorder.xml2
-rw-r--r--addons/web/controllers/main.py2
-rw-r--r--addons/web_editor/models/ir_qweb.py220
-rw-r--r--addons/web_editor/models/ir_ui_view.py13
-rw-r--r--addons/web_editor/models/test_models.py2
-rw-r--r--addons/web_editor/static/src/js/snippets.editor.js4
-rw-r--r--addons/website/models/ir_http.py6
-rw-r--r--addons/website/models/ir_qweb.py62
-rw-r--r--addons/website_blog/views/website_blog_templates.xml2
-rw-r--r--addons/website_form/controllers/main.py2
-rw-r--r--addons/website_payment/views/website_payment_templates.xml4
-rw-r--r--addons/website_quote/views/website_quotation.xml2
-rw-r--r--addons/website_sale/controllers/main.py1
24 files changed, 404 insertions, 401 deletions
diff --git a/addons/account/views/report_agedpartnerbalance.xml b/addons/account/views/report_agedpartnerbalance.xml
index e4e3a8451b3..560c711be9b 100644
--- a/addons/account/views/report_agedpartnerbalance.xml
+++ b/addons/account/views/report_agedpartnerbalance.xml
@@ -50,13 +50,13 @@
</tr>
<tr t-if="get_partner_lines">
<th>Account Total</th>
- <th class="text-right"><span t-esc="get_direction[6]" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></th>
- <th class="text-right"><span t-esc="get_direction[4]" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></th>
- <th class="text-right"><span t-esc="get_direction[3]" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></th>
- <th class="text-right"><span t-esc="get_direction[2]" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></th>
- <th class="text-right"><span t-esc="get_direction[1]" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></th>
- <th class="text-right"><span t-esc="get_direction[0]" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></th>
- <th class="text-right"><span t-esc="get_direction[5]" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></th>
+ <th class="text-right"><span t-esc="format(get_direction[6], 'monetary', res_company.currency_id)"/></th>
+ <th class="text-right"><span t-esc="format(get_direction[4], 'monetary', res_company.currency_id)"/></th>
+ <th class="text-right"><span t-esc="format(get_direction[3], 'monetary', res_company.currency_id)"/></th>
+ <th class="text-right"><span t-esc="format(get_direction[2], 'monetary', res_company.currency_id)"/></th>
+ <th class="text-right"><span t-esc="format(get_direction[1], 'monetary', res_company.currency_id)"/></th>
+ <th class="text-right"><span t-esc="format(get_direction[0], 'monetary', res_company.currency_id)"/></th>
+ <th class="text-right"><span t-esc="format(get_direction[5], 'monetary', res_company.currency_id)"/></th>
</tr>
</thead>
<tbody>
@@ -65,25 +65,25 @@
<span t-esc="partner['name']"/>
</td>
<td class="text-right">
- <span t-esc="partner['direction']" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(partner['direction'], 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="partner['4']" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(partner['4'], 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="partner['3']" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(partner['3'], 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="partner['2']" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(partner['2'], 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="partner['1']" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(partner['1'], 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="partner['0']" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(partner['0'], 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="partner['total']" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(partner['total'], 'monetary', res_company.currency_id)"/>
</td>
</tr>
</tbody>
diff --git a/addons/account/views/report_financial.xml b/addons/account/views/report_financial.xml
index 2647ed10fa7..692e0bc2676 100644
--- a/addons/account/views/report_financial.xml
+++ b/addons/account/views/report_financial.xml
@@ -43,13 +43,13 @@
<span t-att-style="style" t-esc="a.get('name')"/>
</td>
<td class="text-right" style="white-space: text-nowrap;">
- <span t-att-style="style" t-esc="a.get('debit')" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-att-style="style" t-esc="format(a.get('debit'), 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right" style="white-space: text-nowrap;">
- <span t-att-style="style" t-esc="a.get('credit')" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-att-style="style" t-esc="format(a.get('credit'), 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right" style="white-space: text-nowrap;">
- <span t-att-style="style" t-esc="a.get('balance')" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-att-style="style" t-esc="format(a.get('balance'), 'monetary', res_company.currency_id)"/>
</td>
</t>
</tr>
@@ -73,7 +73,7 @@
<span style="color: white;" t-esc="'..' * a.get('level', 0)"/>
<span t-att-style="style" t-esc="a.get('name')"/>
</td>
- <td class="text-right"><span t-att-style="style" t-esc="a.get('balance')" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></td>
+ <td class="text-right"><span t-att-style="style" t-esc="format(a.get('balance'), 'monetary', res_company.currency_id)"/></td>
</t>
</tr>
</tbody>
@@ -96,7 +96,7 @@
<span style="color: white;" t-esc="'..'"/>
<span t-att-style="style" t-esc="a.get('name')"/>
</td>
- <td class="text-right"><span t-att-style="style" t-esc="a.get('balance')" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></td>
+ <td class="text-right"><span t-att-style="style" t-esc="format(a.get('balance'), 'monetary', res_company.currency_id)"/></td>
<td class="text-right"><span t-att-style="style" t-esc="a.get('balance_cmp')"/></td>
</t>
</tr>
diff --git a/addons/account/views/report_generalledger.xml b/addons/account/views/report_generalledger.xml
index 9e2300098b1..7ef9fef28dc 100644
--- a/addons/account/views/report_generalledger.xml
+++ b/addons/account/views/report_generalledger.xml
@@ -66,13 +66,13 @@
<span t-esc="account['name']"/>
</td>
<td class="text-right">
- <span t-esc="account['debit']" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(account['debit'], 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="account['credit']" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(account['credit'], 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="account['balance']" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(account['balance'], 'monetary', res_company.currency_id)"/>
</td>
<td groups="base.group_multi_currency"/>
</tr>
@@ -84,13 +84,13 @@
<td><span t-esc="line['move_name']"/></td>
<td><span t-esc="line['lname']"/></td>
<td class="text-right">
- <span t-esc="line['debit']" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(line['debit'], 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="line['credit']" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(line['credit'], 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="line['balance']" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(line['balance'], 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right" groups="base.group_multi_currency">
<span t-esc="line['amount_currency'] if line['amount_currency'] > 0.00 else ''"/>
diff --git a/addons/account/views/report_journal.xml b/addons/account/views/report_journal.xml
index 73926363f09..76ff18c7799 100644
--- a/addons/account/views/report_journal.xml
+++ b/addons/account/views/report_journal.xml
@@ -51,10 +51,10 @@
<td><span t-field="aml.account_id.code"/></td>
<td><span t-esc="aml.partner_id and aml.partner_id.name[:23] or ''"/></td>
<td><span t-esc="aml.name[:35]"/></td>
- <td><span t-esc="aml.debit" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></td>
- <td><span t-esc="aml.credit" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></td>
+ <td><span t-esc="format(aml.debit, 'monetary', res_company.currency_id)"/></td>
+ <td><span t-esc="format(aml.credit, 'monetary', res_company.currency_id)"/></td>
<td t-if="data['form']['amount_currency'] and aml.amount_currency">
- <span t-esc="aml.amount_currency" t-esc-options='{"widget": "monetary", "display_currency": "aml.currency_id"}'/>
+ <span t-esc="format(aml.amount_currency, 'monetary', aml.currency_id)"/>
</td>
</tr>
</tbody>
@@ -65,8 +65,8 @@
<table class="table table-condensed">
<tr>
<td><strong>Total</strong></td>
- <td><span t-esc="sum_debit(data, o)" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></td>
- <td><span t-esc="sum_credit(data, o)" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></td>
+ <td><span t-esc="format(sum_debit(data, o), 'monetary', res_company.currency_id)"/></td>
+ <td><span t-esc="format(sum_credit(data, o), 'monetary', res_company.currency_id)"/></td>
</tr>
</table>
</div>
@@ -87,8 +87,8 @@
<t t-set="taxes" t-value="get_taxes(data, o)"/>
<tr t-foreach="taxes" t-as="tax">
<td><span t-esc="tax.name"/></td>
- <td><span t-esc="taxes[tax]['base_amount']" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></td>
- <td><span t-esc="taxes[tax]['tax_amount']" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></td>
+ <td><span t-esc="format(taxes[tax]['base_amount'], 'monetary', res_company.currency_id)"/></td>
+ <td><span t-esc="format(taxes[tax]['tax_amount'], 'monetary', res_company.currency_id)"/></td>
</tr>
</tbody>
</table>
diff --git a/addons/account/views/report_overdue.xml b/addons/account/views/report_overdue.xml
index 668cdc790b3..8071c8d7601 100644
--- a/addons/account/views/report_overdue.xml
+++ b/addons/account/views/report_overdue.xml
@@ -44,10 +44,10 @@
<span t-esc="line['ref']"/>
</td>
<td class="text-right">
- <span t-esc="line['debit']" t-esc-options='{"widget": "monetary", "display_currency": "currency"}'/>
+ <span t-esc="format(line['debit'], 'monetary', currency)"/>
</td>
<td class="text-right">
- <span t-esc="line['credit']" t-esc-options='{"widget": "monetary", "display_currency": "currency"}'/>
+ <span t-esc="format(line['credit'], 'monetary', currency)"/>
</td>
<td class="text-center">
<span t-if="line['blocked']">x</span>
@@ -56,16 +56,16 @@
<tr>
<td colspan="3"></td>
<td><strong>Sub-Total :</strong></td>
- <td class="text-right"><span t-esc="Totals[o.id][currency]['due']" t-esc-options='{"widget": "monetary", "display_currency": "currency"}'/></td>
- <td class="text-right"><span t-esc="Totals[o.id][currency]['paid']" t-esc-options='{"widget": "monetary", "display_currency": "currency"}'/></td>
- <td class="text-right"><span t-esc="Totals[o.id][currency]['mat']" t-esc-options='{"widget": "monetary", "display_currency": "currency"}'/></td>
+ <td class="text-right"><span t-esc="format(Totals[o.id][currency]['due'], 'monetary', currency)"/></td>
+ <td class="text-right"><span t-esc="format(Totals[o.id][currency]['paid'], 'monetary', currency)"/></td>
+ <td class="text-right"><span t-esc="format(Totals[o.id][currency]['mat'], 'monetary', currency)"/></td>
<td></td>
</tr>
<tr>
<td colspan="3"></td>
<td><strong>Balance :</strong></td>
<td class="text-right">
- <span t-esc="Totals[o.id][currency]['due'] - Totals[o.id][currency]['paid']" t-esc-options='{"widget": "monetary", "display_currency": "currency"}'/>
+ <span t-esc="format(Totals[o.id][currency]['due'] - Totals[o.id][currency]['paid'], 'monetary', currency)"/>
</td>
</tr>
</table>
diff --git a/addons/account/views/report_partnerledger.xml b/addons/account/views/report_partnerledger.xml
index e8cb8c3e263..94ac9b0d4b6 100644
--- a/addons/account/views/report_partnerledger.xml
+++ b/addons/account/views/report_partnerledger.xml
@@ -46,13 +46,13 @@
- <strong t-esc="o.name"/>
</td>
<td class="text-right">
- <strong t-esc="sum_partner(data, o, 'debit')" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <strong t-esc="format(sum_partner(data, o, 'debit'), 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <strong t-esc="sum_partner(data, o, 'credit')" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <strong t-esc="format(sum_partner(data, o, 'credit'), 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <strong t-esc="sum_partner(data, o, 'debit - credit')" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <strong t-esc="format(sum_partner(data, o, 'debit - credit'), 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr t-foreach="lines(data, o)" t-as="line">
@@ -69,16 +69,16 @@
<span t-esc="line['displayed_name']"/>
</td>
<td class="text-right">
- <span t-esc="line['debit']" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(line['debit'], 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="line['credit']" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(line['credit'], 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="line['progress']" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(line['progress'], 'monetary', res_company.currency_id)"/>
</td>
<td t-if="amount_currency">
- <span t-esc="line['amount_currency']" t-esc-options='{"widget": "monetary", "display_currency": "line[\"currency_id\"]"}'/>
+ <span t-esc="format(line['amount_currency'], 'monetary', line['currency_id'])"/>
</td>
</tr>
</tbody>
diff --git a/addons/account/views/report_trialbalance.xml b/addons/account/views/report_trialbalance.xml
index 5470f6385ed..7ada5bc393b 100644
--- a/addons/account/views/report_trialbalance.xml
+++ b/addons/account/views/report_trialbalance.xml
@@ -50,13 +50,13 @@
<span t-att-style="style" t-esc="account['name']"/>
</td>
<td class="text-right">
- <span t-att-style="style" t-esc="account['debit']" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-att-style="style" t-esc="format(account['debit'], 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-att-style="style" t-esc="account['credit']" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-att-style="style" t-esc="format(account['credit'], 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-att-style="style" t-esc="account['balance']" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-att-style="style" t-esc="format(account['balance'], 'monetary', res_company.currency_id)"/>
</td>
</tr>
</tbody>
diff --git a/addons/l10n_fr/views/report_l10nfrbilan.xml b/addons/l10n_fr/views/report_l10nfrbilan.xml
index f5c697c3fad..5923e6a763f 100644
--- a/addons/l10n_fr/views/report_l10nfrbilan.xml
+++ b/addons/l10n_fr/views/report_l10nfrbilan.xml
@@ -33,11 +33,11 @@
<tr>
<td>Capital souscrit - non appel&#xE9;</td>
<td class="text-right">
- <span t-esc="bavar1" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar1, 'monetary', res_company.currency_id)"/>
</td>
<td></td>
<td class="text-right">
- <span t-esc="bavar1" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar1, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
@@ -59,83 +59,83 @@
<tr>
<td>Frais d'&#xE9;tablissement</td>
<td class="text-right">
- <span t-esc="bavar2" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar2, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="-bavar2b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(-bavar2b, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="bavar2+bavar2b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar2+bavar2b, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Frais de recherche et de d&#xE9;veloppement</td>
<td class="text-right">
- <span t-esc="bavar3" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar3, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="-bavar3b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(-bavar3b, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="bavar3+bavar3b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar3+bavar3b, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Concessions, brevets, licences,..., droits et valeurs similaires</td>
<td class="text-right">
- <span t-esc="bavar4" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar4, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="-bavar4b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(-bavar4b, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="bavar4+bavar4b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar4+bavar4b, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Fonds commercial</td>
<td class="text-right">
- <span t-esc="bavar5" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar5, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="-bavar5b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(-bavar5b, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="bavar5+bavar5b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar5+bavar5b, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Autres</td>
<td class="text-right">
- <span t-esc="bavar6" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar6, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="-bavar6b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(-bavar6b, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="bavar6+bavar6b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar6+bavar6b, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Immobilisations incorporelles en cours</td>
<td class="text-right">
- <span t-esc="bavar7" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar7, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="-bavar7b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(-bavar7b, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="bavar7+bavar7b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar7+bavar7b, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Avances et acomptes</td>
<td class="text-right">
- <span t-esc="bavar8" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar8, 'monetary', res_company.currency_id)"/>
</td>
<td></td>
<td class="text-right">
- <span t-esc="bavar8" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar8, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
@@ -149,71 +149,71 @@
<tr>
<td>Terrains</td>
<td class="text-right">
- <span t-esc="bavar9" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar9, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="-bavar9b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(-bavar9b, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="bavar9+bavar9b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar9+bavar9b, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Constructions</td>
<td class="text-right">
- <span t-esc="bavar10" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar10, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="-bavar10b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(-bavar10b, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="bavar10+bavar10b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar10+bavar10b, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Installations techniques,mat&#xE9;riel et outillage</td>
<td class="text-right">
- <span t-esc="bavar11" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar11, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="-bavar11b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(-bavar11b, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="bavar11+bavar11b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar11+bavar11b, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Autres</td>
<td class="text-right">
- <span t-esc="bavar12" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar12, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="-bavar12b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(-bavar12b, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="bavar12+bavar12b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar12+bavar12b, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Immobilisations corporelles en cours</td>
<td class="text-right">
- <span t-esc="bavar13" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar13, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="-bavar13b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(-bavar13b, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="bavar13+bavar13b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar13+bavar13b, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Avances et acomptes</td>
<td class="text-right">
- <span t-esc="bavar14" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar14, 'monetary', res_company.currency_id)"/>
</td>
<td></td>
<td class="text-right">
- <span t-esc="bavar14" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar14, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
@@ -227,73 +227,73 @@
<tr>
<td>Participations</td>
<td class="text-right">
- <span t-esc="bavar15" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar15, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="-bavar15b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(-bavar15b, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="bavar15+bavar15b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar15+bavar15b, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Cr&#xE9;ances rattach&#xE9;es &#xE0; des participations</td>
<td class="text-right">
- <span t-esc="bavar16" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar16, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="-bavar16b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(-bavar16b, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="bavar16+bavar16b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar16+bavar16b, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Titres immobilis&#xE9;s de l'activit&#xE9; de portefeuille</td>
<td class="text-right">
- <span t-esc="bavar17" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar17, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="-bavar17b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(-bavar17b, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="bavar17+bavar17b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar17+bavar17b, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Autres titres immobilis&#xE9;s</td>
<td class="text-right">
- <span t-esc="bavar18" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar18, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="-bavar18b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(-bavar18b, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="bavar18+bavar18b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar18+bavar18b, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Pr&#xEA;ts</td>
<td class="text-right">
- <span t-esc="bavar19" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar19, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="-bavar19b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(-bavar19b, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="bavar19+bavar19b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar19+bavar19b, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Autres</td>
<td class="text-right">
- <span t-esc="bavar20" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar20, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="-bavar20b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(-bavar20b, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="bavar20+bavar20b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar20+bavar20b, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
@@ -301,13 +301,13 @@
<strong>TOTAL I</strong>
</td>
<td class="text-right">
- <span t-esc="at1a" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(at1a, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="-at1b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(-at1b, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="at1" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(at1, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
@@ -325,59 +325,59 @@
<tr>
<td>Mati&#xE8;res premi&#xE8;res et autres approvisionnements</td>
<td class="text-right">
- <span t-esc="bavar21" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar21, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="-bavar21b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(-bavar21b, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="bavar21+bavar21b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar21+bavar21b, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>En-cours de production [biens et services]</td>
<td class="text-right">
- <span t-esc="bavar22" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar22, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="-bavar22b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(-bavar22b, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="bavar22+bavar22b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar22+bavar22b, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Produits interm&#xE9;diaires et finis</td>
<td class="text-right">
- <span t-esc="bavar23" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar23, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="-bavar23b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(-bavar23b, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="bavar23+bavar23b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar23+bavar23b, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Marchandises</td>
<td class="text-right">
- <span t-esc="bavar24" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar24, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="-bavar24b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(-bavar24b, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="bavar24+bavar24b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar24+bavar24b, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Avances et acomptes vers&#xE9;s sur commandes</td>
<td class="text-right">
- <span t-esc="bavar25" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar25, 'monetary', res_company.currency_id)"/>
</td>
<td></td>
<td class="text-right">
- <span t-esc="bavar25" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar25, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
@@ -389,35 +389,35 @@
<tr>
<td>Cr&#xE9;ances clients et comptes rattach&#xE9;s</td>
<td class="text-right">
- <span t-esc="bavar26" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar26, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="-bavar26b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(-bavar26b, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="bavar26+bavar26b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar26+bavar26b, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Autres</td>
<td class="text-right">
- <span t-esc="bavar27" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar27, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="-bavar27b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(-bavar27b, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="bavar27+bavar27b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar27+bavar27b, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Capital souscrit - appel&#xE9; , non vers&#xE9;</td>
<td class="text-right">
- <span t-esc="bavar28" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar28, 'monetary', res_company.currency_id)"/>
</td>
<td></td>
<td class="text-right">
- <span t-esc="bavar28" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar28, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
@@ -429,55 +429,55 @@
<tr>
<td>Actions propres</td>
<td class="text-right">
- <span t-esc="bavar29" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar29, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="-bavar29b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(-bavar29b, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="bavar29+bavar29b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar29+bavar29b, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Autres titres</td>
<td class="text-right">
- <span t-esc="bavar30" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar30, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="-bavar30b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(-bavar30b, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="bavar30+bavar30b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar30+bavar30b, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Instruments de tr&#xE9;sorerie</td>
<td class="text-right">
- <span t-esc="bavar31" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar31, 'monetary', res_company.currency_id)"/>
</td>
<td></td>
<td class="text-right">
- <span t-esc="bavar31" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar31, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Disponibilit&#xE9;s</td>
<td class="text-right">
- <span t-esc="bavar32" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar32, 'monetary', res_company.currency_id)"/>
</td>
<td></td>
<td class="text-right">
- <span t-esc="bavar32" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar32, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Charges constat&#xE9;s d'avance</td>
<td class="text-right">
- <span t-esc="bavar33" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar33, 'monetary', res_company.currency_id)"/>
</td>
<td></td>
<td class="text-right">
- <span t-esc="bavar33" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar33, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
@@ -485,43 +485,43 @@
<strong>TOTAL II</strong>
</td>
<td class="text-right">
- <span t-esc="at2a" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(at2a, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="-at2b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(-at2b, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="at2" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(at2, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Charges &#xE0; r&#xE9;partir sur plusieurs exercices ( III )</td>
<td class="text-right">
- <span t-esc="bavar34" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar34, 'monetary', res_company.currency_id)"/>
</td>
<td></td>
<td class="text-right">
- <span t-esc="bavar34" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar34, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Primes de remboursement des emprunts ( IV )</td>
<td class="text-right">
- <span t-esc="bavar35" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar35, 'monetary', res_company.currency_id)"/>
</td>
<td></td>
<td class="text-right">
- <span t-esc="bavar35" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar35, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>&#xC9;carts de conversion actif ( V )</td>
<td class="text-right">
- <span t-esc="bavar36" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar36, 'monetary', res_company.currency_id)"/>
</td>
<td></td>
<td class="text-right">
- <span t-esc="bavar36" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(bavar36, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
@@ -529,13 +529,13 @@
<strong>TOTAL ACTIF ( I + II + III + IV + V )</strong>
</td>
<td class="text-right">
- <span t-esc="at1a+at2a" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(at1a+at2a, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="-at1b-at2b" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(-at1b-at2b, 'monetary', res_company.currency_id)"/>
</td>
<td class="text-right">
- <span t-esc="actif" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span t-esc="format(actif, 'monetary', res_company.currency_id)"/>
</td>
</tr>
</table>
@@ -549,19 +549,19 @@
</tr>
<tr>
<td>Capital [dont vers&#xE9;...]</td>
- <td><span t-esc="bpvar1" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></td>
+ <td><span t-esc="format(bpvar1, 'monetary', res_company.currency_id)"/></td>
</tr>
<tr>
<td>Primes d'&#xE9;mission, de fusion, d'apport</td>
- <td><span t-esc="bpvar2" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></td>
+ <td><span t-esc="format(bpvar2, 'monetary', res_company.currency_id)"/></td>
</tr>
<tr>
<td>&#xC9;carts de r&#xE9;&#xE9;valuation</td>
- <td><span t-esc="bpvar3" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></td>
+ <td><span t-esc="format(bpvar3, 'monetary', res_company.currency_id)"/></td>
</tr>
<tr>
<td>&#xC9;cart d'&#xE9;quivalence</td>
- <td><span t-esc="bpvar4" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></td>
+ <td><span t-esc="format(bpvar4, 'monetary', res_company.currency_id)"/></td>
</tr>
<tr>
<td><strong>R&#xC9;SERVES</strong></td>
@@ -569,37 +569,37 @@
</tr>
<tr>
<td>R&#xE9;serve l&#xE9;gale</td>
- <td><span t-esc="bpvar5" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></td>
+ <td><span t-esc="format(bpvar5, 'monetary', res_company.currency_id)"/></td>
</tr>
<tr>
<td>R&#xE9;serves statutaires ou contractuelles</td>
- <td><span t-esc="bpvar6" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></td>
+ <td><span t-esc="format(bpvar6, 'monetary', res_company.currency_id)"/></td>
</tr>
<tr>
- <td>R&#xE9;serves r&#xE9;glement&#xE9;es</td><td><span t-esc="bpvar7" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></td></tr>
+ <td>R&#xE9;serves r&#xE9;glement&#xE9;es</td><td><span t-esc="format(bpvar7, 'monetary', res_company.currency_id)"/></td></tr>
<tr>
<td>Autres r&#xE9;serves</td>
- <td><span t-esc="bpvar8" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></td>
+ <td><span t-esc="format(bpvar8, 'monetary', res_company.currency_id)"/></td>
</tr>
<tr>
<td>Report &#xE0; nouveau</td>
- <td><span t-esc="bpvar9" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></td>
+ <td><span t-esc="format(bpvar9, 'monetary', res_company.currency_id)"/></td>
</tr>
<tr>
<td><strong>R&#xC9;SULTAT DE L'EXERCICE [b&#xE9;n&#xE9;fice ou perte]</strong></td>
- <td><span t-esc="bpvar10" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></td>
+ <td><span t-esc="format(bpvar10, 'monetary', res_company.currency_id)"/></td>
</tr>
<tr>
<td>Subventions d'investissement</td>
- <td><span t-esc="bpvar11" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></td>
+ <td><span t-esc="format(bpvar11, 'monetary', res_company.currency_id)"/></td>
</tr>
<tr>
<td>Provisions r&#xE9;glement&#xE9;es</td>
- <td><span t-esc="bpvar12" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></td>
+ <td><span t-esc="format(bpvar12, 'monetary', res_company.currency_id)"/></td>
</tr>
<tr>
<td class="text-right"><strong>TOTAL I</strong></td>
- <td><span t-esc="pt1" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></td>
+ <td><span t-esc="format(pt1, 'monetary', res_company.currency_id)"/></td>
</tr>
<tr>
<td><strong>PROVISIONS</strong></td>
@@ -607,15 +607,15 @@
</tr>
<tr>
<td>Provisions pour risques</td>
- <td><span t-esc="bpvar13" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></td>
+ <td><span t-esc="format(bpvar13, 'monetary', res_company.currency_id)"/></td>
</tr>
<tr>
<td>Provisions pour charges</td>
- <td><span t-esc="bpvar14" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></td>
+ <td><span t-esc="format(bpvar14, 'monetary', res_company.currency_id)"/></td>
</tr>
<tr>
<td class="text-right"><strong>TOTAL II</strong></td>
- <td><span t-esc="pt2" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></td>
+ <td><span t-esc="format(pt2, 'monetary', res_company.currency_id)"/></td>
</tr>
<tr>
<td><strong>DETTES</strong></td>
@@ -623,59 +623,59 @@
</tr>
<tr>
<td>Emprunts obligataires convertibles</td>
- <td><span t-esc="bpvar15" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></td>
+ <td><span t-esc="format(bpvar15, 'monetary', res_company.currency_id)"/></td>
</tr>
<tr>
<td>Autres emprunts obligataires</td>
- <td><span t-esc="bpvar16" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></td>
+ <td><span t-esc="format(bpvar16, 'monetary', res_company.currency_id)"/></td>
</tr>
<tr>
<td>Emprunts et dettes aupr&#xE8;s des &#xE9;tablissements de cr&#xE9;dit</td>
- <td><span t-esc="bpvar17" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></td>
+ <td><span t-esc="format(bpvar17, 'monetary', res_company.currency_id)"/></td>
</tr>
<tr>
<td>Emprunts et dettes financi&#xE8;res diverses</td>
- <td><span t-esc="bpvar18" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></td>
+ <td><span t-esc="format(bpvar18, 'monetary', res_company.currency_id)"/></td>
</tr>
<tr>
<td>Avances et acomptes re&#xE7;us sur commandes en cours</td>
- <td><span t-esc="bpvar19" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></td>
+ <td><span t-esc="format(bpvar19, 'monetary', res_company.currency_id)"/></td>
</tr>
<tr>
<td>Dettes fournisseurs et comptes rattach&#xE9;s </td>
- <td><span t-esc="bpvar20" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></td>
+ <td><span t-esc="format(bpvar20, 'monetary', res_company.currency_id)"/></td>
</tr>
<tr>
<td>Dettes fiscales et sociales</td>
- <td><span t-esc="bpvar21" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></td>
+ <td><span t-esc="format(bpvar21, 'monetary', res_company.currency_id)"/></td>
</tr>
<tr>
<td>Dettes sur immobilisations et comptes rattach&#xE9;s</td>
- <td><span t-esc="bpvar22" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></td>
+ <td><span t-esc="format(bpvar22, 'monetary', res_company.currency_id)"/></td>
</tr>
<tr>
<td>Autres dettes</td>
- <td><span t-esc="bpvar23" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></td>
+ <td><span t-esc="format(bpvar23, 'monetary', res_company.currency_id)"/></td>
</tr>
<tr>
<td>Instruments de tr&#xE9;sorerie</td>
- <td><span t-esc="bpvar24" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></td>
+ <td><span t-esc="format(bpvar24, 'monetary', res_company.currency_id)"/></td>
</tr>
<tr>
<td>Produits constat&#xE9;s d'avance</td>
- <td><span t-esc="bpvar25" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></td>
+ <td><span t-esc="format(bpvar25, 'monetary', res_company.currency_id)"/></td>
</tr>
<tr>
<td class="text-right"><strong>TOTAL III</strong></td>
- <td><span t-esc="pt3" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></td>
+ <td><span t-esc="format(pt3, 'monetary', res_company.currency_id)"/></td>
</tr>
<tr>
<td>&#xC9;carts de conversion passif <font face="Times-Roman">( IV )</font></td>
- <td><span t-esc="bpvar26" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></td>
+ <td><span t-esc="format(bpvar26, 'monetary', res_company.currency_id)"/></td>
</tr>
<tr>
<td><strong>TOTAL G&#xC9;N&#xC9;RAL (I + II + III + IV)</strong></td>
- <td><span t-esc="passif" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></td>
+ <td><span t-esc="format(passif, 'monetary', res_company.currency_id)"/></td>
</tr>
<tr>
<td>&amp;nbsp;</td>
@@ -683,7 +683,7 @@
</tr>
<tr>
<td><strong>ACTIF - PASSIF</strong></td>
- <td><span t-esc="round(actif-passif,2)" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/></td>
+ <td><span t-esc="format(round(actif-passif,2), 'monetary', res_company.currency_id)"/></td>
</tr>
</tbody>
</table>
diff --git a/addons/l10n_fr/views/report_l10nfrresultat.xml b/addons/l10n_fr/views/report_l10nfrresultat.xml
index 9938e3fad6f..0516dd58199 100644
--- a/addons/l10n_fr/views/report_l10nfrresultat.xml
+++ b/addons/l10n_fr/views/report_l10nfrresultat.xml
@@ -35,61 +35,61 @@
<tr>
<td>Achat de marchandises</td>
<td>
- <span class="text-right" t-esc="cdrc1" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(cdrc1, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Variation des stocks</td>
<td>
- <span class="text-right" t-esc="cdrc2" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(cdrc2, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Achats de mati&#xE8;res premi&#xE8;res et autres approvisionnements</td>
<td>
- <span class="text-right" t-esc="cdrc3" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(cdrc3, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Variation des stocks</td>
<td>
- <span class="text-right" t-esc="cdrc4" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(cdrc4, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Autres achats et charges externes</td>
<td>
- <span class="text-right" t-esc="cdrc5" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(cdrc5, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Redevances de cr&#xE9;dit-bail mobilier</td>
<td>
- <span class="text-right" t-esc="cdrc6" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(cdrc6, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Redevances de cr&#xE9;dit-bail immobilier</td>
<td>
- <span class="text-right" t-esc="cdrc7" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(cdrc7, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Imp&#xF4;ts, taxes et versements assimil&#xE9;s</td>
<td>
- <span class="text-right" t-esc="cdrc8" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(cdrc8, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Salaires et traitements</td>
<td>
- <span class="text-right" t-esc="cdrc9" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(cdrc9, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Charges sociales</td>
<td>
- <span class="text-right" t-esc="cdrc10" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(cdrc10, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
@@ -99,43 +99,43 @@
<tr>
<td>Sur immobilisations : dotations aux amortissements</td>
<td>
- <span class="text-right" t-esc="cdrc11" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(cdrc11, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Sur immobilisations : dotations aux d&#xE9;pr&#xE9;ciations</td>
<td>
- <span class="text-right" t-esc="cdrc12" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(cdrc12, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Sur actif circulant : dotations aux d&#xE9;pr&#xE9;ciations</td>
<td>
- <span class="text-right" t-esc="cdrc13" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(cdrc13, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Dotations aux provisions</td>
<td>
- <span class="text-right" t-esc="cdrc14" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(cdrc14, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Autres charges</td>
<td>
- <span class="text-right" t-esc="cdrc15" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(cdrc15, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td class="text-right"><strong>TOTAL I</strong></td>
<td>
- <span class="text-right" t-esc="ct1" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(ct1, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td><strong>Quotes-parts de r&#xE9;sultat sur op&#xE9;rations faites en commun ( II )</strong></td>
<td>
- <span class="text-right" t-esc="cdrc16" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(cdrc16, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
@@ -145,31 +145,31 @@
<tr>
<td>Dotations aux amortissements, aux d&#xE9;pr&#xE9;ciations et aux provisions</td>
<td>
- <span class="text-right" t-esc="cdrc17" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(cdrc17, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Int&#xE9;r&#xEA;ts et charges assimil&#xE9;es</td>
<td>
- <span class="text-right" t-esc="cdrc18" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(cdrc18, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Diff&#xE9;rences n&#xE9;gatives de change</td>
<td>
- <span class="text-right" t-esc="cdrc19" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(cdrc19, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Charges nettes sur cessions de valeurs mobili&#xE8;res de placement</td>
<td>
- <span class="text-right" t-esc="cdrc20" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(cdrc20, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td class="text-right"><strong>TOTAL III</strong></td>
<td>
- <span class="text-right" t-esc="ct3" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(ct3, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
@@ -179,43 +179,43 @@
<tr>
<td>Sur op&#xE9;rations de gestion</td>
<td>
- <span class="text-right" t-esc="cdrc21" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(cdrc21, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Sur op&#xE9;rations en capital</td>
<td>
- <span class="text-right" t-esc="cdrc22" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(cdrc22, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Dotations aux amortissements, aux d&#xE9;pr&#xE9;ciations et aux provisions</td>
<td>
- <span class="text-right" t-esc="cdrc23" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(cdrc23, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td class="text-right"><strong>TOTAL IV</strong></td>
<td>
- <span class="text-right" t-esc="ct4" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(ct4, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td><strong>Participation des salariés aux résultats ( V )</strong></td>
<td>
- <span class="text-right" t-esc="cdrc24" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(cdrc24, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td><strong>Impôts sur les bénéfices ( VI )</strong></td>
<td>
- <span class="text-right" t-esc="cdrc25" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(cdrc25, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td class="text-right"><strong>TOTAL CHARGES ( I + II + III + IV+ V+ VI )</strong></td>
<td>
- <span class="text-right" t-esc="charges" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(charges, 'monetary', res_company.currency_id)"/>
</td>
</tr>
@@ -236,67 +236,67 @@
<tr>
<td>Vente de marchandises</td>
<td>
- <span class="text-right" t-esc="cdrp1" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(cdrp1, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Production vendue [biens et services]</td>
<td>
- <span class="text-right" t-esc="cdrp2" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(cdrp2, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td><strong>Sous-total A - Montant net du chiffre d'affaires</strong></td>
<td>
- <span class="text-right" t-esc="pta" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(pta, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Production stock&#xE9;e</td>
<td>
- <span class="text-right" t-esc="cdrp3" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(cdrp3, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Production immobilis&#xE9;e</td>
<td>
- <span class="text-right" t-esc="cdrp4" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(cdrp4, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Subventions d'exploitation</td>
<td>
- <span class="text-right" t-esc="cdrp5" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(cdrp5, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Reprises sur provisions, d&#xE9;pr&#xE9;ciations (et amortissements) et transferts de charges</td>
<td>
- <span class="text-right" t-esc="cdrp6" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(cdrp6, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Autres produits</td>
<td>
- <span class="text-right" t-esc="cdrp7" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(cdrp7, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td><strong>Sous-total B</strong></td>
<td>
- <span class="text-right" t-esc="ptb" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(ptb, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td class="text-right"><strong>TOTAL I ( A + B )</strong></td>
<td>
- <span class="text-right" t-esc="pt1" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(pt1, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td><strong>Quotes-parts de r&#xE9;sultat sur op&#xE9;rations faites en commun (II)</strong></td>
<td>
- <span class="text-right" t-esc="cdrp8" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(cdrp8, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
@@ -306,43 +306,43 @@
<tr>
<td>De participation</td>
<td>
- <span class="text-right" t-esc="cdrp9" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(cdrp9, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>D'autres valeurs mobili&#xE8;res et cr&#xE9;ances de l'actif immobilis&#xE9;</td>
<td>
- <span class="text-right" t-esc="cdrp10" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(cdrp10, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Autres int&#xE9;r&#xEA;ts et produits assimil&#xE9;s</td>
<td>
- <span class="text-right" t-esc="cdrp11" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(cdrp11, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Reprises sur provisions, d&#xE9;pr&#xE9;ciations et transferts de charges</td>
<td>
- <span class="text-right" t-esc="cdrp12" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(cdrp12, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Diff&#xE9;rences positives de change</td>
<td>
- <span class="text-right" t-esc="cdrp13" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(cdrp13, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Produits nets sur cessions de valeurs mobili&#xE8;res de placement</td>
<td>
- <span class="text-right" t-esc="cdrp14" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(cdrp14, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td class="text-right"><strong>TOTAL III</strong></td>
<td>
- <span class="text-right" t-esc="pt3" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(pt3, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
@@ -352,37 +352,37 @@
<tr>
<td>Sur op&#xE9;rations de gestion</td>
<td>
- <span class="text-right" t-esc="cdrp15" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(cdrp15, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Sur op&#xE9;rations en capital</td>
<td>
- <span class="text-right" t-esc="cdrp16" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(cdrp16, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td>Reprises sur provisions, d&#xE9;pr&#xE9;ciations et transferts de charges</td>
<td>
- <span class="text-right" t-esc="cdrp17" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(cdrp17, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td class="text-right"><strong>TOTAL IV</strong></td>
<td>
- <span class="text-right" t-esc="pt4" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(pt4, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td class="text-right"><strong>TOTAL DES PRODUITS ( I + II + III + IV )</strong></td>
<td>
- <span class="text-right" t-esc="produits" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(produits, 'monetary', res_company.currency_id)"/>
</td>
</tr>
<tr>
<td class="text-right"><strong>PRODUITS - CHARGES</strong></td>
<td>
- <span class="text-right" t-esc="produits-charges" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
+ <span class="text-right" t-esc="format(produits-charges, 'monetary', res_company.currency_id)"/>
</td>
</tr>
</tbody>
diff --git a/addons/report/models/ir_qweb.py b/addons/report/models/ir_qweb.py
index 6e60f795c6b..68e9673d902 100644
--- a/addons/report/models/ir_qweb.py
+++ b/addons/report/models/ir_qweb.py
@@ -1,7 +1,7 @@
from reportlab.graphics.barcode import createBarcodeDrawing
from openerp.osv import osv
-from openerp.addons.base.ir.ir_qweb import HTMLSafe
+from openerp.addons.base.ir.ir_qweb import unicodifier
class BarcodeConverter(osv.AbstractModel):
@@ -13,12 +13,13 @@ class BarcodeConverter(osv.AbstractModel):
_inherit = 'ir.qweb.field'
def value_to_html(self, cr, uid, value, field, options=None, context=None):
+ options = options or {}
barcode_type = options.get('type', 'Code128')
barcode = self.pool['report'].barcode(
barcode_type,
value,
**dict((key, value) for key, value in options.items() if key in ['width', 'height', 'humanreadable']))
- return HTMLSafe('<img src="data:%s;base64,%s">' % ('png', barcode.encode('base64')))
+ return unicodifier('<img src="data:%s;base64,%s">' % ('png', barcode.encode('base64')))
def from_html(self, cr, uid, model, field, element, context=None):
return None
diff --git a/addons/sale/views/report_invoice_layouted.xml b/addons/sale/views/report_invoice_layouted.xml
index 037298e3aad..bcbf57de207 100644
--- a/addons/sale/views/report_invoice_layouted.xml
+++ b/addons/sale/views/report_invoice_layouted.xml
@@ -58,7 +58,7 @@
<td colspan="6">
<strong>Subtotal: </strong>
<t t-set="subtotal" t-value="sum(line.price_subtotal for line in layout_category['lines'])"/>
- <span t-esc="subtotal" t-esc-options='{"widget": "monetary", "display_currency": "o.currency_id"}'/>
+ <span t-esc="format(subtotal, 'monetary', o.currency_id)"/>
</td>
</tr>
</t>
diff --git a/addons/sale/views/report_saleorder.xml b/addons/sale/views/report_saleorder.xml
index 49ce4ac2bdf..471c7a47ac3 100644
--- a/addons/sale/views/report_saleorder.xml
+++ b/addons/sale/views/report_saleorder.xml
@@ -107,7 +107,7 @@
<td colspan="6">
<strong>Subtotal: </strong>
<t t-set="subtotal" t-value="sum(line.price_subtotal for line in layout_category['lines'])"/>
- <span t-esc="subtotal" t-esc-options='{"widget": "monetary", "display_currency": "doc.pricelist_id.currency_id"}'/>
+ <span t-esc="format(subtotal, 'monetary', doc.pricelist_id.currency_id)"/>
</td>
</tr>
</t>
diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py
index b3c6dc067dd..fb92fc71bb1 100644
--- a/addons/web/controllers/main.py
+++ b/addons/web/controllers/main.py
@@ -32,7 +32,7 @@ except ImportError:
import openerp
import openerp.modules.registry
-from openerp.addons.base.ir.ir_qweb import AssetsBundle, QWebTemplateNotFound
+from openerp.addons.base.ir.ir_qweb import AssetsBundle
from openerp.modules import get_resource_path
from openerp.tools import topological_sort
from openerp.tools.translate import _
diff --git a/addons/web_editor/models/ir_qweb.py b/addons/web_editor/models/ir_qweb.py
index f6758536780..b6082bc0597 100644
--- a/addons/web_editor/models/ir_qweb.py
+++ b/addons/web_editor/models/ir_qweb.py
@@ -6,6 +6,7 @@ as well as render a few fields differently.
Also, adds methods to convert values back to openerp models.
"""
+import ast
import cStringIO
import datetime
import itertools
@@ -23,6 +24,8 @@ from lxml import etree, html
from PIL import Image as I
import openerp.modules
+from odoo import api
+
import openerp
from openerp.osv import orm, fields
from openerp.tools import ustr, DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT
@@ -43,20 +46,26 @@ class QWeb(orm.AbstractModel):
re_remove_spaces = re.compile('\s+')
- def render_tag_snippet(self, element, template_attributes, generated_attributes, qwebcontext):
- cr = qwebcontext['request'].cr
- uid = qwebcontext['request'].uid
- view_reg = self.pool['ir.ui.view']
- page_xmlid = self.eval_format(template_attributes["snippet"], qwebcontext)
- view = view_reg.browse(cr, uid, view_reg.search(cr, uid, [('key', '=', page_xmlid)]))
- generated_attributes += " " + "".join([
- 'data-oe-name="%s"' % view.name,
- 'data-oe-type="snippet"',
- 'data-oe-thumbnail="%s"' % template_attributes.get('thumbnail', "oe-thumbnail")])
+ def _compile_directive_snippet(self, el, ast_calls):
+ el.set('t-call', el.attrib.pop('t-snippet'))
+ qwebcontext = ir_qweb.QWebContext(self.env, {})
+ name = self.env['ir.ui.view'].search([('key', '=', el.attrib.get('t-call'))]).display_name
+ thumbnail = el.attrib.pop('t-thumbnail', "oe-thumbnail")
+ div = u'<div name="%s" data-oe-type="snippet" data-oe-thumbnail="%s">' % (escape(ir_qweb.unicodifier(name)), escape(ir_qweb.unicodifier(thumbnail)))
+ return [self._append(ast.Str(div))] + self._compile_node(el, ast_calls) + [self._append(ast.Str(u'</div>'))]
+
+ def _compile_directive_tag(self, el, ast_calls):
+ if el.get('t-placeholder'):
+ el.set('t-att-placeholder', el.attrib.pop('t-placeholder'))
+ return super(QWeb, self)._compile_directive_tag(el, ast_calls)
- template_attributes['call'] = template_attributes['snippet']
- return self.render_tag_call(element, template_attributes, generated_attributes, qwebcontext)
+ def _directives_eval_order(self):
+ directives = super(QWeb, self)._directives_eval_order()
+ directives.insert(directives.index('call'), 'snippet')
+ return directives
+ def _nondirectives_ignore(self):
+ return {'t-thumbnail'} | super(QWeb, self)._nondirectives_ignore()
#------------------------------------------------------
# QWeb fields
@@ -67,36 +76,28 @@ class Field(orm.AbstractModel):
_name = 'ir.qweb.field'
_inherit = 'ir.qweb.field'
- def attributes(self, cr, uid, field_name, record, options,
- source_element, g_att, t_att, qweb_context, context=None):
- if options is None:
- options = {}
- field = record._model._fields[field_name]
- attrs = []
+ @api.model
+ def attributes(self, record, field_name, options, qwebcontext):
+ attrs = super(Field, self).attributes(record, field_name, options, qwebcontext)
+ field = record._fields[field_name]
- placeholder = options.get('placeholder') \
- or source_element.get('placeholder') \
- or getattr(field, 'placeholder', None)
+ placeholder = options.get('placeholder') or getattr(field, 'placeholder', None)
if placeholder:
- attrs.append(('placeholder', placeholder))
+ attrs['placeholder'] = placeholder
- if context and context.get('edit_translations') and context.get('translatable') and field.type in ('char', 'text') and field.translate:
+ if options['translate'] and field.type in ('char', 'text'):
name = "%s,%s" % (record._model._name, field_name)
- domain = [('name', '=', name), ('res_id', '=', record.id), ('type', '=', 'model'), ('lang', '=', context.get('lang'))]
+ domain = [('name', '=', name), ('res_id', '=', record.id), ('type', '=', 'model'), ('lang', '=', qwebcontext.env.context.get('lang'))]
translation = record.env['ir.translation'].search(domain, limit=1)
- attrs.append(('data-oe-translation-state', translation and translation.state or 'to_translate'))
+ attrs['data-oe-translation-state'] = translation and translation.state or 'to_translate'
- return itertools.chain(
- super(Field, self).attributes(cr, uid, field_name, record, options,
- source_element, g_att, t_att,
- qweb_context, context=context),
- attrs
- )
+ return attrs
def value_from_string(self, value):
return value
- def from_html(self, cr, uid, model, field, element, context=None):
+ @api.model
+ def from_html(self, model, field, element):
return self.value_from_string(element.text_content().strip())
@@ -111,8 +112,9 @@ class Float(orm.AbstractModel):
_name = 'ir.qweb.field.float'
_inherit = 'ir.qweb.field.float'
- def from_html(self, cr, uid, model, field, element, context=None):
- lang = self.user_lang(cr, uid, context=context)
+ @api.model
+ def from_html(self, model, field, element):
+ lang = self.user_lang()
value = element.text_content().strip()
@@ -124,32 +126,26 @@ class ManyToOne(orm.AbstractModel):
_name = 'ir.qweb.field.many2one'
_inherit = 'ir.qweb.field.many2one'
- def attributes(self, cr, uid, field_name, record, options,
- source_element, g_att, t_att, qweb_context,
- context=None):
- attrs = super(ManyToOne, self).attributes(
- cr, uid, field_name, record, options, source_element, g_att, t_att,
- qweb_context, context=context)
+ @api.model
+ def attributes(self, record, field_name, options, qwebcontext):
+ attrs = super(ManyToOne, self).attributes(record, field_name, options, qwebcontext)
many2one = getattr(record, field_name)
if many2one:
- data = [('data-oe-many2one-id', many2one.id),
- ('data-oe-many2one-model', many2one._name)]
- return itertools.chain(attrs, data)
- else:
- return attrs
+ attrs['data-oe-many2one-id'] = many2one.id
+ attrs['data-oe-many2one-model'] = many2one._name
+ return attrs
- def from_html(self, cr, uid, model, field, element, context=None):
- Model = self.pool[element.get('data-oe-model')]
- M2O = self.pool[field.comodel_name]
- field_name = element.get('data-oe-field')
+ @api.model
+ def from_html(self, model, field, element):
+ Model = self.env[element.get('data-oe-model')]
id = int(element.get('data-oe-id'))
+ M2O = self.env[field.comodel_name]
+ field_name = element.get('data-oe-field')
many2one_id = int(element.get('data-oe-many2one-id'))
-
- if many2one_id and M2O.exists(cr, uid, [many2one_id]):
+ record = many2one_id and M2O.browse(many2one_id)
+ if record and record.exists():
# save the new id of the many2one
- Model.write(cr, uid, [id], {
- field_name: many2one_id
- }, context=context)
+ Model.browse(id).write({field_name: many2one_id})
# not necessary, but might as well be explicit about it
return None
@@ -159,22 +155,18 @@ class Contact(orm.AbstractModel):
_name = 'ir.qweb.field.contact'
_inherit = 'ir.qweb.field.contact'
- def attributes(self, cr, uid, field_name, record, options,
- source_element, g_att, t_att, qweb_context,
- context=None):
- attrs = super(Contact, self).attributes(
- cr, uid, field_name, record, options, source_element, g_att, t_att,
- qweb_context, context=context)
- if getattr(record, field_name):
- return itertools.chain(attrs, [('data-oe-contact-options', json.dumps(options))])
- else:
- return attrs
+ @api.model
+ def attributes(self, record, field_name, options, qwebcontext):
+ attrs = super(Contact, self).attributes(record, field_name, options, qwebcontext)
+ attrs['data-oe-contact-options'] = json.dumps(options)
+ return attrs
# helper to call the rendering of contact field
- def get_record_to_html(self, cr, uid, ids, options=None, context=None):
- node = self.record_to_html(cr, uid, 'record', {
- 'record': self.pool['res.partner'].browse(cr, uid, ids[0], context=context)},
- options=options, context=context)
+ @api.model
+ def get_record_to_html(self, ids, options=None):
+ node = self.record_to_html('record', {
+ 'record': self.env['res.partner'].browse(ids[0])},
+ options=options)
return node and node.__html__()
@@ -193,15 +185,14 @@ class Date(orm.AbstractModel):
_name = 'ir.qweb.field.date'
_inherit = 'ir.qweb.field.date'
- def attributes(self, cr, uid, field_name, record, options,
- source_element, g_att, t_att, qweb_context,
- context=None):
- attrs = super(Date, self).attributes(
- cr, uid, field_name, record, options, source_element, g_att, t_att,
- qweb_context, context=None)
- return itertools.chain(attrs, [('data-oe-original', record[field_name])])
+ @api.model
+ def attributes(self, record, field_name, options, qwebcontext):
+ attrs = super(Date, self).attributes(record, field_name, options, qwebcontext)
+ attrs['data-oe-original'] = record[field_name]
+ return attrs
- def from_html(self, cr, uid, model, field, element, context=None):
+ @api.model
+ def from_html(self, model, field, element):
value = element.text_content().strip()
if not value:
return False
@@ -214,9 +205,9 @@ class DateTime(orm.AbstractModel):
_name = 'ir.qweb.field.datetime'
_inherit = 'ir.qweb.field.datetime'
- def attributes(self, cr, uid, field_name, record, options,
- source_element, g_att, t_att, qweb_context,
- context=None):
+ @api.model
+ def attributes(self, record, field_name, options, qwebcontext):
+ attrs = super(DateTime, self).attributes(record, field_name, options, qwebcontext)
value = record[field_name]
if isinstance(value, basestring):
value = datetime.datetime.strptime(
@@ -224,19 +215,13 @@ class DateTime(orm.AbstractModel):
if value:
# convert from UTC (server timezone) to user timezone
value = fields.datetime.context_timestamp(
- cr, uid, timestamp=value, context=context)
+ self._cr, self._uid, timestamp=value, context=qwebcontext.context)
value = value.strftime(DEFAULT_SERVER_DATETIME_FORMAT)
+ attrs['data-oe-original'] = value
+ return attrs
- attrs = super(DateTime, self).attributes(
- cr, uid, field_name, record, options, source_element, g_att, t_att,
- qweb_context, context=None)
- return itertools.chain(attrs, [
- ('data-oe-original', value)
- ])
-
- def from_html(self, cr, uid, model, field, element, context=None):
- if context is None:
- context = {}
+ @api.model
+ def from_html(self, model, field, element):
value = element.text_content().strip()
if not value:
return False
@@ -245,8 +230,7 @@ class DateTime(orm.AbstractModel):
dt = parser.parse(value)
# convert back from user's timezone to UTC
- tz_name = context.get('tz') \
- or self.pool['res.users'].read(cr, openerp.SUPERUSER_ID, uid, ['tz'], context=context)['tz']
+ tz_name = self.env.context.get('tz') or self.env.user.tz
if tz_name:
try:
user_tz = pytz.timezone(tz_name)
@@ -268,7 +252,8 @@ class Text(orm.AbstractModel):
_name = 'ir.qweb.field.text'
_inherit = 'ir.qweb.field.text'
- def from_html(self, cr, uid, model, field, element, context=None):
+ @api.model
+ def from_html(self, model, field, element):
return html_to_text(element)
@@ -276,10 +261,10 @@ class Selection(orm.AbstractModel):
_name = 'ir.qweb.field.selection'
_inherit = 'ir.qweb.field.selection'
- def from_html(self, cr, uid, model, field, element, context=None):
- record = self.browse(cr, uid, [], context=context)
+ @api.model
+ def from_html(self, model, field, element):
value = element.text_content().strip()
- selection = field.get_description(record.env)['selection']
+ selection = field.get_description(self.env)['selection']
for k, v in selection:
if isinstance(v, str):
v = ustr(v)
@@ -294,7 +279,8 @@ class HTML(orm.AbstractModel):
_name = 'ir.qweb.field.html'
_inherit = 'ir.qweb.field.html'
- def from_html(self, cr, uid, model, field, element, context=None):
+ @api.model
+ def from_html(self, model, field, element):
content = []
if element.text:
content.append(element.text)
@@ -313,20 +299,13 @@ class Image(orm.AbstractModel):
_name = 'ir.qweb.field.image'
_inherit = 'ir.qweb.field.image'
- def to_html(self, cr, uid, field_name, record, options,
- source_element, t_att, g_att, qweb_context, context=None):
- assert source_element.tag != 'img',\
+ @api.model
+ def record_to_html(self, record, field_name, options, qwebcontext=None):
+ assert options['tagName'] != 'img',\
"Oddly enough, the root tag of an image field can not be img. " \
"That is because the image goes into the tag, or it gets the " \
"hose again."
- return super(Image, self).to_html(
- cr, uid, field_name, record, options,
- source_element, t_att, g_att, qweb_context, context=context)
-
- def record_to_html(self, cr, uid, field_name, record, options=None, context=None):
- if options is None:
- options = {}
aclasses = ['img', 'img-responsive'] + options.get('class', '').split()
classes = ' '.join(itertools.imap(escape, aclasses))
@@ -350,11 +329,12 @@ class Image(orm.AbstractModel):
img = '<img class="%s" src="%s" style="%s"%s/>' % \
(classes, src, options.get('style', ''), ' alt="%s"' % alt if alt else '')
- return ir_qweb.HTMLSafe(img)
+ return ir_qweb.unicodifier(img)
local_url_re = re.compile(r'^/(?P<module>[^]]+)/static/(?P<rest>.+)$')
- def from_html(self, cr, uid, model, field, element, context=None):
+ @api.model
+ def from_html(self, model, field, element):
url = element.find('img').get('src')
url_object = urlparse.urlsplit(url)
@@ -370,7 +350,7 @@ class Image(orm.AbstractModel):
model = query.get('model', fragments[3])
oid = query.get('id', fragments[4].split('_')[0])
field = query.get('field', fragments[5])
- item = self.pool[model].browse(cr, uid, int(oid), context=context)
+ item = self.env[model].browse(int(oid))
return item[field]
if self.local_url_re.match(url_object.path):
@@ -432,8 +412,9 @@ class Monetary(orm.AbstractModel):
_name = 'ir.qweb.field.monetary'
_inherit = 'ir.qweb.field.monetary'
- def from_html(self, cr, uid, model, field, element, context=None):
- lang = self.user_lang(cr, uid, context=context)
+ @api.model
+ def from_html(self, model, field, element):
+ lang = self.user_lang()
value = element.find('span').text.strip()
@@ -445,15 +426,14 @@ class Duration(orm.AbstractModel):
_name = 'ir.qweb.field.duration'
_inherit = 'ir.qweb.field.duration'
- def attributes(self, cr, uid, field_name, record, options,
- source_element, g_att, t_att, qweb_context,
- context=None):
- attrs = super(Duration, self).attributes(
- cr, uid, field_name, record, options, source_element, g_att, t_att,
- qweb_context, context=None)
- return itertools.chain(attrs, [('data-oe-original', record[field_name])])
+ @api.model
+ def attributes(self, record, field_name, options, qwebcontext):
+ attrs = super(Duration, self).attributes(record, field_name, options, qwebcontext)
+ attrs['data-oe-original'] = record[field_name]
+ return attrs
- def from_html(self, cr, uid, model, field, element, context=None):
+ @api.model
+ def from_html(self, model, field, element):
value = element.text_content().strip()
# non-localized value
diff --git a/addons/web_editor/models/ir_ui_view.py b/addons/web_editor/models/ir_ui_view.py
index 01082efb37b..762312bc28f 100644
--- a/addons/web_editor/models/ir_ui_view.py
+++ b/addons/web_editor/models/ir_ui_view.py
@@ -37,18 +37,17 @@ class view(osv.osv):
def extract_embedded_fields(self, cr, uid, arch, context=None):
return arch.xpath('//*[@data-oe-model != "ir.ui.view"]')
- def save_embedded_field(self, cr, uid, el, context=None):
- Model = self.pool[el.get('data-oe-model')]
+ @api.model
+ def save_embedded_field(self, el):
+ Model = self.env[el.get('data-oe-model')]
field = el.get('data-oe-field')
- converter = self.pool['ir.qweb'].get_converter_for(el.get('data-oe-type'))
- value = converter.from_html(cr, uid, Model, Model._fields[field], el)
+ converter = self.env['ir.qweb'].get_field_for(el.get('data-oe-type'))
+ value = converter.from_html(Model, Model._fields[field], el)
if value is not None:
# TODO: batch writes?
- Model.write(cr, uid, [int(el.get('data-oe-id'))], {
- field: value
- }, context=context)
+ Model.browse(int(el.get('data-oe-id'))).write({field: value})
def _pretty_arch(self, arch):
# remove_blank_string does not seem to work on HTMLParser, and
diff --git a/addons/web_editor/models/test_models.py b/addons/web_editor/models/test_models.py
index 100b49b6448..716e42a4dc3 100644
--- a/addons/web_editor/models/test_models.py
+++ b/addons/web_editor/models/test_models.py
@@ -21,7 +21,7 @@ class test_converter(orm.Model):
(1, "réponse A"),
(2, "réponse B"),
(3, "réponse C"),
- (4, "réponse D"),
+ (4, "réponse <D>"),
]),
'selection_str': fields.selection([
('A', "Qu'il n'est pas arrivé à Toronto"),
diff --git a/addons/web_editor/static/src/js/snippets.editor.js b/addons/web_editor/static/src/js/snippets.editor.js
index ef033dc07f3..ee0e07e4514 100644
--- a/addons/web_editor/static/src/js/snippets.editor.js
+++ b/addons/web_editor/static/src/js/snippets.editor.js
@@ -213,8 +213,8 @@ var BuildingBlock = Widget.extend({
}).on('click', function () {$(this).tooltip('hide');});
// t-snippet
- $html.find('[data-oe-type="snippet"][data-oe-name]').each(function () {
- var $div = $('<div/>').insertAfter(this).append(this).attr('name', $(this).data('oe-name'));
+ $html.find('[data-oe-type="snippet"]').each(function () {
+ $(this).children().attr('data-oe-type', "snippet").attr('data-oe-thumbnail', $(this).data('oe-thumbnail'));
});
// end
diff --git a/addons/website/models/ir_http.py b/addons/website/models/ir_http.py
index a448b9d8554..434aa42de88 100644
--- a/addons/website/models/ir_http.py
+++ b/addons/website/models/ir_http.py
@@ -11,7 +11,7 @@ import werkzeug.utils
import openerp
from openerp.addons.base import ir
-from openerp.addons.base.ir import ir_qweb
+from odoo.exceptions import QWebException
from openerp.addons.website.models.website import slug, url_for, _UNSLUG_RE
from openerp.http import request
from openerp.tools import config
@@ -247,7 +247,7 @@ class ir_http(orm.AbstractModel):
# if parent excplicitely returns a plain response, then we don't touch it
return response
except Exception, e:
- if 'werkzeug' in config['dev_mode'] and (not isinstance(exception, ir_qweb.QWebException) or not exception.qweb.get('cause')):
+ if 'werkzeug' in config['dev_mode'] and (not isinstance(exception, QWebException) or not exception.qweb.get('cause')):
raise
exception = e
@@ -267,7 +267,7 @@ class ir_http(orm.AbstractModel):
if isinstance(exception, openerp.exceptions.AccessError):
code = 403
- if isinstance(exception, ir_qweb.QWebException):
+ if isinstance(exception, QWebException):
values.update(qweb_exception=exception)
if isinstance(exception.qweb.get('cause'), openerp.exceptions.AccessError):
code = 403
diff --git a/addons/website/models/ir_qweb.py b/addons/website/models/ir_qweb.py
index fcfb93b59c0..c8c0fe64613 100644
--- a/addons/website/models/ir_qweb.py
+++ b/addons/website/models/ir_qweb.py
@@ -1,6 +1,8 @@
# -*- coding: utf-8 -*-
from openerp.addons.web.http import request
from openerp.osv import orm
+import ast
+from openerp.addons.base.ir.ir_qweb import utils
class QWeb(orm.AbstractModel):
@@ -26,24 +28,46 @@ class QWeb(orm.AbstractModel):
'style',
]
- def render_attribute(self, element, name, value, qwebcontext):
+ def _website_build_attribute(self, tagName, name, value, qwebcontext):
context = qwebcontext.context or {}
if not context.get('rendering_bundle'):
- if name == self.URL_ATTRS.get(element.tag) and qwebcontext.get('url_for'):
- value = qwebcontext.get('url_for')(value)
- elif request and getattr(request, 'website', None) and request.website.cdn_activated and (name == self.URL_ATTRS.get(element.tag) or name == self.CDN_TRIGGERS.get(element.tag)):
- value = request.website.get_cdn_url(value)
- return super(QWeb, self).render_attribute(element, name, value, qwebcontext)
-
- def render_text(self, text, element, qwebcontext):
- compress = request and not request.debug and getattr(request, 'website', None) and request.website.compress_html
- if compress and element.tag not in self.PRESERVE_WHITESPACE:
- text = self.re_remove_spaces.sub(' ', text)
- return super(QWeb, self).render_text(text, element, qwebcontext)
-
- def render_tail(self, tail, element, qwebcontext):
- compress = request and not request.debug and getattr(request, 'website', None) and request.website.compress_html
- if compress and element.getparent().tag not in self.PRESERVE_WHITESPACE:
- # No need to recurse because those tags children are not html5 parser friendly
- tail = self.re_remove_spaces.sub(' ', tail.rstrip())
- return super(QWeb, self).render_tail(tail, element, qwebcontext)
+ if name == self.URL_ATTRS.get(tagName) and qwebcontext.get('url_for'):
+ return qwebcontext.get('url_for')(value or '')
+ elif request and request.website and request.website.cdn_activated and (name == self.URL_ATTRS.get(tagName) or name == self.CDN_TRIGGERS.get(tagName)):
+ return request.website.get_cdn_url(value or '')
+ return value
+
+ def _wrap_build_attributes(self, el, items):
+ url_att = self.URL_ATTRS.get(el.tag)
+ cdn_att = self.CDN_TRIGGERS.get(el.tag)
+ for item in items:
+ if isinstance(item, tuple) and (item[0] == url_att or item[0] == cdn_att):
+ items[items.index(item)] = (item[0], ast.Call(
+ func=ast.Attribute(
+ value=ast.Name(id='self', ctx=ast.Load()),
+ attr='_website_build_attribute',
+ ctx=ast.Load()
+ ),
+ args=[
+ ast.Str(el.tag),
+ ast.Str(item[0]),
+ item[1],
+ ast.Name(id='qwebcontext', ctx=ast.Load()),
+ ], keywords=[],
+ starargs=None, kwargs=None
+ ))
+ return items
+
+ def _serialize_static_attributes(self, el):
+ items = super(QWeb, self)._serialize_static_attributes(el)
+ return self._wrap_build_attributes(el, items)
+
+ def _compile_dynamic_attributes(self, el):
+ items = super(QWeb, self)._compile_dynamic_attributes(el)
+ return self._wrap_build_attributes(el, items)
+
+ def _compile_dynamic_att(self, tagName, atts, qwebcontext):
+ atts = super(QWeb, self)._compile_dynamic_att(tagName, atts, qwebcontext)
+ for name, value in atts.iteritems():
+ atts[name] = self.build_attribute(tagName, name, value, qwebcontext)
+ return atts
diff --git a/addons/website_blog/views/website_blog_templates.xml b/addons/website_blog/views/website_blog_templates.xml
index f74ecd39a17..ae4cea4fcff 100644
--- a/addons/website_blog/views/website_blog_templates.xml
+++ b/addons/website_blog/views/website_blog_templates.xml
@@ -139,7 +139,7 @@
<span t-field="blog_post.author_avatar" class="o_not_editable" t-field-options='{"widget": "image", "class": "img-circle pull-right mt16 media-object"}' />
</t>
<a t-attf-href="/blog/#{ slug(blog_post.blog_id) }/post/#{ slug(blog_post) }">
- <h2 t-field="blog_post.name" class="mb4"><t t-if="not blog_post.name">Untitled Post</t></h2>
+ <h2 t-field="blog_post.name" class="mb4">Untitled Post</h2>
</a>
<div class="text-muted">
<h4 t-field="blog_post.subtitle" class="mb4 mt4"></h4>
diff --git a/addons/website_form/controllers/main.py b/addons/website_form/controllers/main.py
index be1bf5aa53a..d30514bfb9f 100644
--- a/addons/website_form/controllers/main.py
+++ b/addons/website_form/controllers/main.py
@@ -10,7 +10,7 @@ from openerp.http import request
from openerp.tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT
from openerp.tools.translate import _
from openerp.exceptions import ValidationError
-from openerp.addons.base.ir.ir_qweb import nl2br
+from openerp.addons.base.ir.ir_qweb.fields import nl2br
class WebsiteForm(http.Controller):
diff --git a/addons/website_payment/views/website_payment_templates.xml b/addons/website_payment/views/website_payment_templates.xml
index 1dc0d39a76a..efc234e81e4 100644
--- a/addons/website_payment/views/website_payment_templates.xml
+++ b/addons/website_payment/views/website_payment_templates.xml
@@ -106,7 +106,7 @@
<div class="col-sm-9">
<span name="form_amount" class="form-control" t-esc="amount"/>
<!--
- <span name="form_amount" class="form-control" t-esc="amount" t-esc-options='{"widget": "monetary", "display_currency": "currency"}'/>
+ <span name="form_amount" class="form-control" t-esc="format(amount, 'monetary', currency)"/>
-->
</div>
</div>
@@ -149,7 +149,7 @@
<div class="form-group">
<label for="form_amount" class="col-sm-3 control-label">Amount</label>
<div class="col-sm-9">
- <span name="form_amount" class="form-control" t-esc="tx.amount" t-esc-options='{"widget": "monetary", "display_currency": "tx.currency_id"}'/>
+ <span name="form_amount" class="form-control" t-esc="format(tx.amount, 'monetary', tx.currency_id)"/>
</div>
</div>
<div class="col-sm-12">
diff --git a/addons/website_quote/views/website_quotation.xml b/addons/website_quote/views/website_quotation.xml
index 0e5795aadba..19ea291b2ca 100644
--- a/addons/website_quote/views/website_quotation.xml
+++ b/addons/website_quote/views/website_quotation.xml
@@ -88,7 +88,7 @@
<td class="text-right" style="padding-bottom: 32px"><strong>Subtotal:</strong></td>
<td class="text-right" style="padding-bottom: 32px">
<t t-set="subtotal" t-value="sum(line.price_subtotal for line in layout_category['lines'])"/>
- <strong data-id="total_amount" t-esc="subtotal" t-esc-options='{"widget": "monetary","display_currency": "quotation.pricelist_id.currency_id"}'/>
+ <strong data-id="total_amount" t-esc="format(subtotal, 'monetary', quotation.pricelist_id.currency_id)"/>
</td>
<td></td>
</tr>
diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py
index 88a69e08acd..c059ca2692c 100644
--- a/addons/website_sale/controllers/main.py
+++ b/addons/website_sale/controllers/main.py
@@ -615,7 +615,6 @@ class WebsiteSale(http.Controller):
@http.route(['/shop/confirm_order'], type='http', auth="public", website=True)
def confirm_order(self, **post):
-
order = request.website.sale_get_order()
if not order:
return request.redirect("/shop")