TIP: You can type at any time to perform a new search.
Templates for email templates
email_template_template · OCA/server-tools
Security findings
Migration considerations
- Imports from the old `openerp.osv.orm` namespace: renamed to `odoo` since Odoo 10.0. migration-openerp-import · source
- Imports from the old `openerp.osv` namespace: renamed to `odoo` since Odoo 10.0. migration-openerp-import · source
- Imports from the old `openerp.addons.email_template.email_template` namespace: renamed to `odoo` since Odoo 10.0. migration-openerp-import · source
email_template— Class 'email_template' declares `_columns` as a plain dict: old-style field/default declarations, replace with `fields.X(...)` class attributes and `default=`. migration-old-style-fields · sourceemail_template_form— For a target of Odoo 17.0+: view 'email_template_form' uses `attrs=`/`states=`, which are no longer supported. Convert modifiers to direct Python boolean expressions in `invisible`/`readonly`/`required`; preserve the original AND/OR logic. migration-view-attrs-states · source
Migration review checklist, not a compatibility verdict. No target version is selected: apply version-specific advice only when migrating to that version or later.
- Repository
- OCA/server-tools · module folder · Try on Runboat
- Module version
- 1.0
- Category
- Tools
- Folder size
- 0.01 MB
- License
- AGPL-3
- Application
- No
- Auto-installable
- No
- Website
- http://therp.nl
- Last tracking update
- 2026-08-07 07:17:48
- Authors
- Odoo Community Association (OCA), Therp BV
- Maintainers
- Odoo Community Association (OCA), Therp BV
- Committers
- Pedro M. Baeza, Stéphane Bidoul (ACSONE)
- Odoo dependencies
- None
- Python dependencies
- None
- System dependencies
- None
- Required by
- None
- Description
If an organisation's email layout is a bit more complicated, changes can be tedious when having to do that across several email templates. So this addon allows to define templates for mails that is referenced by other mail templates. This way we can put the layout parts into the template template and only content in the other templates. Changing the layout is then only a matter of changing the template template. ----- Usage ----- Create an email template with the related document model 'Email Templates'. Now most of the fields gray out and you can only edit body_text and body_html. Be sure to use ${body_text} and ${body_html} respectively in your template template. Then select this newly created template templates in one of your actual templates. For example, create a template template :: Example Corp logo Example Corp header ${object.body_text} <- this gets evaluated to the body_text of a template using this template template Example Corp Example street 42 Example city Example Corp footer Then in your template you write :: Dear ${object.partner_id.name}, Your order has been booked on date ${object.date} for a total amount of ${object.sum}. And it will be evaluated to :: Example Corp logo Example Corp header Dear Jane Doe, Your order has been booked on date 04/17/2013 for a total amount of 42. Example Corp Example street 42 Example city Example Corp footer Given the way evaluation works internally (body_text of the template template is evaluated two times, first with the instance of email.template of your own template, then with the object your template refers to), you can do some trickery if you know that a template template is always used with the same kind of model (that is, models that have the same field name): In your template template: :: Dear ${'${object.name}'}, <-- gets evaluated to "${object.name}" in the first step, then to the content of object.name ${object.body_html} Best, Example Corp
Code Analysis
Views touched (1)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
email_template_form |
email.template.form | email.template | form | Inherits email_template.email_template_form |
HTTP endpoints (0)
No HTTP endpoints found for this module.
Models touched (1)
New fields (0)
No new fields.
Public methods (1)-
get_email_template(self, cr, uid, template_id=False, record_id=None, context=None)
Loading…
Loading…
Loading…
Loading…