Odoo 16 - 无法向对话发送消息

问题描述 投票:0回答:1

我正在尝试弄清楚如何将消息发送到自定义对话频道(Odoo 16)。 我使用这篇文章作为基础: https://www.cybrosys.com/blog/how-to-create-send-messages-to-channels-on-the-odoo-15-discuss-module

所以,做了什么:

  1. 添加了文件 my_module/data/custom_channels.xml:
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
    <data noupdate="1">
        <record id="channel_mailing" model="mail.channel">
            <field name="name">Mailing queue reports</field>
            <field name="description">Mailing tasks status and history</field>
            <field name="public">groups</field>
            <field name="group_public_id" ref="project.group_project_manager"/>
            <field name="group_ids" eval="[Command.link(ref('project.group_project_manager'))]"/>
        </record>
    </data>
</odoo>
  1. 它被添加到Manifest中就像:
    'data': [
        'security/ir.model.access.csv',
        'views/menu.xml',
        'data/mailing_queue_channel.xml',
    ],
  1. 但是当我重新启动 Odoo 服务器并尝试使用更改升级我的模块时,我收到错误:
Traceback (most recent call last):
  File "/home/useruser/Desktop/odoo_dev/16.0/odoo/odoo/tools/convert.py", line 698, in _tag_root
    f(rec)
  File "/home/useruser/Desktop/odoo_dev/16.0/odoo/odoo/tools/convert.py", line 495, in _tag_record
    model = env[rec_model]
  File "/home/useruser/Desktop/odoo_dev/16.0/odoo/odoo/api.py", line 542, in __getitem__
    return self.registry[model_name](self, (), ())
  File "/home/useruser/Desktop/odoo_dev/16.0/odoo/odoo/modules/registry.py", line 190, in __getitem__
    return self.models[model_name]
KeyError: 'mail.channel'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/useruser/Desktop/odoo_dev/16.0/odoo/odoo/http.py", line 1591, in _serve_db
    return service_model.retrying(self._serve_ir_http, self.env)
  File "/home/useruser/Desktop/odoo_dev/16.0/odoo/odoo/service/model.py", line 133, in retrying
    result = func()
  File "/home/useruser/Desktop/odoo_dev/16.0/odoo/odoo/http.py", line 1618, in _serve_ir_http
    response = self.dispatcher.dispatch(rule.endpoint, args)
  File "/home/useruser/Desktop/odoo_dev/16.0/odoo/odoo/http.py", line 1822, in dispatch
    result = self.request.registry['ir.http']._dispatch(endpoint)
  File "/home/useruser/Desktop/odoo_dev/16.0/odoo/odoo/addons/base/models/ir_http.py", line 154, in _dispatch
    result = endpoint(**request.params)
  File "/home/useruser/Desktop/odoo_dev/16.0/odoo/odoo/http.py", line 697, in route_wrapper
    result = endpoint(self, *args, **params_ok)
  File "/home/useruser/Desktop/odoo_dev/16.0/odoo/addons/web/controllers/dataset.py", line 46, in call_button
    action = self._call_kw(model, method, args, kwargs)
  File "/home/useruser/Desktop/odoo_dev/16.0/odoo/addons/web/controllers/dataset.py", line 33, in _call_kw
    return call_kw(request.env[model], method, args, kwargs)
  File "/home/useruser/Desktop/odoo_dev/16.0/odoo/odoo/api.py", line 466, in call_kw
    result = _call_kw_multi(method, model, args, kwargs)
  File "/home/useruser/Desktop/odoo_dev/16.0/odoo/odoo/api.py", line 453, in _call_kw_multi
    result = method(recs, *args, **kwargs)
  File "<decorator-gen-83>", line 2, in button_immediate_upgrade
  File "/home/useruser/Desktop/odoo_dev/16.0/odoo/odoo/addons/base/models/ir_module.py", line 74, in check_and_log
    return method(self, *args, **kwargs)
  File "/home/useruser/Desktop/odoo_dev/16.0/odoo/odoo/addons/base/models/ir_module.py", line 665, in button_immediate_upgrade
    return self._button_immediate_function(type(self).button_upgrade)
  File "/home/useruser/Desktop/odoo_dev/16.0/odoo/odoo/addons/base/models/ir_module.py", line 598, in _button_immediate_function
    registry = modules.registry.Registry.new(self._cr.dbname, update_module=True)
  File "<decorator-gen-16>", line 2, in new
  File "/home/useruser/Desktop/odoo_dev/16.0/odoo/odoo/tools/func.py", line 87, in locked
    return func(inst, *args, **kwargs)
  File "/home/useruser/Desktop/odoo_dev/16.0/odoo/odoo/modules/registry.py", line 90, in new
    odoo.modules.load_modules(registry, force_demo, status, update_module)
  File "/home/useruser/Desktop/odoo_dev/16.0/odoo/odoo/modules/loading.py", line 484, in load_modules
    processed_modules += load_marked_modules(cr, graph,
  File "/home/useruser/Desktop/odoo_dev/16.0/odoo/odoo/modules/loading.py", line 372, in load_marked_modules
    loaded, processed = load_module_graph(
  File "/home/useruser/Desktop/odoo_dev/16.0/odoo/odoo/modules/loading.py", line 231, in load_module_graph
    load_data(cr, idref, mode, kind='data', package=package)
  File "/home/useruser/Desktop/odoo_dev/16.0/odoo/odoo/modules/loading.py", line 71, in load_data
    tools.convert_file(cr, package.name, filename, idref, mode, noupdate, kind)
  File "/home/useruser/Desktop/odoo_dev/16.0/odoo/odoo/tools/convert.py", line 763, in convert_file
    convert_xml_import(cr, module, fp, idref, mode, noupdate)
  File "/home/useruser/Desktop/odoo_dev/16.0/odoo/odoo/tools/convert.py", line 829, in convert_xml_import
    obj.parse(doc.getroot())
  File "/home/useruser/Desktop/odoo_dev/16.0/odoo/odoo/tools/convert.py", line 749, in parse
    self._tag_root(de)
  File "/home/useruser/Desktop/odoo_dev/16.0/odoo/odoo/tools/convert.py", line 698, in _tag_root
    f(rec)
  File "/home/useruser/Desktop/odoo_dev/16.0/odoo/odoo/tools/convert.py", line 711, in _tag_root
    raise ParseError('while parsing %s:%s, somewhere inside\n%s' % (
odoo.tools.convert.ParseError: while parsing /home/useruser/Desktop/odoo_dev/16.0/odoo/addons/my_module/data/custom_channels.xml:4, somewhere inside
<record id="channel_mailing" model="mail.channel">
            <field name="name">Mailing queue reports</field>
            <field name="description">Mailing tasks status and history</field>
            <field name="public">groups</field>
            <field name="group_public_id" ref="project.group_project_manager"/>
            <field name="group_ids" eval="[Command.link(ref('project.group_project_manager'))]"/>
        </record>
python model odoo-16 mailing
1个回答
0
投票

Odoo 16 似乎有不同的方法,所以,我尝试了这个:

self.env['mail.message'].create({'message_type': 'comment',
                                 'subtype_id': self.env.ref('mail.mt_comment').id,
                                 'model': 'mail.channel',
                                 'res_id': self.env.ref('my.channel').id,
                                 'body': 'message text'})

并且它工作得很好(在使用本地光标的情况下不要忘记提交更改)

© www.soinside.com 2019 - 2024. All rights reserved.