向导业务逻辑

来自Odoo V
跳转至: 导航搜索

接下来,我们需要实现对窗体按钮执行操作。排除Cancel按钮,我们有三个操作按钮来实现,但现在我们将集中使用Mass Update按钮。

通过按钮调用的方法是do_mass_update和它应该被定义在models/todo_wizard_model.py文件,如下面的代码所示︰

from odoo import exceptions
import logging

_logger = logging.getLogger(__name__)


# ...
# class TodoWizard(models.TransientModel):
# ...

@api.multi
def do_mass_update(self):


    self.ensure_one()
if not (self.new_deadline or self.new_user_id):
    raise exceptions.ValidationError('No data to update!')
_logger.debug('Mass update on Todo Tasks %s',
              self.task_ids.ids)
vals = {}
if self.new_deadline:
    vals['date_deadline'] = self.new_deadline
if self.new_user_id:
    vals['user_id'] = self.new_user_id
# Mass write values on all selected tasks
if vals:
    self.task_ids.write(vals)
return True

我们的代码应该处理一次向导实例,所以我们明确指出这一点self.ensure_one()。在这里 self表示向导窗体上数据的浏览记录。

该方法首先验证一个新的截止日期日期或负责任的用户如果没有就会出现错误。接下来,我们怎样写一个调试信息传到服务器日志的例子。

然后使用批量更新一起来设置构建“vals”字典:

新的日期,新的责任人,或者两者都有。然后在记录集上执行批量更新的平台上使用“write”方法。这比在每个记录上执行单独的操作循环更有效。

对于总是返回某些东西的方法来说,这是一种很好的做法。这就是为什么它最后返回True的值。唯一的原因是XML-RPC协议不支持任何值,因此这些方法无法使用这一协议。

在实践中,您可能没有意识到这个问题,因为web客户端使用的是JSON-RPC,而不是XML-RPC,但是这仍然是一个很好的实践。

接下来,我们将对日志进行更深入的研究,然后对顶部的两个按钮进行后面的逻辑分析︰Count和Get All