Конечная точка API "web/session/authenticate" возвращает ошибку вместо session_info в ODOO V16
Я использую одоо V16. Когда я отправляю запрос POST в конечную точку web/session/authenticate с правильными учетными данными пользователя в теле, например:
{
"params": {
"db":<DB>,
"login": <LOGIN>,
"password": <PASSWORD>
}
}
Я получаю плохой ответ с сообщением об ошибке «Объект NoneType не имеет атрибута« пользователь »» . Ожидаемое поведение — это ответ JSON с информацией о сеансе, например:
{
"jsonrpc": "2.0",
"id": null,
"result": {...}
}
Я не уверен, что это ошибка в новой версии odoo или я что-то делаю не так. Любая помощь приветствуется. Спасибо!
Полный ответ об ошибке :
{ "jsonrpc": "2.0", "id": null, "error": { "code": 200, "message": "Ошибка сервера Odoo", "data": { "name": "builtins.AttributeError" , "debug": "Traceback (последний последний вызов): файл "/odoo-16/odoo/http.py", строка 1963, вызовresponse = request._serve_nodb() File "/odoo-16/odoo/http.py", строка 1516, в _serve_nodb response = self.dispatcher.dispatch(rule.endpoint, args) File "/odoo-16/odoo/http .py", строка 1775, результат отправки = endpoint(**self.request.params) Файл "/odoo-16/odoo/http.py", строка 673, результат route_wrapper = endpoint(self, *args, **params_ok) Файл "/odoo-16/addons/web/controllers/session.py", строка 52, в аутентификации print('session_info', env['ir.http'].session_info()) Файл "/odoo- 16/addons/web_tour/models/ir_http.py", строка 12, в session_info result = super().session_info() File "/odoo-16/addons/web/models/ir_http.py", строка 68, в session_info user = request.env.user AttributeError: объект «NoneType» не имеет атрибута «пользователь» ", "сообщение": "Объект 'NoneType' не имеет атрибута 'user'", "arguments": [ "Объект 'NoneType' не имеет атрибута 'user'" ], "context": {} } } }
1 ответ
Я столкнулся с той же проблемой, и я нашел обходной путь.
Проблема
Проблема возникает, когда вы вызываете API Odoo для аутентификацииweb/session/authenticate
.
Обычно мы отправляем данные для входа вPOST
запрос к серверу
{"params":{"db":"odoo16","login":"admin","password":"***"}}
Я получил сообщение об ошибке:
File "/usr/lib/python3/dist-packages/odoo/addons/mail/models/ir_http.py", line 17, in session_info
user = request.env.user
AttributeError: 'NoneType' object has no attribute 'user'
Решение
Эта проблема возникает, когда у вас есть
many databases
на сервере, поэтому обработчик запросов не может получитьuser
отenv
переменная.
Но если вы обновите свойodoo.conf
и добавилdbfilter = odoo16
, и перезапустите сервер. у вас будет только одна такая база данных:
Затем, если вы вызовете API, вы получите ПРАВИЛЬНЫЙ ответ и
works fine
с тобой,
{
"jsonrpc": "2.0",
"id": null,
"result": {
"uid": 2,
"is_system": true,
"is_admin": true,
"user_context": {
"lang": "en_US",
"tz": "Africa/Cairo",
"uid": 2
},
...
...
...
}
}
Надеюсь, это поможет вам решить вашу проблему, пока Odoo не исправит эту ошибку.