项目评级

Sid*_*nda 5 odoo odoo-15

我知道其功能流程project.task是当您更改状态以completed声明在中创建评级记录时rating.rating。但我无法找出哪种方法负责在该模型中创建记录。

在状态更改为completestate 后,我也尝试使用函数从 rating. rating 模型获取访问令牌,但也无法获取:

rating_rec = self.env["rating.rating"].sudo().search([('partner_id', '=', self.partner_id.id), ('res_id', '=', self.id)], order='id desc', limit=1)
Run Code Online (Sandbox Code Playgroud)

我仍然没有找到创建评级记录或获取该记录的访问令牌的方法,

rating.rating我想在模型中为该特定任务创建记录后添加一个功能。

CZo*_*ner 1

它是在带有 xml id 的邮件模板上完成的rating_project_request_email_template。第一行有一个调用object.rating_get_access_token(),如果还没有的话,将创建一个评级。邮件本身将根据您的项目/阶段中的设置发送。

<div>
    <t t-set="access_token" t-value="object.rating_get_access_token()"/>
<!-- ... -->
</div>
Run Code Online (Sandbox Code Playgroud)

令牌方法位于rating.mixin

def rating_get_access_token(self, partner=None):
    """ Return access token linked to existing ratings, or create a new rating
    that will create the asked token. An explicit call to access rights is
    performed as sudo is used afterwards as this method could be used from
    different sources, notably templates. """
    self.check_access_rights('read')
    self.check_access_rule('read')
    if not partner:
        partner = self.rating_get_partner_id()
    rated_partner = self.rating_get_rated_partner_id()
    ratings = self.rating_ids.sudo().filtered(lambda x: x.partner_id.id == partner.id and not x.consumed)
    if not ratings:
        rating = self.env['rating.rating'].sudo().create({
            'partner_id': partner.id,
            'rated_partner_id': rated_partner.id,
            'res_model_id': self.env['ir.model']._get_id(self._name),
            'res_id': self.id,
            'is_internal': False,
        })
    else:
        rating = ratings[0]
    return rating.access_token
Run Code Online (Sandbox Code Playgroud)