Odoo11 - Использовать метод на бэкенде модели с сайта не зарегистрированным пользователем - PullRequest
0 голосов
/ 31 августа 2018

Я использую Odoo 11 и мне нужно вызвать некоторые методы, объявленные в моделях бэкэнда с веб-сайта незарегистрированным пользователем.

В контроллере я использовал параметр auth = "public" и некоторые .sudo () для записи и поиска .... и все прекрасно работает, но у меня есть несколько методов, вызываемых javascript в backend, которые когда пользователь не вошел в систему что методы я получаю эту ошибку:

/11.0/OCB/odoo/addons/base/ir/ir_http.py(90)_auth_method_user()
raise http.SessionExpiredException("Session expired")

Есть что-то, что я могу сделать? В бэкэнде тоже есть sudo (). Write () или sudo (). Search (), но все равно выдается ошибка .... с зарегистрированным пользователем Porta проблем нет, но мне нужно разрешить использование от незарегистрированных пользователей!

Это метод, который отправляет мне сообщение об ошибке от модели ir.http

@classmethod
def _auth_method_user(cls):
    request.uid = request.session.uid
    if not request.uid:
        raise http.SessionExpiredException("Session expired")

1 Ответ

0 голосов
/ 01 октября 2018

Я решил проблему, переместив все методы backends в контроллеры с параметром auth = "public", и это позволило мне выполнять действия без авторизационных разрешений.

@http.route("/save_values",
                type="json",
                auth="public",
                website=True)
    def save_values(self, value_from_js):
        checklist_line_obj = request.env['worksheet.checklist.line']
        for line_id in value_from_js:
            line = checklist_line_obj.browse(int(line_id))
            vals = value_from_js[line_id]

            line.sudo().write(vals)

А вот и Javascript, который вызывает контроллер:

ajax.jsonRpc("/save_values", "call", {"value_from_js": dataToSendWorksheet})
                    .then(function () {
                        //DO something
                    });
...