Odoo Help

Welcome!

This community is for beginners and experts willing to share their Odoo knowledge. It's not a forum to discuss ideas, but a knowledge base of questions and their answers.

0

[V9]Inheritance model crash server

By
TK Fontaine
on 11/12/15, 9:07 AM 1,155 views

Hi,

I inherited stock.picking by adding a new field (commentary) in my new module. When I install it, every think is OK :

  • installation OK

  • test by adding commentary OK(insertion in DataBase ok)

Everything is all right, even if I disconnect and reconnect.

BUT when I stop the server and reboot it, it crash directly; here the log:


2015-11-12 14:01:21,874 4528 ERROR testdb werkzeug: Error on request:
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/werkzeug/serving.py", line 177, in run_wsgi
execute(self.server.app)
File "/usr/lib/python2.7/dist-packages/werkzeug/serving.py", line 165, in execute
application_iter = app(environ, start_response)
File "/odoo/odoo-server/openerp/service/server.py", line 245, in app
return self.app(e, s)
File "/odoo/odoo-server/openerp/service/wsgi_server.py", line 184, in application
return application_unproxied(environ, start_response)
File "/odoo/odoo-server/openerp/service/wsgi_server.py", line 170, in application_unproxied
result = handler(environ, start_response)
File "/odoo/odoo-server/openerp/http.py", line 1416, in __call__
return self.dispatch(environ, start_response)
File "/odoo/odoo-server/openerp/http.py", line 1390, in __call__
return self.app(environ, start_wrapped)
File "/usr/lib/python2.7/dist-packages/werkzeug/wsgi.py", line 579, in __call__
return self.app(environ, start_response)
File "/odoo/odoo-server/openerp/http.py", line 1565, in dispatch
ir_http = request.registry['ir.http']
File "/odoo/odoo-server/openerp/http.py", line 354, in registry
return openerp.modules.registry.RegistryManager.get(self.db) if self.db else None
File "/odoo/odoo-server/openerp/modules/registry.py", line 354, in get
update_module)
File "/odoo/odoo-server/openerp/modules/registry.py", line 385, in new
openerp.modules.load_modules(registry._db, force_demo, status, update_module)
File "/odoo/odoo-server/openerp/modules/loading.py", line 333, in load_modules
force, status, report, loaded_modules, update_module)
File "/odoo/odoo-server/openerp/modules/loading.py", line 237, in load_marked_modules
loaded, processed = load_module_graph(cr, graph, progressdict, report=report, skip_modules=loaded_modules, perform_checks=perform_checks)
File "/odoo/odoo-server/openerp/modules/loading.py", line 132, in load_module_graph
models = registry.load(cr, package)
File "/odoo/odoo-server/openerp/modules/registry.py", line 168, in load
model = cls._build_model(self, cr)
File "/odoo/odoo-server/openerp/models.py", line 588, in _build_model
original_module = pool[name]._original_module if name in parents else cls._module
File "/odoo/odoo-server/openerp/modules/registry.py", line 84, in __getitem__
return self.models[model_name]
KeyError: 'stock.picking'

My model :

from openerp import models, fields, api


class Stock_picking(models.Model):
_name = 'stock.picking'
_inherit = 'stock.picking'
commentaire = fields.Text(string="Commentaires", help="Ajouter un commentaire concernant cette commande")

And the form view inherit :

<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="view_picking_stock_inherent" model="ir.ui.view">
<field name="name">stock.picking.form.dspc</field>
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_form"/>
<field name="arch" type="xml">
<xpath expr="//sheet/notebook/page[@name='extra']/group/group/field[@name='quant_reserved_exist']" position="after">
<field name="commentaire"/>
</xpath>
</field>
</record>

</data>
</openerp>


I totaly don't understand where is my mistake, I tried to get a basic inheritance...

Could you help me please?



Why are you combining _name and _inherit? You should either inherit OR create a model, not both.

Yenthe
on 11/12/15, 9:37 AM
0
TK Fontaine
On 11/12/15, 1:34 PM

