Odoo 10 community
Version 10.0_20170424
on Centos 7, installed from the nightly repository.
My Odoo server will not start, and output the following into the log. It seems to be trying to register a class, view or something called report.printscreen.list, but I can't find this in my installation anywhere.
This database was moved over from a docker instance, so that might be a clue I guess that something that came over in the database is causing the issue?
2017-04-24 16:09:24,159 535 CRITICAL brs odoo.modules.module: Couldn't load module report
2017-04-24 16:09:24,159 535 CRITICAL brs odoo.modules.module: The report "report.printscreen.list" already exists.
2017-04-24 16:09:24,159 535 ERROR brs odoo.modules.registry: Failed to load registry
Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/odoo/modules/registry.py", line 78, in new
odoo.modules.load_modules(registry._db, force_demo, status, update_module)
File "/usr/lib/python2.7/site-packages/odoo/modules/loading.py", line 335, in load_modules
force, status, report, loaded_modules, update_module)
File "/usr/lib/python2.7/site-packages/odoo/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 "/usr/lib/python2.7/site-packages/odoo/modules/loading.py", line 122, in load_module_graph
load_openerp_module(package.name)
File "/usr/lib/python2.7/site-packages/odoo/modules/module.py", line 367, in load_openerp_module
__import__('odoo.addons.' + module_name)
File "/usr/lib/python2.7/site-packages/odoo/modules/module.py", line 81, in load_module
execfile(modfile, new_mod.__dict__)
File "/usr/lib/python2.7/site-packages/odoo/report/__init__.py", line 10, in <module>
from . import printscreen
File "/usr/lib/python2.7/site-packages/odoo/report/printscreen/__init__.py", line 4, in <module>
from . import ps_list
File "/usr/lib/python2.7/site-packages/odoo/report/printscreen/ps_list.py", line 250, in <module>
report_printscreen_list('report.printscreen.list')
File "/usr/lib/python2.7/site-packages/odoo/report/printscreen/ps_list.py", line 20, in __init__
super(report_printscreen_list, self).__init__(name)
File "/usr/lib/python2.7/site-packages/odoo/report/interface.py", line 33, in __init__
assert name not in self._reports, 'The report "%s" already exists.' % name
AssertionError: The report "report.printscreen.list" already exists.
2017-04-24 16:09:24,160 535 CRITICAL brs odoo.service.server: Failed to initialize database `brs`.
I tried PDB to get to grips with this and I can see that the call is iterating the reports, and indeed a second one called report.printscreen.list does appear:
-bash-4.2$ python -m pdb /usr/bin/odoo --config /etc/odoo/odoo.conf --logfile /var/log/odoo/odoo-server.log
> /usr/bin/odoo(4)<module>()
-> __import__('os').environ['TZ'] = 'UTC'
(Pdb) cont
> /usr/lib/python2.7/site-packages/odoo/report/interface.py(34)__init__()
-> assert name not in self._reports, 'The report "%s" already exists.' % name
(Pdb) print name
report.custom
(Pdb) print self._reports
{}
(Pdb) cont
> /usr/lib/python2.7/site-packages/odoo/report/interface.py(34)__init__()
-> assert name not in self._reports, 'The report "%s" already exists.' % name
(Pdb) print name
report.printscreen.list
(Pdb) print self._reports
{'report.custom': <odoo.report.custom.report_custom object at 0x3cfd9d0>}
(Pdb) step
> /usr/lib/python2.7/site-packages/odoo/report/interface.py(35)__init__()
-> self._reports[name] = self
(Pdb) cont
> /usr/lib/python2.7/site-packages/odoo/report/interface.py(34)__init__()
-> assert name not in self._reports, 'The report "%s" already exists.' % name
(Pdb) print self._reports
{'report.custom': <odoo.report.custom.report_custom object at 0x3cfd9d0>, 'report.printscreen.list': <odoo.report.printscreen.ps_list.report_printscreen_list object at 0x3d0c490>}
(Pdb) print name
report.printscreen.form
(Pdb) step
> /usr/lib/python2.7/site-packages/odoo/report/interface.py(35)__init__()
-> self._reports[name] = self
(Pdb) cont
> /usr/lib/python2.7/site-packages/odoo/report/interface.py(34)__init__()
-> assert name not in self._reports, 'The report "%s" already exists.' % name
(Pdb) print name
report.workflow.instance.graph
(Pdb) print self._reports
{'report.custom': <odoo.report.custom.report_custom object at 0x3cfd9d0>, 'report.printscreen.form': <odoo.report.printscreen.ps_form.report_printscreen_list object at 0x3d0cd90>, 'report.printscreen.list': <odoo.report.printscreen.ps_list.report_printscreen_list object at 0x3d0c490>}
(Pdb) step
> /usr/lib/python2.7/site-packages/odoo/report/interface.py(35)__init__()
-> self._reports[name] = self
(Pdb) cont
> /usr/lib/python2.7/site-packages/odoo/report/interface.py(34)__init__()
-> assert name not in self._reports, 'The report "%s" already exists.' % name
(Pdb) print name
report.preview.report
(Pdb) print self._reports
{'report.custom': <odoo.report.custom.report_custom object at 0x3cfd9d0>, 'report.printscreen.form': <odoo.report.printscreen.ps_form.report_printscreen_list object at 0x3d0cd90>, 'report.workflow.instance.graph': <odoo.addons.base.workflow.workflow_report.report_graph object at 0x43a50d0>, 'report.printscreen.list': <odoo.report.printscreen.ps_list.report_printscreen_list object at 0x3d0c490>}
(Pdb) step
> /usr/lib/python2.7/site-packages/odoo/report/interface.py(35)__init__()
-> self._reports[name] = self
(Pdb) cont
> /usr/lib/python2.7/site-packages/odoo/report/interface.py(34)__init__()
-> assert name not in self._reports, 'The report "%s" already exists.' % name
(Pdb) print name
report.custom
(Pdb) print self._reports
{}
(Pdb) step
> /usr/lib/python2.7/site-packages/odoo/report/interface.py(35)__init__()
-> self._reports[name] = self
(Pdb) cont
> /usr/lib/python2.7/site-packages/odoo/report/interface.py(34)__init__()
-> assert name not in self._reports, 'The report "%s" already exists.' % name
(Pdb) print self._reports
{'report.custom': <odoo.report.custom.report_custom object at 0x3cfd9d0>, 'report.printscreen.form': <odoo.report.printscreen.ps_form.report_printscreen_list object at 0x3d0cd90>, 'report.workflow.instance.graph': <odoo.addons.base.workflow.workflow_report.report_graph object at 0x43a50d0>, 'report.printscreen.list': <odoo.report.printscreen.ps_list.report_printscreen_list object at 0x3d0c490>, 'report.preview.report': <odoo.report.report_sxw.report_sxw object at 0x46f3890>}
(Pdb) print name
report.printscreen.list
(Pdb) print name in self._reports
True
(Pdb) step
AssertionError: Assertio...xists.',)
> /usr/lib/python2.7/site-packages/odoo/report/interface.py(34)__init__()
-> assert name not in self._reports, 'The report "%s" already exists.' % name
(Pdb) pm()
*** NameError: name 'pm' is not defined
(Pdb) pdb.pm()
*** AttributeError: 'module' object has no attribute 'last_traceback'
(Pdb) step
--Return--
> /usr/lib/python2.7/site-packages/odoo/report/interface.py(34)__init__()->None
-> assert name not in self._reports, 'The report "%s" already exists.' % name
(Pdb) pdb.pm()
*** AttributeError: 'module' object has no attribute 'last_traceback'
(Pdb) step
AssertionError: Assertio...xists.',)
> /usr/lib/python2.7/site-packages/odoo/report/printscreen/ps_list.py(20)__init__()
-> super(report_printscreen_list, self).__init__(name)
(Pdb) step
--Return--
> /usr/lib/python2.7/site-packages/odoo/report/printscreen/ps_list.py(20)__init__()->None
-> super(report_printscreen_list, self).__init__(name)
(Pdb) step
AssertionError: Assertio...xists.',)
> /usr/lib/python2.7/site-packages/odoo/report/printscreen/ps_list.py(250)<module>()
-> report_printscreen_list('report.printscreen.list')
(Pdb) cont