2

我正在通过 OpenERP web 挖掘如何从中删除日期异常。例如,我想插入一个日期,如12/12/1523. 使用当前功能,如果我输入的日期少于那时,它将向我显示一条错误消息1900。我已经用 _calendar.py、format.py、validates.py 进行了检查。但我没有成功。如果这里有人可以帮助我完成这将是非常可观的。

4

2 回答 2

3

我在 openerp-web 中发现了两个问题:

1 - 日期控制日历受到限制,不能低于

01/01/1900

openerp/i18n/format.py2 -尝试保存时出现验证错误

第1点,javascript小部件可以很容易地固定在

openerp/static/calandar/calendar.js

=> find:

    param_default("range",[1900,2999])

=> and replace with:

    param_default("range",[1,2999])

第2点,替换

openerp/i18n/format.py

=> find the two occurances of:

    return time.strftime(server_format, value)

=> and replace with:

    return mx.DateTime.Date(value[0],value[1],value[2],value[3],value[4],value[5]).strftime(server_format)
于 2011-12-08T04:59:36.013 回答
0

在 1523 中输入日期时收到的错误消息是:

日期时间值无效!年份必须大于 1899 !

如果您在客户端代码中搜索该错误消息,您将在以下位置找到client/bin/widget/view/form_gtk/calendar.py

try:
    return date.strftime(DHM_FORMAT)
except ValueError:
    common.message(_('Invalid datetime value! Year must be greater than 1899 !'))

如果您查看的文档date.strftime(),您将看到以下内容:

strftime() 工作的确切年份范围也因平台而异。无论平台如何,都不能使用 1900 年之前的年份。

向 Google 先生询问“python strftime 1900”会发现补丁存在问题并进行了大量讨论。听起来你有几个选择:

  1. 不要使用 1900 年之前的日期。
  2. 编辑日历模块以实现您自己的格式化例程,而不是strftime().
  3. 升级到 Python 3.2 或 3.3。(有关每个版本中修复内容的详细信息,请参阅问题报告。)
  4. 将补丁应用到您自己的 Python 版本。
于 2011-12-07T18:19:05.880 回答