Bỏ qua để đến Nội dung
Menu
Câu hỏi này đã bị gắn cờ
4 Trả lời
5533 Lượt xem

Hello,

I built a user class with delegation inheritance on res.partner :

class TrelloUser(models.Model):    
    _name='trello.project.user'
    _inherits={'res.partner': 'odoo_id'}

  odoo_id=fields.Many2one('res.partner', 
                            required=True,
                            ondelete='cascade') 
    external_id=fields.Char('ID in Trello',
                            required=True,
                            readonly=True)


Then, I added a in demo.xml file, to automatically load a user :


<record id="1" model="trello.project.user">
          <field name="odoo_id" ref="base.user_demo" />
          <field name="external_id">extID</field>
</record>


Now, when I update my module, I get the following error message :


Error:
Odoo Server Error

Traceback (most recent call last):
  File "/opt/odoo/odoo/odoo/tools/convert.py", line 744, in parse
    self._tags[rec.tag](rec, de, mode=mode)
  File "/opt/odoo/odoo/odoo/tools/convert.py", line 572, in _tag_record
    model = self.env[rec_model]
  File "/opt/odoo/odoo/odoo/api.py", line 760, in __getitem__
    return self.registry[model_name]._browse((), self)
  File "/opt/odoo/odoo/odoo/modules/registry.py", line 179, in __getitem__
    return self.models[model_name]
KeyError: 'trello.project.user'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/odoo/odoo/odoo/http.py", line 651, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "/opt/odoo/odoo/odoo/http.py", line 310, in _handle_exception
    raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])
  File "/opt/odoo/odoo/odoo/tools/pycompat.py", line 87, in reraise
    raise value
  File "/opt/odoo/odoo/odoo/http.py", line 693, in dispatch
    result = self._call_function(**self.params)
  File "/opt/odoo/odoo/odoo/http.py", line 342, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "/opt/odoo/odoo/odoo/service/model.py", line 97, in wrapper
    return f(dbname, *args, **kwargs)
  File "/opt/odoo/odoo/odoo/http.py", line 335, in checked_call
    result = self.endpoint(*a, **kw)
  File "/opt/odoo/odoo/odoo/http.py", line 937, in __call__
    return self.method(*args, **kw)
  File "/opt/odoo/odoo/odoo/http.py", line 515, in response_wrap
    response = f(*args, **kw)
  File "/opt/odoo/odoo/addons/web/controllers/main.py", line 938, in call_button
    action = self._call_kw(model, method, args, {})
  File "/opt/odoo/odoo/addons/web/controllers/main.py", line 926, in _call_kw
    return call_kw(request.env[model], method, args, kwargs)
  File "/opt/odoo/odoo/odoo/api.py", line 689, in call_kw
    return call_kw_multi(method, model, args, kwargs)
  File "/opt/odoo/odoo/odoo/api.py", line 680, in call_kw_multi
    result = method(recs, *args, **kwargs)
  File "<decorator-gen-48>", line 2, in button_immediate_upgrade
  File "/opt/odoo/odoo/odoo/addons/base/module/module.py", line 71, in check_and_log
    return method(self, *args, **kwargs)
  File "/opt/odoo/odoo/odoo/addons/base/module/module.py", line 603, in button_immediate_upgrade
    return self._button_immediate_function(type(self).button_upgrade)
  File "/opt/odoo/odoo/odoo/addons/base/module/module.py", line 542, in _button_immediate_function
    modules.registry.Registry.new(self._cr.dbname, update_module=True)
  File "/opt/odoo/odoo/odoo/modules/registry.py", line 85, in new
    odoo.modules.load_modules(registry._db, force_demo, status, update_module)
  File "/opt/odoo/odoo/odoo/modules/loading.py", line 376, in load_modules
    force, status, report, loaded_modules, update_module, models_to_check)
  File "/opt/odoo/odoo/odoo/modules/loading.py", line 274, in load_marked_modules
    perform_checks=perform_checks, models_to_check=models_to_check
  File "/opt/odoo/odoo/odoo/modules/loading.py", line 184, in load_module_graph
    _load_data(cr, module_name, idref, mode, kind='demo')
  File "/opt/odoo/odoo/odoo/modules/loading.py", line 95, in _load_data
    tools.convert_file(cr, module_name, filename, idref, mode, noupdate, kind, report)
  File "/opt/odoo/odoo/odoo/tools/convert.py", line 791, in convert_file
    convert_xml_import(cr, module, fp, idref, mode, noupdate, report)
  File "/opt/odoo/odoo/odoo/tools/convert.py", line 852, in convert_xml_import
    obj.parse(doc.getroot(), mode=mode)
  File "/opt/odoo/odoo/odoo/tools/convert.py", line 741, in parse
    self.parse(rec, mode)
  File "/opt/odoo/odoo/odoo/tools/convert.py", line 751, in parse
    exc_info[2]
  File "/opt/odoo/odoo/odoo/tools/pycompat.py", line 86, in reraise
    raise value.with_traceback(tb)
  File "/opt/odoo/odoo/odoo/tools/convert.py", line 744, in parse
    self._tags[rec.tag](rec, de, mode=mode)
  File "/opt/odoo/odoo/odoo/tools/convert.py", line 572, in _tag_record
    model = self.env[rec_model]
  File "/opt/odoo/odoo/odoo/api.py", line 760, in __getitem__
    return self.registry[model_name]._browse((), self)
  File "/opt/odoo/odoo/odoo/modules/registry.py", line 179, in __getitem__
    return self.models[model_name]
odoo.tools.convert.ParseError: "trello.project.user" while parsing /home/cyrille/odoo/addons-dev/draft_odoo_trello/demo/demo.xml:4, near
<record id="1" model="trello.project.user">
          <field name="odoo_id" ref="base.user_demo"/>
          <field name="external_id">ext</field>
</record>


It says KeyError : 'trello.project.user', so I went and checked in Settings | Database Structure | Models and the trello.project.user model is there. So I have no idea why I have this KeyError.
Thanks for your help,

Cyrille (LaLibreRie)

Ảnh đại diện
Huỷ bỏ
Tác giả

Marius Stedjan It did not solve the issue, but still thank you, I was not aware of this.

Why do you use delegation inheritance? Is this necessary?

Câu trả lời hay nhất

Try giving the user record a proper id (this is the xml_id/external id, not the database id). 
The way you are doing it now, will give the user record a xml_id of trello.1, which might conflict with other records, if you have used only integers for the id in other parts of your module.

<record id="project_user_1" model="trello.project.user">
    <field name="odoo_id" ref="base.user_demo" />
    <field name="external_id">extID</field>
</record>
Ảnh đại diện
Huỷ bỏ
Tác giả Câu trả lời hay nhất

I downloaded the database_cleanup module (https://www.odoo.com/apps/modules/11.0/database_cleanup/). I had a lot of orphan modules, models and columns due to a lot of upgrades during the development process. Now that the database has been cleaned up of all those, it works.

Ảnh đại diện
Huỷ bỏ
Bài viết liên quan Trả lời Lượt xem Hoạt động
1
thg 11 17
5138
0
thg 1 16
6840
1
thg 6 25
798
2
thg 5 24
6462
0
thg 11 23
1660