İçereği Atla
Menü
Bu soru işaretlendi
3 Cevaplar
8351 Görünümler

Hello Guys. I'm trying to logout out by using this url:
​http://localhost:8069/web/session/logout?sp=Odoo+Dev+TEST&tenantDomain=carbon.super​

Someone know how can I logout by using that string? Because i'm doing an integration by using ws2o, but there is no way to redirect by using other logout url, it must be that one and when I try to use that url, I receive the fallowing error:

test_auth werkzeug: Error on request:
Traceback (most recent call last):
File "/home/lliege/odoo/odoo12/odoo12-env/lib/python3.6/site-packages/werkzeug/serving.py", line 304, in run_wsgi
execute(self.server.app)
File "/home/lliege/odoo/odoo12/odoo12-env/lib/python3.6/site-packages/werkzeug/serving.py", line 292, in execute
application_iter = app(environ, start_response)
File "/home/lliege/odoo/odoo12/odoo/odoo/service/server.py", line 409, in app
return self.app(e, s)
File "/home/lliege/odoo/odoo12/odoo/odoo/service/wsgi_server.py", line 128, in application
return application_unproxied(environ, start_response)
File "/home/lliege/odoo/odoo12/odoo/odoo/service/wsgi_server.py", line 117, in application_unproxied
result = odoo.http.root(environ, start_response)
File "/home/lliege/odoo/odoo12/odoo/odoo/http.py", line 1320, in __call__
return self.dispatch(environ, start_response)
File "/home/lliege/odoo/odoo12/odoo/odoo/http.py", line 1293, in __call__
return self.app(environ, start_wrapped)
File "/home/lliege/odoo/odoo12/odoo12-env/lib/python3.6/site-packages/werkzeug/middleware/shared_data.py", line 220, in __call__
return self.app(environ, start_response)
File "/home/lliege/odoo/odoo12/odoo/odoo/http.py", line 1488, in dispatch
result = ir_http._dispatch()
File "/home/lliege/odoo/odoo12/odoo/addons/auth_signup/models/ir_http.py", line 19, in _dispatch
return super(Http, cls)._dispatch()
File "/home/lliege/odoo/odoo12/odoo/addons/web_editor/models/ir_http.py", line 22, in _dispatch
return super(IrHttp, cls)._dispatch()
File "/home/lliege/odoo/odoo12/odoo/addons/http_routing/models/ir_http.py", line 397, in _dispatch
result = super(IrHttp, cls)._dispatch()
File "/home/lliege/odoo/odoo12/odoo/addons/utm/models/ir_http.py", line 26, in _dispatch
response = super(IrHttp, cls)._dispatch()
File "/home/lliege/odoo/odoo12/odoo/odoo/addons/base/models/ir_http.py", line 207, in _dispatch
return cls._handle_exception(e)
File "/home/lliege/odoo/odoo12/odoo/addons/utm/models/ir_http.py", line 31, in _handle_exception
response = super(IrHttp, cls)._handle_exception(exc)
File "/home/lliege/odoo/odoo12/odoo/odoo/addons/base/models/ir_http.py", line 177, in _handle_exception
return request._handle_exception(exception)
File "/home/lliege/odoo/odoo12/odoo/odoo/http.py", line 776, in _handle_exception
return super(HttpRequest, self)._handle_exception(exception)
File "/home/lliege/odoo/odoo12/odoo/odoo/http.py", line 314, in _handle_exception
raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])
File "/home/lliege/odoo/odoo12/odoo/odoo/tools/pycompat.py", line 87, in reraise
raise value
File "/home/lliege/odoo/odoo12/odoo/odoo/addons/base/models/ir_http.py", line 203, in _dispatch
result = request.dispatch()
File "/home/lliege/odoo/odoo12/odoo/odoo/http.py", line 835, in dispatch
r = self._call_function(**self.params)
File "/home/lliege/odoo/odoo12/odoo/odoo/http.py", line 346, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/home/lliege/odoo/odoo12/odoo/odoo/service/model.py", line 97, in wrapper
return f(dbname, *args, **kwargs)
File "/home/lliege/odoo/odoo12/odoo/odoo/http.py", line 339, in checked_call
result = self.endpoint(*a, **kw)
File "/home/lliege/odoo/odoo12/odoo/odoo/http.py", line 941, in __call__
return self.method(*args, **kw)
File "/home/lliege/odoo/odoo12/odoo/odoo/http.py", line 519, in response_wrap
response = f(*args, **kw)
TypeError: logout() got an unexpected keyword argument 'sp' - - -

Avatar
Vazgeç
Üretici En İyi Yanıt

I found a way to bypass those parameters by just adding undefined number of parameters on logout function.

On addons/web/controllers, just add **kwargs on def:

@http.route('/web/session/logout', type='http', auth="none")    

def logout(self, redirect='/web', **kwargs):        

request.session.logout(keep_db=True)        

return werkzeug.utils.redirect(redirect, 303)

Or you can just overwrite the function with 

import odoo.addons.web.controllers.main as mainclass 
Home2(main.Home):
@http.route('/test', type="http", auth="none")
def index(self):
return "<div>This is my new home page.</div>"
Avatar
Vazgeç
En İyi Yanıt

Hi Rafael,

You can directly logout by using following url

http://localhost:8069/web/session/logout

Thanks.


Avatar
Vazgeç
Üretici

I said I need to use this URL specifically: ​http://localhost:8069/web/session/logout?sp=Odoo+Dev+TEST&tenantDomain=carbon.super​

It must be that url because of the wso2 integration!

İlgili Gönderiler Cevaplar Görünümler Aktivite
1
May 19
6403
0
Eki 23
1538
2
Ağu 23
2065
0
Ara 19
3968
1
Kas 19
10201