Die Administration und insbesondere Wartung der ERP-Software „Odoo“, ist oft bestenfalls gewöhnungsbedürftig. Es bedarf umfassender Einarbeitung und Verständnis nicht nur für Python, sondern auch der Odoo-spezifischen Hürden, welche den Administrator im Upgradeprozess erwarten.
Wer aufgrund der Verwendung unterschiedlicher Module auf die Fehlermeldung „Field xml_str
does not exist“ stößt, für den könnten die folgenden Hinweise hilfreich sein. Die Meldung tritt im Kontext des Upgrades auf:
2024-10-31 09:09:08,136 8 CRITICAL instancename odoo.service.server: Failed to initialize database `dbname`.
Traceback (most recent call last):
File "/home/odoo/src/odoo/odoo/service/server.py", line 1313, in preload_registries
registry = Registry.new(dbname, update_module=update_module)
File "<decorator-gen-16>", line 2, in new
File "/home/odoo/src/odoo/odoo/tools/func.py", line 87, in locked
return func(inst, *args, **kwargs)
File "/home/odoo/src/odoo/odoo/modules/registry.py", line 114, in new
odoo.modules.load_modules(registry, force_demo, status, update_module)
File "/home/odoo/src/odoo/odoo/modules/loading.py", line 476, in load_modules
processed_modules += load_marked_modules(env, graph,
File "/home/odoo/src/odoo/odoo/modules/loading.py", line 364, in load_marked_modules
loaded, processed = load_module_graph(
File "/home/odoo/src/odoo/odoo/modules/loading.py", line 227, in load_module_graph
load_data(env, idref, mode, kind='data', package=package)
File "/home/odoo/src/odoo/odoo/modules/loading.py", line 71, in load_data
tools.convert_file(env, package.name, filename, idref, mode, noupdate, kind)
File "/home/odoo/src/odoo/odoo/tools/convert.py", line 627, in convert_file
convert_xml_import(env, module, fp, idref, mode, noupdate)
File "/home/odoo/src/odoo/odoo/tools/convert.py", line 693, in convert_xml_import
obj.parse(doc.getroot())
File "/home/odoo/src/odoo/odoo/tools/convert.py", line 613, in parse
self._tag_root(de)
File "/home/odoo/src/odoo/odoo/tools/convert.py", line 567, in _tag_root
raise ParseError(msg) from None # Restart with "--log-handler odoo.tools.convert:DEBUG" for complete traceback
odoo.tools.convert.ParseError: while parsing /home/odoo/src/user/account_payment_order/views/account_payment_views.xml:22
Fehler bei der Validierung der Ansicht nahe:
<form string="Register Payment">
<header>
<button name="action_post" string="Confirm" type="object" class="oe_highlight" invisible="state != 'draft'" data-hotkey="q"/>
Field `xml_str` does not exist
View error context:
{'file': '/home/odoo/src/user/account_payment_order/views/account_payment_views.xml',
'line': 1,
'name': 'account.payment.form',
'view': ir.ui.view(4578,),
'view.model': 'account.payment',
'view.parent': ir.ui.view(561,),
'xmlid': 'view_account_payment_form'}
Um den Fehler zu finden, kann es hilfreich sein, in den Administrationstools von Odoo unter „Views“ nach dem String „xml_str“ in „View Architecture“ zu suchen. Da das schon recht kompliziert sein kann, empfehlen sich die folgenden Screenshots:
Wurde das Vorkommnis gefunden kann nun entweder der View entfernt werden oder eine andere ähnliche Maßnahme ergriffen werden. In meinem konkreten Fall musste eine bestimmte Modul-Upgrade Reihenfolge eingehalten werden:
Das Modul „account_ebics“ erbt einen View vom Modul „account_payment“. Ein Update von „account_payment“ oder bestimmten „account_payment_*“ Modulen bevor „account_ebics“ aktualisiert wurde, führt hier zu einer Validierung, welche fehlschlägt weil das angegebene Feld seit dem Upgrade von Version 16 auf 17 nicht mehr existiert.
Die Module müssten in diesem Fall manuell in der folgenden Reihenfolge aktualisiert werden:
- „account_ebics“
- „account_payment“
- „account_payment_*“
Nachdem das „account_ebics“ Modul aktualisiert wurde, ist der View automatisch verschwunden. Nach Fehlerbehebung folgt der nächste Schritt/Fehler, den es dann zu beheben gilt.