1017 |
1017 |
def __init__(self, name, value=None, **kwargs):
|
1018 |
1018 |
minimum_date = kwargs.pop('minimum_date', None)
|
1019 |
1019 |
if minimum_date:
|
1020 |
|
self.minimum_date = misc.get_as_datetime(minimum_date).timetuple()[:3]
|
|
1020 |
self.minimum_date = misc.get_as_datetime(minimum_date)
|
1021 |
1021 |
maximum_date = kwargs.pop('maximum_date', None)
|
1022 |
1022 |
if maximum_date:
|
1023 |
|
self.maximum_date = misc.get_as_datetime(maximum_date).timetuple()[:3]
|
|
1023 |
self.maximum_date = misc.get_as_datetime(maximum_date)
|
1024 |
1024 |
if kwargs.pop('minimum_is_future', False):
|
1025 |
1025 |
if kwargs.get('date_can_be_today'):
|
1026 |
|
self.minimum_date = time.localtime()
|
|
1026 |
self.minimum_date = datetime.date.today()
|
1027 |
1027 |
else:
|
1028 |
|
self.minimum_date = (datetime.datetime.today() + datetime.timedelta(1)).timetuple()
|
|
1028 |
self.minimum_date = (datetime.datetime.today() + datetime.timedelta(1))
|
1029 |
1029 |
if kwargs.pop('date_in_the_past', False):
|
1030 |
1030 |
if kwargs.get('date_can_be_today'):
|
1031 |
|
self.maximum_date = time.localtime()
|
|
1031 |
self.maximum_date = datetime.date.today()
|
1032 |
1032 |
else:
|
1033 |
|
self.maximum_date = (datetime.datetime.today() - datetime.timedelta(1)).timetuple()
|
|
1033 |
self.maximum_date = (datetime.datetime.today() - datetime.timedelta(1))
|
1034 |
1034 |
|
1035 |
1035 |
if 'date_can_be_today' in kwargs:
|
1036 |
1036 |
del kwargs['date_can_be_today']
|
... | ... | |
1063 |
1063 |
if value[0] < 1800 or value[0] > 2099:
|
1064 |
1064 |
self.error = _('invalid date')
|
1065 |
1065 |
self.value = None
|
1066 |
|
elif self.minimum_date and value[:3] < self.minimum_date[:3]:
|
|
1066 |
elif self.minimum_date and value[:3] < self.minimum_date.timetuple()[:3]:
|
1067 |
1067 |
self.error = _('invalid date: date must be on or after %s') % strftime(
|
1068 |
|
misc.date_format(), datetime.datetime(*self.minimum_date[:6]))
|
1069 |
|
elif self.maximum_date and value[:3] > self.maximum_date[:3]:
|
1070 |
|
format_string = misc.date_format()
|
|
1068 |
misc.date_format(), self.minimum_date)
|
|
1069 |
elif self.maximum_date and value[:3] > self.maximum_date.timetuple()[:3]:
|
1071 |
1070 |
self.error = _('invalid date; date must be on or before %s') % strftime(
|
1072 |
|
misc.date_format(), datetime.datetime(*self.maximum_date[:6]))
|
|
1071 |
misc.date_format(), self.maximum_date)
|
1073 |
1072 |
|
1074 |
1073 |
def add_media(self):
|
1075 |
1074 |
self.prepare_javascript()
|
... | ... | |
1087 |
1086 |
def date_format(self):
|
1088 |
1087 |
return self.get_format_string().replace('%Y', 'yyyy').replace(
|
1089 |
1088 |
'%m', 'mm').replace('%d', 'dd').replace('%H', 'hh').replace(
|
1090 |
|
'%M', 'ii').replace('%S', 'ss')
|
|
1089 |
'%M', 'ii').replace('%S', 'ss')
|
1091 |
1090 |
|
1092 |
1091 |
def start_date(self):
|
1093 |
1092 |
return self.date_format().replace(
|
1094 |
|
'yyyy', '%04d' % self.minimum_date[0]).replace(
|
1095 |
|
'mm', '%02d' % self.minimum_date[1]).replace(
|
1096 |
|
'dd', '%02d' % self.minimum_date[2]).replace(
|
|
1093 |
'yyyy', '%04d' % self.minimum_date.year).replace(
|
|
1094 |
'mm', '%02d' % self.minimum_date.month).replace(
|
|
1095 |
'dd', '%02d' % self.minimum_date.day).replace(
|
1097 |
1096 |
'hh', '00').replace('ii', '00').replace('ss', '00')
|
1098 |
1097 |
|
1099 |
1098 |
def end_date(self):
|
1100 |
1099 |
return self.date_format().replace(
|
1101 |
|
'yyyy', '%04d' % self.maximum_date[0]).replace(
|
1102 |
|
'mm', '%02d' % self.maximum_date[1]).replace(
|
1103 |
|
'dd', '%02d' % self.maximum_date[2]).replace(
|
|
1100 |
'yyyy', '%04d' % self.maximum_date.year).replace(
|
|
1101 |
'mm', '%02d' % self.maximum_date.month).replace(
|
|
1102 |
'dd', '%02d' % self.maximum_date.day).replace(
|
1104 |
1103 |
'hh', '00').replace('ii', '00').replace('ss', '00')
|
1105 |
1104 |
|
1106 |
1105 |
|