Skip to Content
Menu
Musisz się zarejestrować, aby móc wchodzić w interakcje z tą społecznością.
To pytanie dostało ostrzeżenie
3 Odpowiedzi
8353 Widoki

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' - - -

Awatar
Odrzuć
Autor Najlepsza odpowiedź

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>"
Awatar
Odrzuć
Najlepsza odpowiedź

Hi Rafael,

You can directly logout by using following url

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

Thanks.


Awatar
Odrzuć
Autor

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!

Powiązane posty Odpowiedzi Widoki Czynność
1
maj 19
6403
0
paź 23
1538
2
sie 23
2065
0
gru 19
3970
1
lis 19
10202