Goal : Understanding how to override a default module using a custom module. For demonstration/testing purposes I tried to implement an example custom module that will override the 'web' module in order to modify the login screen & remove/replace the 'manage databases' link.
Odoo Version: odoo V8 saas-5 (on an ubutnu server)
Here is how I tried to implement an example custom module (without any success):
----------------------------------------------------------------------------------------------------------------------------
- I created a directory /opt/odoo/custom/addons for my custom modules
- There I created a subdirectory named e.g. my_module containing these files:
__init__.py
__openerp__.py
views/webclient_templates.xml - In my /etc/odoo-server.conf I added (I really had doubts about this, please comment on this)
addons_path=/opt/odoo/odoo-server/addons,/opt/odoo/odoo-server/openerp/addons,/opt/odoo/custom/addons
Here is the content of the above files
__init__.py I left this empty since when I tried 'import base' or 'import web' the server did not work at all and I found in the log file the message 'ImportError: No module named base' or 'ImportError: No module named web'
__openerp__.py
{
'name': 'rmvmngdbs',
'version': '0.1',
'summary': 'Testing...',
'author': 'George',
'depends': ["base"],
'qweb' : [ "views/webclient_templates.xml", ],
'installable': True,
'auto_install': True,
'active': True,
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
static/src/xml/base.xml
<templates>
<!-- Templates modified at the web start, before loading of a database. -->
<!-- Remove the Manage database link, but keep the Powered by OpenERP-->
<t t-extend="Login">
<t t-jquery="a.oe_login_manage_db" t-operation="replace">
<div> </div>
</t>
</t>
</templates>
The module is loaded and installed without any problem but it doesn't work.
The final question(s)
How can I make the above module work as expected ? Can you understand where is the problem? What is the right way to override the web module (or any other module) with a custom module?
-----------------------------------------------------------------------------------------------------------------------------
For Openerp 7 here is what I did (and it worked):
------------------------------------------------
- I created a directory /opt/openerp/custom_modules for my custom modules
- There I created a subdirectory named e.g. my_module containing these files:
__init__.py
__openerp__.py
static/src/xml/base.xml - In my /etc/openerp-server.conf I added
addons_path = /opt/openerp/server/openerp/addons, /opt/openerp/custom_modules
Here is the content of the above files
__init__.py
import base
__openerp__.py
{
'name': 'rmvmngdbs',
'version': '0.1',
'summary': 'Testing...',
'author': 'George',
'depends': ["base"],
'qweb' : [ "static/src/xml/base.xml", ],
'installable': True,
'auto_install': True,
'active': True,
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
static/src/xml/base.xml
<templates>
<!-- Templates modified at the web start, before loading of a database. -->
<!-- Remove the Manage database link, but keep the Powered by OpenERP-->
<t t-extend="Login">
<t t-jquery="div.oe_login_footer" t-operation="replace">
<div class="oe_login_footer">
<a href="http://www.openerp.com" target="_blank">Powered by <span>OpenERP</span></a>
</div>
</t>
</t>
</templates>
---------------------------------------------------------------------------------------------------------------------------------------------
Related Links and info
I found that the file that controls the login screen view in odoo v8 is inside the web module in
addons/web/views/webclient_templates.xml ( for openerp 7 it is addons/web/static/src/xml/base.xml )
so if I modify this file and then 'upgrade' the web module, it works but these changes will be lost with the next update.
http://superuser.com/questions/770232/how-do-i-remove-links-that-appear-on-the-login-page-of-openerpodoo
https://www.odoo.com/forum/Help-1/question/How-to-override-the-web-module-by-custom-module-21146
https://www.odoo.com/forum/Help-1/question/How-to-remove-Manage-Databases-2615
https://www.odoo.com/forum/Help-1/question/Creating-a-module-53357
About: I'm studying how Odoo works hoping that some day I'll be able to contribute to the project.
---------------------------------------------------------------------------------------------------------------------------------------------
I haven't tried to modify the 'web' module personally, but here are some things that may help: Your __openerp__.py file looks good, but I would change 'depends' to ['base', 'web'] if you are trying to modify the web module. The __init__.py contains the names (excluding file type extensions) of all the python files contained in your module. It doesn't look like you have created a main python file, but you will probably need one depending on what kinds of modifications you are making. If it is just a change to the view you should be able to modify things in the .xml file alone. To override existing modules, you need to inherit the class/view of the module you are trying to modify. Code looks terrible in this comment field, so I will give you a couple examples in an answer below.