【问题标题】:Odoo - Python exception while integrating Google CalendarOdoo - 集成 Google 日历时出现 Python 异常
【发布时间】:2018-01-17 16:11:40
【问题描述】:

在集成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

【问题讨论】:

    标签: python exception google-calendar-api odoo python-dateutil


    【解决方案1】:

    重要观察:

    这种情况是 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. 测试谷歌日历同步

    这些步骤详述如下:

    2.1.查看dateutil版本

    转到机器的命令提示符(终端),无论操作系统是什么,然后键入以下命令:

    $ 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 服务器的进程(根据使用的操作系统),然后转到 odoo.py(或 odoo >= 10.0odoo-bin)所在的位置,然后再次运行它。 (不建议这样做,最好作为服务运行)

    2.5。测试谷歌日历同步

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

    【讨论】:

    • 哇,这个变化两年后,odoo 仍然没有解决他们的问题或停止使用私有接口?
    • 看来这个问题已经在更高版本的odoo中修复了,according to the source code。正确的做法是更新 Odoo,而不是降级 dateutil。
    • 我只是忘记指定这是针对 odoo 9 的,我将进行编辑。感谢您的建设性观察。不过,由于已经进行了更改,将数据库从第 9 版迁移到更高版本可能会有点微妙。
    猜你喜欢
    • 2011-11-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-26
    • 1970-01-01
    • 1970-01-01
    • 2012-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多