betrachten diese Methode:Zweifel über Migration über Odoo Module von v8 v10 Community - und Fehler
@api.multi
def _get_loc_req(self): #, cr, uid, context=None
"""Get if a field is required or not by a Localization
@param uid: Integer value of the user
"""
context = dict(self._context or {})
res = True
ru_brw = self.pool.get('res.users').browse(
self.cr, uid, uid, context=context)
rc_obj = self.pool.get('res.company')
rc_brw = rc_obj.browse(self.cr, uid, ru_brw.company_id.id, context=context)
if rc_brw.country_id and rc_brw.country_id.code == 'VE' and \
rc_brw.printer_fiscal:
res = False
return res
Wie Sie sehen können, habe ich hinzugefügt @api.multi
cr, uid, context=None
kommentiert seit mehreren Pflege dieser Argumente automatisch übernehmen sollte, Recht?
Aber zum Beispiel, wenn ich diesen Code ausführen, es diesen Fehler wirft:
Traceback (most recent call last):
File "/home/kristian/.virtualenvs/odoov10/lib/python2.7/site-packages/odoo-10.0rc1c_20161005-py2.7.egg/odoo/http.py", line 638, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/home/kristian/.virtualenvs/odoov10/lib/python2.7/site-packages/odoo-10.0rc1c_20161005-py2.7.egg/odoo/http.py", line 675, in dispatch
result = self._call_function(**self.params)
File "/home/kristian/.virtualenvs/odoov10/lib/python2.7/site-packages/odoo-10.0rc1c_20161005-py2.7.egg/odoo/http.py", line 331, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/home/kristian/.virtualenvs/odoov10/lib/python2.7/site-packages/odoo-10.0rc1c_20161005-py2.7.egg/odoo/service/model.py", line 119, in wrapper
return f(dbname, *args, **kwargs)
File "/home/kristian/.virtualenvs/odoov10/lib/python2.7/site-packages/odoo-10.0rc1c_20161005-py2.7.egg/odoo/http.py", line 324, in checked_call
result = self.endpoint(*a, **kw)
File "/home/kristian/.virtualenvs/odoov10/lib/python2.7/site-packages/odoo-10.0rc1c_20161005-py2.7.egg/odoo/http.py", line 933, in __call__
return self.method(*args, **kw)
File "/home/kristian/.virtualenvs/odoov10/lib/python2.7/site-packages/odoo-10.0rc1c_20161005-py2.7.egg/odoo/http.py", line 504, in response_wrap
response = f(*args, **kw)
File "/home/kristian/odoov10/odoo-10.0rc1c-20161005/odoo/addons/web/controllers/main.py", line 862, in call_kw
return self._call_kw(model, method, args, kwargs)
File "/home/kristian/odoov10/odoo-10.0rc1c-20161005/odoo/addons/web/controllers/main.py", line 854, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "/home/kristian/.virtualenvs/odoov10/lib/python2.7/site-packages/odoo-10.0rc1c_20161005-py2.7.egg/odoo/api.py", line 679, in call_kw
return call_kw_model(method, model, args, kwargs)
File "/home/kristian/.virtualenvs/odoov10/lib/python2.7/site-packages/odoo-10.0rc1c_20161005-py2.7.egg/odoo/api.py", line 664, in call_kw_model
result = method(recs, *args, **kwargs)
File "/home/kristian/odoov10/odoo-10.0rc1c-20161005/odoo/addons/account/models/account_invoice.py", line 342, in create
invoice = super(AccountInvoice, self.with_context(mail_create_nolog=True)).create(vals)
File "/home/kristian/odoov10/odoo-10.0rc1c-20161005/odoo/addons/mail/models/mail_thread.py", line 227, in create
thread = super(MailThread, self).create(values)
File "/home/kristian/.virtualenvs/odoov10/lib/python2.7/site-packages/odoo-10.0rc1c_20161005-py2.7.egg/odoo/models.py", line 3778, in create
vals = self._add_missing_default_values(vals)
File "/home/kristian/.virtualenvs/odoov10/lib/python2.7/site-packages/odoo-10.0rc1c_20161005-py2.7.egg/odoo/models.py", line 1618, in _add_missing_default_values
defaults = self.default_get(list(missing_defaults))
File "/home/kristian/.virtualenvs/odoov10/lib/python2.7/site-packages/odoo-10.0rc1c_20161005-py2.7.egg/odoo/models.py", line 1101, in default_get
defaults[name] = field.default(self)
File "/home/kristian/odoov10/gilda/l10n_ve_fiscal_requirements/model/invoice.py", line 61, in <lambda>
default=lambda s: s._get_loc_req(),
File "/home/kristian/odoov10/gilda/l10n_ve_fiscal_requirements/model/invoice.py", line 127, in _get_loc_req
self.cr, uid, uid, context=context)
AttributeError: 'account.invoice' object has no attribute 'cr'
Auf der Methode oben, ich cr
-self.cr
nach neuer api, aber kein Erfolg, derselbe Fehler geändert habe, und zum Beispiel self.pool.get
sollte es nicht self.env
sein? Oder kann es so bleiben?
Wie sollte es im Allgemeinen aussehen, um auf einer neuen API zu sein? neben Dekorateur und cr
Aussagen?
@api.multi
def my_method(self):
return
Aber wenn es ursprünglich cr, uid, ids, context
etc hatte, und diese Argumente sind tatsächlich in der Methode, (wie in:
Ein weiterer Zweifel habe ich, zum Beispiel, kann diese Art von Methoden, wie erklärt werden die obige Methode) sollten sie ersetzt werden? Wie sollte es aussehen?
Wie kann ich das lösen? Und wenn Sie erklären können, dass diese Verhöre auch großartig wären!
Das ist richtig, es gibt keine Notwendigkeit, Cursor, UID, etc. nirgendwo mehr zu übergeben. Jede alte Stilmethode muss für die neue API in Odoo 10 vollständig neu geschrieben werden, da die alte API komplett entfernt wurde. – CZoellner
Vielen Dank! – NeoVe