How to Implement text_from_html()  in Odoo?

What is self.env.ref()?

self.env.ref() is a method used in Odoo to retrieve a specific record using its external XML ID (also known as xml_id or record reference).
This is commonly used to access static records such as:
  • Views
  • Actions
  • Security groups
  • Email templates
  • Configuration parameters
  • Company data
✅ Syntax

record = self.env.ref(‘module_name.xml_id’)

  • module_name.xml_id must be a valid external ID defined in XML/CSV files.

Returns: A recordset of the referenced object (e.g., a group, template, etc.)

📌 Realistic Use Cases in Odoo

1. Get an Email Template and Send Email

template = self.env.ref(‘sale.email_template_edi_sale’)

template.send_mail(self.id, force_send=True)

Used in workflows to send automated emails from a predefined template.

2. Add User to a Group via XML ID

group = self.env.ref(‘base.group_user’# Internal User group

user = self.env.user

user.write({‘groups_id’: [(4, group.id)]})

Used in user role assignment during custom onboarding flows or wizards.

3. Load a Custom View or Action

form_view = self.env.ref(‘sale.view_order_form’)

return {

    ‘type’: ‘ir.actions.act_window’,

    ‘name’: ‘Sales Order’,

    ‘res_model’: ‘sale.order’,

    ‘view_mode’: ‘form’,

    ‘view_id’: form_view.id,

    ‘target’: ‘current’,

}

Used in buttons or server actions to open specific views.

4. Access Configuration Parameter or Company Record

company = self.env.ref(‘base.main_company’)

print(company.name)

Helpful when performing actions that require company context.

⚠️ Common Errors

  • KeyError: Raised if the XML ID does not exist.
  • Best practice: Use self.env.ref() only when the XML ID is guaranteed to exist.

To avoid crashes in uncertain contexts, use:

record = self.env.ref(‘module.xml_id’, raise_if_not_found=False)

✅ Summary Table

Method Purpose Use Case
self.env.ref() Fetch record by XML ID Email templates, groups, views, etc.
raise_if_not_found Optional flag to suppress error Safer lookups