Skip to Content
Menu
This question has been flagged
1 Reply
2197 Views

Hello 

Here my code : 

    partner_id = self.env['res.partner'].browse([vals['partner_id']])

    # Get partner form url
    base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
    url = f"{base_url}/web#id={vals['partner_id']}&action=77&model=res.partner&view_type=form&cids=3&menu_id=68" \
        if base_url else "#"

    # Get template and change body
    template_id = self.env['mail.template'].browse([int(mail_template_id)])
    body = template_id.body_html
    if "%nomoperateur" not in body or "%nomclient" not in body or "%lien-fiche-contact-client" not in body:
        raise ValidationError(
            "Il est impossible d'utiliser le modèle d'email configuré dans l'état car "
            "il manque une ou plusieurs informations :\n"
            "%nomoperateur ou %nomclient ou %lien-fiche-contact-client"
        )

    # Update body
    body = body.replace('%nomoperateur', user_id.name)
    body = body.replace('%nomclient', partner_id.name)
    body = body.replace('%lien-fiche-contact-client', url)

    # Prepare email data
    email_values = {
        'email_from': user_id.name,
        'email_to': email_to,
        'email_cc': user_id.partner_id.email,
        'subject': template_id.subject,
        'body_html': body,
    }

    # Send mail
    mail_id = self.env['mail.mail'].create(email_values)
    mail_id.send()

This URL works as long as we are on this basis. However, it may no longer work in the event of a database change because identifiers are written in hard. Do you have a solution ?


Thanks !

Avatar
Discard
Author Best Answer

Solution :

def _get_full_url(self, partner_id):
    base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
    url_params = {
        'id': partner_id,
        'action': self.env.ref('contacts.action_contacts').id,
        'model': 'res.partner',
        'view_type': 'form',
        'menu_id': self.env.ref('contacts.menu_contacts').id,
    }
    params = '/web?#%s' % url_encode(url_params)

    return base_url + params if base_url else "#"


Avatar
Discard
Related Posts Replies Views Activity
1
Jun 23
5004
2
Dec 22
23664
0
Oct 15
4527
5
Oct 24
31828
2
Jul 24
7401