69 Star 259 Fork 173

彩虹工作室 / whcat+wecom for odoo

 / 详情

关于同步通讯录时,遇到这个问题,不知是否个例,我先记录下!

待办的
任务
创建于  
2023-11-02 08:49

2023-11-02 00:35:45,762 27512 ERROR o3 odoo.http: Exception during request handling.
Traceback (most recent call last):
File "/home/odoo/odoo/odoo/http.py", line 1989, in call
response = request._serve_db()
File "/home/odoo/odoo/odoo/http.py", line 1584, in _serve_db
return service_model.retrying(self._serve_ir_http, self.env)
File "/home/odoo/odoo/odoo/service/model.py", line 133, in retrying
result = func()
File "/home/odoo/odoo/odoo/http.py", line 1611, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "/home/odoo/odoo/odoo/http.py", line 1809, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "/home/odoo/odoo/odoo/addons/base/models/ir_http.py", line 154, in _dispatch
result = endpoint(**request.params)
File "/home/odoo/odoo/odoo/http.py", line 697, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "/home/odoo/odoo/odoo/addons/web/controllers/dataset.py", line 46, in call_button
action = self._call_kw(model, method, args, kwargs)
File "/home/odoo/odoo/odoo/addons/web/controllers/dataset.py", line 33, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "/home/odoo/odoo/odoo/api.py", line 462, in call_kw
model.env.flush_all()
File "/home/odoo/odoo/odoo/api.py", line 732, in flush_all
self._recompute_all()
File "/home/odoo/odoo/odoo/api.py", line 728, in _recompute_all
self[field.model_name]._recompute_field(field)
File "/home/odoo/odoo/odoo/models.py", line 6170, in _recompute_field
field.recompute(records)
File "/home/odoo/odoo/odoo/fields.py", line 1365, in recompute
apply_except_missing(self.compute_value, recs)
File "/home/odoo/odoo/odoo/fields.py", line 1338, in apply_except_missing
func(records)
File "/home/odoo/odoo/odoo/fields.py", line 1387, in compute_value
records._compute_field_value(self)
File "/home/odoo/odoo/odoo/models.py", line 4203, in _compute_field_value
fields.determine(field.compute, self)
File "/home/odoo/odoo/odoo/fields.py", line 97, in determine
return needle(*args)
File "/home/odoo/odoo/odoo/wecom/wecom_contacts_sync/models/wecom_user.py", line 249, in _compute_department_leader
if leader_list[index] == "1":
IndexError: string index out of range

对wecom_user 作如下修改

        # if user.isleader:  # type: ignore
        #     department_leader = ""
        #     for index, department in enumerate(department_list):
        #         department_id = self.env["wecom.department"].search(
        #             [
        #                 ("department_id", "=", int(department)),
        #                 ("company_id", "=", user.company_id.id),
        #             ],
        #             limit=1,
        #         )  # type: ignore

        #         is_leader = _("No")
        #         if leader_list[index] == "1":
        #             is_leader = _("Yes")
        #         department_leader_str = _("Department head [%s]: %s ;") % (
        #             department_id.name,
        #             is_leader,
        #         )
        #         # if len(department_list) > 1 and (index < len(department_list) -1) :
        #         #     department_leader_str += "\n"
        #         department_leader += department_leader_str

        #     user.department_leader = department_leader  # type: ignore
        # else:
        #     user.department_leader = ""  # type: ignore

修改如下 追加边界判断if index < len(leader_list):

        if user.isleader:  # type: ignore
            department_leader = ""
            for index, department in enumerate(department_list):
                if index < len(leader_list):
                    department_id = self.env["wecom.department"].search(
                        [
                            ("department_id", "=", int(department)),
                            ("company_id", "=", user.company_id.id),
                        ],
                        limit=1,
                    )  # type: ignore

                    is_leader = _("No")
                    if leader_list[index] == "1":
                        is_leader = _("Yes")
                    department_leader_str = _("Department head [%s]: %s ;") % (
                        department_id.name,
                        is_leader,
                    )
                    department_leader += department_leader_str

                user.department_leader = department_leader  # type: ignore
            else:
                user.department_leader = ""  # type: ignore

评论 (0)

流光溢彩 创建了任务
流光溢彩 修改了描述
展开全部操作日志

登录 后才可以发表评论

状态
负责人
项目
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
预计工期 (小时)
参与者(1)
Python
1
https://gitee.com/rainbowstudio/wecom.git
git@gitee.com:rainbowstudio/wecom.git
rainbowstudio
wecom
whcat+wecom for odoo

搜索帮助