mirror of https://github.com/OCA/social.git
59 lines
1.8 KiB
Python
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()
|