social/mail_gateway/wizards/mail_guest_manage.py

59 lines
1.8 KiB
Python

# Copyright 2024 Dixmit
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import fields, models
class MailGuestManage(models.TransientModel):
_name = "mail.guest.manage"
_description = "Assign gateway guest to a partner"
guest_id = fields.Many2one("mail.guest", required=True)
partner_id = fields.Many2one("res.partner")
def create_partner(self):
partner = self.env["res.partner"].create(self._get_partner_vals())
self._merge_partner(partner)
return partner.get_formview_action()
def _get_partner_vals(self):
return {
"name": self.guest_id.name,
}
def _merge_partner(self, partner):
self.env["res.partner.gateway.channel"].create(
{
"name": self.guest_id.gateway_id.name,
"partner_id": partner.id,
"gateway_id": self.guest_id.gateway_id.id,
"gateway_token": self.guest_id.gateway_token,
}
)
for member in self.env["mail.channel.member"].search(
[("guest_id", "=", self.guest_id.id)]
):
self.env["mail.channel.member"].create(
self._channel_member_vals(member, partner)
)
member.unlink()
self.env["mail.message"].search(
[("author_guest_id", "=", self.guest_id.id)]
).write(
{
"author_id": partner.id,
}
)
def _channel_member_vals(self, member, partner):
return {
"guest_id": False,
"channel_id": member.channel_id.id,
"partner_id": partner.id,
}
def merge_partner(self):
self._merge_partner(self.partner_id)
return self.partner_id.get_formview_action()