2016-07-05 64 views
0

我想为odoo创建一次点击注销,因此我创建了odoo主题并添加了注销图标,当您单击该图标时,用户已注销。所以我有以.xml如何一次点击注销odoo 9

<xpath expr="//ul[@class='nav navbar-nav navbar-right oe_user_menu_placeholder']" position="inside"> 
    <li><a href="#" class="logout" title="Logout"><i class="fa fa-sign-out"></i></a></li> 
</xpath> 

和在Java脚本代码的一段代码.JS

var UserMenu = require('web.UserMenu'); 
var user_menu=new UserMenu(self); 
$(document).ready(function() { 
$(".logout").click(function() { 
    $(".logout").click(function() { 
     user_menu.on_menu_logout(); 
    }); 
    }); 
}); 

所以我调用on_menu_logout()函数卷筒纸模块on_menu_logout ()也叫,但在功能this.trigger('user_logout');函数没有调用。所以如果你有任何想法,请与我分享解决这个问题。

回答

0

做到这一点的另一种方法是调用控制注销的http控制器。

控制器的路径为“/网络/会话/注销”

调用此控制器,它会立即注销该用户并结束他的会话。

您可以调用该控制器像这样在你的JavaScript:

为此,一个低级别的API会话存在于()的物体(通常可通过openerp.session):的RPC方法。

此方法只需要一个绝对路径(要调用的JSON路由的绝对URL)以及属性到值的映射(作为Python方法的关键字参数传递)。该函数获取Python方法的返回值,并将其转换为JSON。

例如,调用数据集的重排序()控制器:

var session = require('web.session'); 
session.rpc('/web/session/logout', {}).then(function (result) { 
console.log('Logout Successful') 
}, function() { 
// an error occured during during call 
}); 
+0

thanx @ Bhavya回复,但该代码将生成一个错误,** Odoo服务器错误 回溯(最近调用最后一次): 文件“/usr/lib/python2.7/dist-packages/openerp/ http.py“,第646行,在_handle_exception中 return super(JsonRequest,self)._ handle_exception(例外) 文件”/usr/lib/python2.7/dist-packages/openerp/http.py“,第683行,in调度 result = self._call_function(** self.params) 文件“/usr/lib/python2.7/dist-packages/openerp/http.py”,第295行,在_call_function中 raise werkzeug.exceptions.BadRequest( msg%params) BadRequest:400:Bad Request ** – Debasish

+0

函数声明为能够处理'http'类型的请求,但被调用与'json'类型的请求一起,意味着我们应该用类型'http'的请求调用控制器,所以建议我如何在类型'http'的请求中调用函数。 – Debasish

0

我得到的回答解决这个问题,我们不需要任何额外的JavaScript来解决这个只要按照这个代码,并添加一个属性叔AttF设定-HREF一个标签,所以按照这个代码,即

<li><a t-attf-href="/web/session/logout?redirect=/web/login" title="Logout"><i class="fa fa-sign-out iconsize"></i></a></li> 

由于