Home Action Odoo 14
Fix debug mode only

Assalamualaikum warahmatullahi wabarakatuh.

Bismillah.. pada kesempatan kali ini saya akan berbagi sedikit pengalaman pada saat development dimana ketika kita menambahkan home action user pada saat login tidak masuk ke halaman yang sudah kita setting setiap user, tetapi jika kita menggunakan debug mode itu tidak terjadi. jadi bagaimana caranya agar tidak perlu debug mode untuk menggunkan fitur home action? cara nya cukup mudah, bisa mengedit langsung pada modul web web\static\src\js\chrome\web_client.js pada baris 84 seperti berikut:

if (!_.isEqual(_.keys(state), ["cids"])) {
     return this.on_hashchange();
 } else {
    this._ignore_hashchange=true;
 

namun ada cara ini tidak disarankan mengedit langsung modul web, disini saya memilih cara lain yaitu membuat modul sederhana, pertama-tama kita generate modul terlebih dahulu, 

python3.8 odoo-server scaffold -t default ab_homeaction_fix <path lokasi modul>

selanjutnya buat folder static/src/js pada modul ab_homeaction_fix.
buat file baru dengan nama web_client.js pada folder yang sudah kita buat tadi, kemudian kita inherit function show_application pada web_client.js yang ada di modul web seperti berikut

web_client.js

odoo.define('ab_homeaction_fix.web_client', function(require) {
    'use strict';

    var WebClient=require('web.WebClient');
    var session=require('web.session');

    WebClient.include({
        async show_application() {
            this.set_title();
    
            await this.menu_dp.add(this.instanciate_menu_widgets());
            $(window).bind('hashchange', this.on_hashchange);
    
            const state=$.bbq.getState(true);
            if (!_.isEqual(_.keys(state), ["cids"])) {
                return this.on_hashchange();
            } else {
             this._ignore_hashchange=true;
         
    
            const [data] =await this.menu_dp.add(this._rpc({
                model: 'res.users',
                method: 'read',
                args: [session.uid, ["action_id"]],
            }));
            if (data.action_id) {
                await this.do_action(data.action_id[0]);
                this.menu.change_menu_section(this.menu.action_id_to_primary_menu_id(data.action_id[0]));
                return;
            }
    
            if (!this.menu.openFirstApp()) {
                this.trigger_up('webclient_started');
            }
        },
    });
});

seteah itu edit file template.xml pada folder views serperti berikut

template.xml

<odoo>
    <data>
      <template id="assets_backend" inherit_id="web.assets_backend">
          <xpath expr="." position="inside">
              <script src="/ab_homeaction_fix/static/src/js/web_client.js" type="text/javascript"/>
          </xpath>
      </template>
    </data>
</odoo>

langkah terakhir edit manifest seperti berikut dan install modul yang sudah kita buat ini

__manifest__.py

{
    'name': "Home Action Fix Odoo 14",

    'summary': """
        Home Action Fix Odoo 14
    """,

    'description': """
        Home Action Fix Odoo 14
    """,

    'author': "PT. ISMATA NUSANTARA ABADI",
    'website': "http://www.ismata.co.id",
    'category': 'Uncategorized',
    'version': '0.1',
    'depends': ['base'],
    'data': ['views/templates.xml'],
}

 

Sekarang tidak atau menggunakn debug mode fitur homeaction akan bekerja sebagaimana mestinya, sekian sharing pengalaman dari saya, Wassalamualaikum Warahmatullahi Wabarakatuh.




Menggunakan Fungsi Utama Dari Method Default Yang Sudah Di-overide