Odoo Python:如何使用 Odoo python 后端将电话号码复制/转发到用户的设备如 <href="tel:"> 行为?

问题描述

假设在 odoo 表单中,我有一个按钮。此按钮将触发 odoo 后端中的 python 方法搜索 PIC,然后将 PIC 的 phone_number 转发/复制到用户的设备,以便用户可以使用他们的设备拨打 PIC。>

令人担忧的是,PIC 正在加班更换。我的意思是,图片将是 根据班次安排。所以,如果我附上 PIC 或电话号码 表单视图,它会出现问题:用户将打开表单视图, 花点时间查看数据,滚动片刻,然后单击 在另一分钟调用图片,但现在图片可能不同。这就是为什么 我需要用python的方式实现它。

它就像<href="tel:">中的html,但我需要先搜索phone_number

def search_n_call_pic(self,input):
    # search the responsible_pic
    pic_object = self.search_pic(input)
    
    # get the pic's phone number
    pic_phone_number = pic_object.phone
    
    self.forward_this_phone_number_to_user_device(pic_phone_number)

我需要实现这个方法"forward_this_phone_number_to_user_device",以便它具有与使用 html 相同的行为:

<a href="tel:pic_phone_number">pic_phone_number</a> 

但我必须在 python 中实现它。

请帮忙,谢谢。

解决方法

假设您在 pic_phone_number 模型上有 res.users 字段。并且您想在模型 tel: 上显示 crm.lead URI。

首先,您必须在模型 crm.lead 上创建一个新的计算域:


pic_phone_number_uri = fields.Char(compute="_compute_pic_phone_number_uri")

def _compute_pic_phone_number_uri(self):
    user_phone = self.env.user.pic_phone_number
    user_uri = "tel:{}".format(user_phone)
    for record in self:
        record.pic_phone_number_uri = user_uri

现在只需将此字段添加到带有小部件 url 的表单视图中。

<field name="pic_phone_number_uri" widget="url" readonly="1" />

如果您使用的是 Odoo 13 或更高版本,您可以使用 phone 小部件并且可以跳过在计算中添加 tel:

<field name="pic_phone_number_uri" widget="phone" readonly="1" />