Help

4

Database List hiding issue in Login Page.

Avatar
Remya

I have a Linode Server. I installed openerp in the server. Next i hide the database list using the below code

/etc/openerp-server.conf file

code: list_db = False

Then save ans restart openerp-server service.

After i login from a external system, I cant login to that particular database.

So i removed the code from conf file and login, then there is no issue.

How can i hide the database list without any issue?

Avatar
Discard
2 Answers
6
Avatar
Gopakumar N G
Best Answer

Hi, you can edit this in the base.xml of your web module (path: addons/web/static/src/xml/base.xml). The DB list is defined as

<t t-name="Login.dblist">
<select name="db">
    <t t-foreach="db_list" t-as="db">
        <t t-if="selected_db === db">
            <option t-att-value="db" selected="true">
                <t t-esc="db"/></option>
        </t>
        <t t-if="selected_db !== db">
            <option t-att-value="db"><t t-esc="db"/></option>
        </t>
    </t>
</select>
</t>

Now replace that selection "db" with a text box with the same name of the selection field as

 <t t-name="Login.dblist">
<input name="db" type="text" value="" autofocus="autofocus"/>
 </t>

EDIT :

Then in chrome.js (addons/web/static/src/js/chrome.js) comment the on_db_loaded method (line 676-690) , which is

on_db_loaded: function (result) {
    var self = this;
    this.db_list = result;
    if (!this.selected_db) {
        this.selected_db = result[0];
    }
    this.$("[name=db]").replaceWith(QWeb.render('Login.dblist', { db_list: this.db_list, selected_db: this.selected_db}));
    if(this.db_list.length === 0) {
        this.do_action("database_manager");
    } else if(this.db_list.length === 1) {
        this.$('div.oe_login_dbpane').hide();
    } else {
        this.$('div.oe_login_dbpane').show();
    }
},

comment the above full code.

Then save the files and reload your web page, you don't need to restart the server or upgrade the module as you are editing on files in static folder. Now the dropdown will be displayed as a text field as

DB LIST

EDIT 2

@Sureka

After you have changed the database text field to the center of the page comment the code in chrome.js (addons/web/static/src/js/chrome.js) as shown below:

database_selected: function(db) {
//        var params = $.deparam.querystring();
//        params.db = db;
//        this.remember_last_used_database(db);
//        this.$('.oe_login_dbpane').empty().text(_t('Loading...'));
//        this.$('[name=login], [name=password]').prop('readonly', true);
//        instance.web.redirect('/?' + $.param(params));
    },

which is just above the on_db_loaded method. Then refresh the login page and try to login.

13 Comments
Avatar
Discard
Avatar
Remya
-

Its not working. I give database name in text field. After that i click on the username text box, the page is refreshing. So i first entered username,password then database, but it also refreshing the page.

Avatar
Gopakumar N G
-

Are working in v7? I have tested it in v6.1. Anyway let me check it.

Avatar
Remya
-

Working with openerp7.

Avatar
Gopakumar N G
-

I have updated the answer. Now check.

Avatar
Remya
-

Thanks. Its working.

Avatar
GG
-

@Gopakumar and Remya , I have a question about this. With addition to that I need to move the Database field to the center of the page above the Username field. I could achieve that but after entering the database name the page gets reloading. Even I tried with username and password first and then database , then also the page gets refreshing. I am using OpenERP v7

Avatar
Gopakumar N G
-

@Sureka what are the changes you have added ?

Avatar
GG
-

<t t-extend="Login"> <t t-jquery="div.oe_login_dbpane" t-operation="replace"> <form action="" method="post"> <ul> <li>Database</li> <li><input name="db" type="text" value="" autofocus="autofocus"/></li> </ul> </form> </t>

Avatar
GG
-

@Gopakumar, In a separate custom module in static/src/xml/base.xml , I have included the above code mentioned in previous comment of mine to get the Database name as an text field and also the code to remove ''Manage Database' link. I also commented the lines 676-690 in chrome.js. Sorry I couldn't present my code clearly in above comment.

Avatar
Gopakumar N G
-

@Sureka: I have updated the answer. Please check.

Avatar
GG
-

@Gopakumar, Now after editing in chrome.js , I can't even log in. If I click login button nothing happens after that.

Avatar
Gopakumar N G
-

@Sureka, But its working in my system. Did you just comment the code in the "database_selected: function(db)" or the method itself?

Avatar
GG
-

@Gopakumar, Now its working.Sorry there was a mistake in my base xml. I should extend the class oe_login_pane.But initially i extended the oe_login_dbpane, so I can't login. Sorry once again. and thanks for your answer and reviews.

3
Avatar
Jasad
Best Answer

Hi Remya,

When you run the openerp server as service, you can make use of the --db-filter=db_name option.

ie, ./openerp-server --db-filter=test_7_db

Avatar
Discard