Yes Temur, I tried. Same issue.
I edited my code while you was answering me, using the singleton instance of the ORM model (packaging_obj in my code) seems to be a better way to do it to me:
@api.one
def _set_product_tmpl_id_fnc(self):
packaging_obj = self.pool.get('product.packaging')
if len(self.product_tmpl_id.product_variant_ids) >= 1
for product in self.product_tmpl_id.product_variant_ids
packaging_copy = packaging_obj.copy_data(self.id)
packaging_copy.write({'product_id':self.product_id})
But I got the following error message:
TypeError: copy_data() takes at least 4 arguments (2 given)
Here is the copy_data function signature
def copy_data(self, cr, uid, id, default=None, context=None):
EDIT: Thanks Temur, I made several mistakes.
Here is the code I normally expected:
@api.one
def _set_product_tmpl_id_fnc(self):
if len(self.product_tmpl_id.product_variant_ids) >= 1:
for product in self.product_tmpl_id.product_variant_ids:
packaging_copy_data = self.copy_data()
print "packaging_copy_data :", packaging_copy_data
packaging_copy_data.product_id = product.id
packaging_copy_rec = self.create(packaging_copy_data)
But the error is raise immediately on the "packaging_copy_data = self.copy_data()" line:
Traceback (most recent call last):
File "/home/hugo/Projets/Projets_TecLib/odoo/openerp/http.py", line 530, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/home/hugo/Projets/Projets_TecLib/odoo/openerp/http.py", line 567, in dispatch
result = self._call_function(**self.params)
File "/home/hugo/Projets/Projets_TecLib/odoo/openerp/http.py", line 303, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/home/hugo/Projets/Projets_TecLib/odoo/openerp/service/model.py", line 113, in wrapper
return f(dbname, *args, **kwargs)
File "/home/hugo/Projets/Projets_TecLib/odoo/openerp/http.py", line 300, in checked_call
return self.endpoint(*a, **kw)
File "/home/hugo/Projets/Projets_TecLib/odoo/openerp/http.py", line 796, in __call__
return self.method(*args, **kw)
File "/home/hugo/Projets/Projets_TecLib/odoo/openerp/http.py", line 396, in response_wrap
response = f(*args, **kw)
File "/home/hugo/Projets/Projets_TecLib/odoo/addons/web/controllers/main.py", line 937, in call_kw
return self._call_kw(model, method, args, kwargs)
File "/home/hugo/Projets/Projets_TecLib/odoo/addons/web/controllers/main.py", line 929, in _call_kw
return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs)
File "/home/hugo/Projets/Projets_TecLib/odoo/openerp/api.py", line 241, in wrapper
return old_api(self, *args, **kwargs)
File "/home/hugo/Projets/Projets_TecLib/odoo/addons/product/product.py", line 772, in write
res = super(product_template, self).write(cr, uid, ids, vals, context=context)
File "/home/hugo/Projets/Projets_TecLib/odoo/openerp/api.py", line 241, in wrapper
return old_api(self, *args, **kwargs)
File "/home/hugo/Projets/Projets_TecLib/odoo/addons/mail/mail_thread.py", line 431, in write
result = super(mail_thread, self).write(cr, uid, ids, values, context=context)
File "/home/hugo/Projets/Projets_TecLib/odoo/openerp/api.py", line 241, in wrapper
return old_api(self, *args, **kwargs)
File "/home/hugo/Projets/Projets_TecLib/odoo/openerp/api.py", line 363, in old_api
result = method(recs, *args, **kwargs)
File "/home/hugo/Projets/Projets_TecLib/odoo_addons_community/linked/connector/producer.py", line 61, in write
result = write_original(self, vals)
File "/home/hugo/Projets/Projets_TecLib/odoo/openerp/api.py", line 239, in wrapper
return new_api(self, *args, **kwargs)
File "/home/hugo/Projets/Projets_TecLib/odoo/openerp/models.py", line 3774, in write
self._write(old_vals)
File "/home/hugo/Projets/Projets_TecLib/odoo/openerp/api.py", line 239, in wrapper
return new_api(self, *args, **kwargs)
File "/home/hugo/Projets/Projets_TecLib/odoo/openerp/api.py", line 546, in new_api
result = method(self._model, cr, uid, self.ids, *args, **kwargs)
File "/home/hugo/Projets/Projets_TecLib/odoo/openerp/models.py", line 3917, in _write
result += self._columns[field].set(cr, self, id, field, vals[field], user, context=rel_context) or []
File "/home/hugo/Projets/Projets_TecLib/odoo/openerp/osv/fields.py", line 800, in set
id_new = obj.create(cr, user, act[2], context=context)
File "/home/hugo/Projets/Projets_TecLib/odoo/openerp/api.py", line 241, in wrapper
return old_api(self, *args, **kwargs)
File "/home/hugo/Projets/Projets_TecLib/odoo/openerp/api.py", line 336, in old_api
result = method(recs, *args, **kwargs)
File "/home/hugo/Projets/Projets_TecLib/odoo_addons_community/linked/connector/producer.py", line 47, in create
record_id = create_original(self, vals)
File "/home/hugo/Projets/Projets_TecLib/odoo/openerp/api.py", line 239, in wrapper
return new_api(self, *args, **kwargs)
File "/home/hugo/Projets/Projets_TecLib/odoo/openerp/models.py", line 4079, in create
self._fields[key].determine_inverse(record)
File "/home/hugo/Projets/Projets_TecLib/odoo/openerp/fields.py", line 935, in determine_inverse
self.inverse(records)
File "/home/hugo/Projets/Projets_TecLib/odoo/openerp/api.py", line 239, in wrapper
return new_api(self, *args, **kwargs)
File "/home/hugo/Projets/Projets_TecLib/odoo/openerp/api.py", line 397, in new_api
result = [method(rec, *args, **kwargs) for rec in self]
File "/home/hugo/Projets/Projets_TecLib/odoo_addons/auguria_scan_packaging/models/picking.py", line 42, in _set_product_tmpl_id_fnc
packaging_copy_data = self.copy_data()
File "/home/hugo/Projets/Projets_TecLib/odoo/openerp/api.py", line 239, in wrapper
return new_api(self, *args, **kwargs)
File "/home/hugo/Projets/Projets_TecLib/odoo/openerp/api.py", line 503, in new_api
result = [method(self._model, cr, uid, id, *args, **kwargs) for id in self.ids]
File "/home/hugo/Projets/Projets_TecLib/odoo/openerp/models.py", line 4697, in copy_data
seen_map = context.setdefault('__copy_data_seen', {})
File "/home/hugo/Projets/Projets_TecLib/odoo/openerp/tools/misc.py", line 1280, in setdefault
raise NotImplementedError("'setdefault' not supported on frozendict")
NotImplementedError: 'setdefault' not supported on frozendic
@Hugo you can report the bug on github, see intruction: https://github.com/odoo/odoo/wiki/Contributing
Ok, I'll take a look ;)
I created an issue here https://github.com/odoo/odoo/issues/7362