Skip to Content
Menu
This question has been flagged
1 Reply
5434 Views

Hello All,

I'm added button on the timesheet list view and opened wizard on button click. For this, I'm called python in the js file and when I pass function value in do_action() method(for res_id) of js then it will open wizard in the second attempt, in the first attempt it open the new wizard. It means(this.do_action called before rpc.query) function calling late. The expected result should be rpc.query call before this.do_action. variable defined as 'test'.

My Python and Js code are here:

class TimesheetHelpButton(models.Model):
_name = 'timesheet.help'
_description = 'Timesheet Help Button'

@api.model
def get_timesheet_help_document(self):
uid = request.session.uid
#timesheet_document_view_id = self.env['document.document'].sudo().search([])
data = {
'uid': uid,
'timesheet_document_view_id': 4,
}
return data

Js Code:

odoo.define('custom_project.web_export_view', function (require) {

"use strict";
var core = require('web.core');
var ListView = require('web.ListView');
var ListController = require("web.ListController");
var rpc = require('web.rpc');
var test = 0;

var includeDict = {

renderButtons: function () {
this._super.apply(this, arguments);
if (this.modelName === "account.analytic.line") {
var your_btn = this.$buttons.find('button.o_button_help')
your_btn.on('click', this.proxy('o_button_help'))
}
},
o_button_help: function(){
var self = this;
event.stopPropagation();
event.preventDefault();
rpc.query({
model: 'timesheet.help',
method: 'get_timesheet_help_document',
args: [],
}).then(function (res) {
test = res['timesheet_document_view_id'];
}).done(function(){
});
setTimeout(myfonction, 5000);
function myfonction() {}
this.do_action({
name: ("Help"),
type: 'ir.actions.act_window',
res_model: 'document.document',
view_mode: 'form,tree,kanban',
view_type: 'form',
views: [[false, 'form'],[false, 'list'],[false, 'kanban']],
target: 'new',
res_id: test,
},{on_reverse_breadcrumb: function(){ return self.reload();}})
},

};
ListController.include(includeDict);
});

Also find screenshots below:


Thanks in advance

Avatar
Discard
Best Answer


o_button_help: function(){
var self = this;
event.stopPropagation();
event.preventDefault();
rpc.query({
model: 'timesheet.help',
method: 'get_timesheet_help_document',
args: [],
}).then(function (res) {
test = res['timesheet_document_view_id'];
self.do_action({
name: ("Help"),
type: 'ir.actions.act_window',
res_model: 'document.document',
view_mode: 'form,tree,kanban',
view_type: 'form',
views: [[false, 'form'],[false, 'list'],[false, 'kanban']],
target: 'new',
res_id: test,
},{on_reverse_breadcrumb: function(){ return self.reload();}})
});
},


Avatar
Discard
Author

Thanks Jiger.... It's working.

Related Posts Replies Views Activity
1
Sep 23
6284
1
Jan 23
9609
0
Jul 19
6409
1
Jul 23
2452
1
Nov 22
930