# Avoid OverflowErrors in Date*Indexes

from Products.PluginIndexes.DateIndex.DateIndex import DateIndex
from Products.PluginIndexes.DateRangeIndex.DateRangeIndex import DateRangeIndex
from DateTime import DateTime

minDate = DateTime(-2113, 0)
maxDate = DateTime(4008, 0)

def _convert(self, value, default=None):
    try:
        return self.__old_convert(value, default)
    except OverflowError:
        return self.__old_convert(maxDate, default)

DateIndex.__old_convert = DateIndex._convert
DateIndex._convert = _convert

def _convertDateTime(self, value):
    try:
        return self.__old_convertDateTime(value)
    except OverflowError:
        return self.__old_convertDateTime(maxDate)

DateRangeIndex.__old_convertDateTime = DateRangeIndex._convertDateTime
DateRangeIndex._convertDateTime = _convertDateTime

