Я копаюсь в Интернете OpenERP, чтобы найти, как я могу удалить из него исключение даты. например, я хочу вставить дату типа 12/12/1523
. с текущей функциональностью он покажет мне сообщение об ошибке, если я введу дату меньше, чем 1900
. Я проверил это с помощью _calendar.py, format.py, validates.py. но у меня не получилось. Если кто-нибудь здесь может помочь мне в этом, это будет очень ценно.
Как удалить исключение даты из OpenERP?
Ответы (2)
Я обнаружил две проблемы в 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)
Сообщение об ошибке, которое я получаю при вводе даты в 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», вы обнаружите проблему с патчем и много обсуждений. Похоже, у вас есть несколько вариантов:
- Не используйте даты до 1900 года.
- Отредактируйте модуль календаря, чтобы реализовать собственную процедуру форматирования вместо
strftime()
. - Обновите до Python 3.2 или 3.3. (См. отчет об ошибке, чтобы узнать, что исправлено в каждой версии.)
- Примените патч к своей версии Python.