如何从OpenERP中移除日期异常?
我正在研究OpenERP网页,想找出怎么去掉日期的限制。比如,我想输入一个日期,比如12/12/1523
。现在的功能是,如果我输入一个早于1900
的日期,它会给我显示错误信息。我查看了_calender.py、format.py和validates.py这些文件,但没有成功。如果这里有人能帮我解决这个问题,我会非常感激。
2 个回答
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年之前的年份都不能使用。
在谷歌上搜索“python strftime 1900”会找到一个问题,里面有补丁和很多讨论。看起来你有几个选择:
- 不要使用1900年之前的日期。
- 修改日历模块,自己实现一个格式化的函数,而不是用
strftime()
。 - 升级到Python 3.2或3.3版本。(查看问题报告,了解每个版本修复了什么。)
- 将补丁应用到你自己的Python版本上。
3
我在openerp-web中发现了两个问题:
1 - 日期选择器的日历有限制,不能选择早于
01/01/1900
2 - 在尝试保存时,openerp/i18n/format.py
会出现验证错误
关于第一个问题,可以很容易地在
openerp/static/calandar/calendar.js
=> find:
param_default("range",[1900,2999])
=> and replace with:
param_default("range",[1,2999])
关于第二个问题,替换在
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)