Odoo - Python 集成 Google 日历时出现异常

Odoo - Python exception while integrating Google Calendar

我在集成 Google Calendar 的模块并允许 API 访问后将 odoo 日历与 google 的日历同步时遇到问题。

点击 odoo 日历上的 synch 按钮后出现以下异常

    File "/opt/odoo/addons/calendar/calendar.py", line 1328, in _parse_rrule
data['day'] = r._bymonthday[0]

TypeError: 'set' object does not support indexing

我使用的odoo版本是v9

重要观察:

这种情况是 odoo 9 特有的,此后已修复。因此,如果您能够将数据从当前版本迁移到更高版本,那么问题就不会出现了。否则,请仔细阅读以下答案。

1。说明

引发的异常可能是由于安装了 python-dateutil 的版本。

python-dateutil2.4.x(及更高版本)中的某些属性类型已从 list 修改为 set。一个好主意是将 python-dateutil 版本从当前版本降级到 2.2,其中属性具有相同的同步预期类型。

这个问题已经在 odoo 的官方论坛上提出并回答了。您可以访问this link.

2。解决方案

为了解决这个问题,您应该按照以下步骤操作:

  1. 检查dateutil的当前版本
  2. dateutil 版本降级到 2.2(如果适用)
  3. 确保模块已降级
  4. 重新启动 odoo 服务器
  5. 测试google日历同步

这些步骤详述如下:

2.1。检查dateutil版本

转到计算机的命令提示符(终端),无论 OS 是什么,然后键入以下命令:

$ python
>>> import dateutil
>>> dateutil.__version__

如果版本是 2.4 输出将是:

'2.4.0'

2.2。将 dateutil 版本降级为 2.2

你最好在你的机器上安装 pip 这样你就可以输入 :

$ pip install python-dateutil==2.2

这将自动卸载当前版本并安装 2.2

2.3。确保模块已降级

完全执行步骤 2.1 并确保输出为:

'2.2.0'

2.4。重启 odoo 服务器

如果您将 odoo 安装为服务,您可以按如下方式重新启动它:

service odoo-server restart

或(对于Windows):

sc start odoo-server

否则,您必须 kill 运行 连接 odoo 服务器的过程(根据使用的 OS),然后转到 odoo.py(或 odoo-bin for odoo >= 10.0)找到并再次 运行 它。 (不建议这样做,最好运行它作为服务)

2.5。测试google日历同步

转到odoo,打开Calendar应用程序,然后单击Sync with Google按钮,就可以了。