46 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
| import logging
 | |
| 
 | |
| from odoo import models, api
 | |
| from odoo.tools import pycompat
 | |
| 
 | |
| _logger = logging.getLogger(__name__)
 | |
| 
 | |
| 
 | |
| class MailTemplate(models.Model):
 | |
|     "Templates for sending email"
 | |
|     _inherit = "mail.template"
 | |
| 
 | |
|     @api.model
 | |
|     def render_template(self, template_txt, model, res_ids, post_process=False):
 | |
|         """Add company_id to context to force use that company when
 | |
|         get_param('web.base.url') is called in a method which replaces local links (links
 | |
|         without hostname, e.g. '/my/orders/1')
 | |
| 
 | |
|         """
 | |
|         company_id = self.env.context.get('company_id')
 | |
|         if company_id:
 | |
|             return super(MailTemplate, self).render_template(template_txt, model, res_ids, post_process=post_process)
 | |
| 
 | |
|         multi_mode = True
 | |
|         if isinstance(res_ids, pycompat.integer_types):
 | |
|             multi_mode = False
 | |
|             res_ids = [res_ids]
 | |
| 
 | |
|         results = dict.fromkeys(res_ids, u"")
 | |
| 
 | |
|         records = self.env[model].browse(filter(None, res_ids))  # filter to avoid browsing [None]
 | |
|         for r in records:
 | |
|             if hasattr(r, 'company_id'):
 | |
|                 company_id = r.company_id.id
 | |
|             else:
 | |
|                 # while ir_config_parameter_multi_company takes company_id
 | |
|                 # from user by default, it doesn't work if sudo is called
 | |
|                 # somewhere (especially it's important in odoo 11.0 where
 | |
|                 # you cannot use get_param without sudo)
 | |
|                 company_id = self.env.user.company_id.id
 | |
|             new_self = self.with_context(company_id=company_id)
 | |
|             res = super(MailTemplate, new_self).render_template(template_txt, model, r.id, post_process=post_process)
 | |
|             results[r.id] = res
 | |
| 
 | |
|         return multi_mode and results or results[res_ids[0]]
 |