One template have 2 t-name. one gets data from py another one is for send getting data to py for operation. When call py controler method through ajax from one form with t-name it works but when call from another form with different t-name it not call the py method in odoo 10. i written this js code and xml code. plz find a solution for who to call py controller method.
openerp.sass_modules_configuration = function (instance) {
var QWeb = instance.web.qweb;
instance.web.client_actions.add('get_modules', 'instance.web.DataGenericImport');
instance.web.DataGenericImport = instance.web.Widget.extend({
template: 'GenericMapView',
init: function (parent, action) {
var self = this;
this._super.apply(this, arguments);
this.res_model = action.params.model;
this.parent_context = action.params.context || {};
this.id = null;
},
start: function () {
var self = this;
this.$(".get_modules").click(function() {
$.ajax({
url: "/sass_modules_configuration/get_modules",
type: "POST",
dataType: 'json',
traditional: true,
async: false,
beforeSend: function() {
$('body').prepend('<div id="ajaxFormLoader" style="position:fixed; top:0; right: 0; bottom:0; left:0; z-index: 10000; background: rgba(51, 136, 204, 0.3) url('+loaderIcon+') no-repeat center;"></div>');
},
success: function(data){
var installed_modules = []
var uninstalled_modules = []
for (var i=0; i<data.installed_modules.length;i++){
installed_modules.push(data.installed_modules[i]);
}
for (var i=0; i<data.uninstalled_modules.length;i++){
uninstalled_modules.push(data.uninstalled_modules[i]);
}
return self.$el.html(QWeb.render('GenericMappedtView',{'installed_module_list': installed_modules,'uninstalled_module_list': uninstalled_modules}));
}
});
});
$('.install-modules').click(function(){
var self = this;
var product_data = new FormData();
var request = new XMLHttpRequest();
request.onreadystatechange = function() {
if (request.readyState === 4){
if( request.status == 200) {
}
}
};
console.log(product_data);
request.open("POST", "/sass_modules_configuration/install_modules");
request.send(product_data);
});
}
});
};
xml code -->>
<template id="template" xml:space="preserve">
<t t-name="GenericMapView">
<form action="" method="post" enctype="multipart/form-data" class="oe_import" id="form">
<div class="oe_view_manager oe_view_manager_current">
<div class="oe_view_manager_header">
<h1 class="align">Manage Modules</h1>
</div>
</div>
<div class="oe_import_box">
<button class='get_modules btn btn-info' type="button">Get Modules</button>
</div>
<!-- <div id="flash_success" style="padding-left:0 15px; 15px 0"/> -->
</form>
</t>
<t t-name="GenericMappedtView">
<form action="/sass_modules_configuration/install_modules" method="post" >
<input type="hidden" name="csrf_token" t-att-value="csrf_token"/>
<div class="oe_import_box">
<span><h1 class="align">Manage Modules</h1></span>
<div class="display_list oe_import_box">
<div><h2 class="align">Installed Modules<hr/></h2></div>
<div>
<ul>
<li t-foreach="installed_module_list" t-as="module">
<input type="checkbox" name="installed" checked="checked" readonly="True" t-att-value="module"/>
<label for="installed"><t t-esc="module"/></label>
</li>
</ul>
</div>
</div>
<div class="display_list oe_import_box">
<div><h2 class="align">Not Installed Modules<hr/></h2></div>
<button class='install-modules btn btn-info' type="button">Install</button>
<div>
<ul>
<li t-foreach="uninstalled_module_list" t-as="module">
<input type="checkbox" name="uninstalled" id="to_install" t-att-value="module"/>
<label for="uninstalled"><t t-esc="module"/></label>
</li>
</ul>
</div>
</div>
</div>
</form>
</t>
</template>
update question with the route, also check the type given in route.