Skip to Content
Menu
This question has been flagged

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?



Avatar
Discard

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

Author Best Answer

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

Avatar
Discard
Best Answer

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.

Avatar
Discard
Best Answer

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.

Avatar
Discard
Related Posts Replies Views Activity
2
Mar 15
15226
0
May 24
316
0
May 16
1934
0
Apr 16
1896
1
Mar 15
4191