Thanks for your feedback.

Unfortunately, I tried first to have only _inherit (Extension)as follow :

from openerp import models, fields, api

class Stock_picking(models.Model):
_inherit = 'stock.picking'
commentaire = fields.Char(string="Commentaires", help="Ajouter un commentaire concernant cette commande")

But now, I have another error :

2015-11-12 18:30:24,958 10609 CRITICAL testdb openerp.service.server: Failed to initialize database `testdb`.
Traceback (most recent call last):
File "/odoo/odoo-server/openerp/service/server.py", line 885, in preload_registries
registry = RegistryManager.new(dbname, update_module=update_module)
File "/odoo/odoo-server/openerp/modules/registry.py", line 385, in new
openerp.modules.load_modules(registry._db, force_demo, status, update_module)
File "/odoo/odoo-server/openerp/modules/loading.py", line 333, in load_modules
force, status, report, loaded_modules, update_module)
File "/odoo/odoo-server/openerp/modules/loading.py", line 237, in load_marked_modules
loaded, processed = load_module_graph(cr, graph, progressdict, report=report, skip_modules=loaded_modules, perform_checks=perform_checks)
File "/odoo/odoo-server/openerp/modules/loading.py", line 132, in load_module_graph
models = registry.load(cr, package)
File "/odoo/odoo-server/openerp/modules/registry.py", line 168, in load
model = cls._build_model(self, cr)
File "/odoo/odoo-server/openerp/models.py", line 588, in _build_model
original_module = pool[name]._original_module if name in parents else cls._module
File "/odoo/odoo-server/openerp/modules/registry.py", line 84, in __getitem__
return self.models[model_name]
KeyError: 'stock.picking'

That error happened when a reboot the server.



EDIT : 

Ok, I resolved my problem, I had to add "stock" in depends.

I learnt one think : never underestimate the search engine ...(www.odoo.com/fr_FR/forum/help-1/question/moving-custom-data-from-crm-lead-to-sale-order-while-creating-quotation-from-lead-92550)

Sorry for your time

1

Sudhir Arya (SA)

--Sudhir Arya (SA)--
10150
| 6 8 8
Ahmedabad, India
--Sudhir Arya (SA)--

Working as an OpenERP/Odoo developer and a Team Leader 

Top 5 Odoo contributor On Stackoverflow

LinkedIn

Blog

Stackoverflow

Sudhir Arya (SA)
On 11/12/15, 10:11 AM

Hello TKF,

Try after removing _name from you code.

As Yenthe said in the comment, you should either use _name for creating new model or use _inherit to extend the existing object.

1
Marvin Taboada
On 11/12/15, 11:26 AM

Hello TKF,

I think you're using the old v7 style to define inheritance. Until v7 using both _name and _inherit wasn't a problem (it was at most redundant), the proof is that the picture used in the current v8 documentation was taken from the old "v7 technical memento" (v7 developer oriented document) so it is somehow misleading for v8, see the picture in the following link:

https://www.odoo.com/documentation/8.0/reference/orm.html#inheritance-and-extension 

Two inheritance types have also been renamed since v8:

* Extension. Which used to be referred as "Class inheritance" (as seen in the picture)

* Classical inheritance. Which used to be referred as "Prototype inheritance" (as seen see the picture)

If you read the documentation for the "Extension" inheritance, it clearly reads "using _inherit but leaving out _name". The code that builds models, introduced since v8, requires that usage:

https://github.com/odoo/odoo/blob/8.0/openerp/models.py#L589 

I hope this helps.

Regards.

Your Answer

Please try to give a substantial answer. If you wanted to comment on the question or answer, just use the commenting tool. Please remember that you can always revise your answers - no need to answer the same question twice. Also, please don't forget to vote - it really helps to select the best questions and answers!

About This Community

This community is for professionals and enthusiasts of our products and services. Read Guidelines

Question tools

2 follower(s)

Stats

Asked: 11/12/15, 9:07 AM
Seen: 1155 times
Last updated: 11/12/15, 1:43 PM