如何从OpenERP中删除日期例外?

时间:2011-11-24 12:39:59

标签: python openerp

我正在挖掘OpenERP网络,以了解如何从中删除日期异常。例如,我想插入12/12/1523之类的日期。如果我输入的日期少于1900,则当前功能会显示错误消息。我用_calendar.py,format.py,validates.py检查了它。但我没有成功。如果这里有人可以帮助我,那将是非常值得的。

2 个答案:

答案 0 :(得分:3)

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

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

01/01/1900

2 - openerp/i18n/format.py时出现验证错误 试图保存

第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)

答案 1 :(得分: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 !'))

如果查看the documentation for date.strftime(),您会看到以下内容:

  

strftime()工作的确切年限也因平台而异。无论平台如何,1900年前都无法使用。

询问谷歌先生“python strftime 1900”发现an issue有一个补丁和很多讨论。听起来你有几个选择:

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