Как удалить исключение даты из OpenERP?

Я копаюсь в Интернете OpenERP, чтобы найти, как я могу удалить из него исключение даты. например, я хочу вставить дату типа 12/12/1523. с текущей функциональностью он покажет мне сообщение об ошибке, если я введу дату меньше, чем 1900. Я проверил это с помощью _calendar.py, format.py, validates.py. но у меня не получилось. Если кто-нибудь здесь может помочь мне в этом, это будет очень ценно.


person ScoRpion    schedule 24.11.2011    source источник
comment
Вы пытались найти текст сообщения об ошибке в исходном коде и с помощью Google? Добавление текста сообщения к вашему вопросу здесь может помочь.   -  person Don Kirkby    schedule 26.11.2011
comment
Да, я сделал, но это не помогает   -  person ScoRpion    schedule 07.12.2011


Ответы (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)
person ScoRpion    schedule 08.12.2011

Сообщение об ошибке, которое я получаю при вводе даты в 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.
person Don Kirkby    schedule 07.12.2011