fixed issue 569, translation of date-time error messages, thanks iceberg

This commit is contained in:
mdipierro
2012-08-07 14:30:31 -05:00
parent 8a7bd3c38b
commit 398155f7e8
2 changed files with 18 additions and 12 deletions
+1 -1
View File
@@ -1 +1 @@
Version 2.00.0 (2012-08-07 14:04:15) dev Version 2.00.0 (2012-08-07 14:30:28) dev
+17 -11
View File
@@ -2125,6 +2125,7 @@ class IS_DATE(Validator):
error_message='enter date as %(format)s'): error_message='enter date as %(format)s'):
self.format = translate(format) self.format = translate(format)
self.error_message = str(error_message) self.error_message = str(error_message)
self.extremes = {}
def __call__(self, value): def __call__(self, value):
if isinstance(value,datetime.date): if isinstance(value,datetime.date):
@@ -2135,7 +2136,8 @@ class IS_DATE(Validator):
value = datetime.date(y, m, d) value = datetime.date(y, m, d)
return (value, None) return (value, None)
except: except:
return (value, translate(self.error_message) % IS_DATETIME.nice(self.format)) self.extremes.update(IS_DATETIME.nice(self.format))
return (value, translate(self.error_message) % self.extremes)
def formatter(self, value): def formatter(self, value):
format = self.format format = self.format
@@ -2181,6 +2183,7 @@ class IS_DATETIME(Validator):
error_message='enter date and time as %(format)s'): error_message='enter date and time as %(format)s'):
self.format = translate(format) self.format = translate(format)
self.error_message = str(error_message) self.error_message = str(error_message)
self.extremes = {}
def __call__(self, value): def __call__(self, value):
if isinstance(value,datetime.datetime): if isinstance(value,datetime.datetime):
@@ -2191,7 +2194,9 @@ class IS_DATETIME(Validator):
value = datetime.datetime(y, m, d, hh, mm, ss) value = datetime.datetime(y, m, d, hh, mm, ss)
return (value, None) return (value, None)
except: except:
return (value, translate(self.error_message) % IS_DATETIME.nice(self.format)) self.extremes.update(IS_DATETIME.nice(self.format))
return (value, translate(self.error_message) % self.extremes)
def formatter(self, value): def formatter(self, value):
format = self.format format = self.format
@@ -2201,7 +2206,8 @@ class IS_DATETIME(Validator):
format = format.replace('%Y',y) format = format.replace('%Y',y)
if year<1900: if year<1900:
year = 2000 year = 2000
d = datetime.datetime(year,value.month,value.day,value.hour,value.minute,value.second) d = datetime.datetime(year,value.month,value.day,
value.hour,value.minute,value.second)
return d.strftime(format) return d.strftime(format)
class IS_DATE_IN_RANGE(IS_DATE): class IS_DATE_IN_RANGE(IS_DATE):
@@ -2239,19 +2245,19 @@ class IS_DATE_IN_RANGE(IS_DATE):
error_message = "enter date on or after %(min)s" error_message = "enter date on or after %(min)s"
else: else:
error_message = "enter date in range %(min)s %(max)s" error_message = "enter date in range %(min)s %(max)s"
extremes = dict(min=minimum, max=maximum)
IS_DATE.__init__(self, IS_DATE.__init__(self,
format = format, format = format,
error_message = translate(error_message) % extremes) error_message = error_message)
self.extremes = dict(min=minimum, max=maximum)
def __call__(self, value): def __call__(self, value):
(value, msg) = IS_DATE.__call__(self,value) (value, msg) = IS_DATE.__call__(self,value)
if msg is not None: if msg is not None:
return (value, msg) return (value, msg)
if self.minimum and self.minimum > value: if self.minimum and self.minimum > value:
return (value, self.error_message) return (value, translate(self.error_message) % self.extremes)
if self.maximum and value > self.maximum: if self.maximum and value > self.maximum:
return (value, self.error_message) return (value, translate(self.error_message) % self.extremes)
return (value, None) return (value, None)
@@ -2289,19 +2295,19 @@ class IS_DATETIME_IN_RANGE(IS_DATETIME):
error_message = "enter date and time on or after %(min)s" error_message = "enter date and time on or after %(min)s"
else: else:
error_message = "enter date and time in range %(min)s %(max)s" error_message = "enter date and time in range %(min)s %(max)s"
extremes = dict(min = minimum, max = maximum)
IS_DATETIME.__init__(self, IS_DATETIME.__init__(self,
format = format, format = format,
error_message = translate(error_message) % extremes) error_message = error_message)
self.extremes = dict(min = minimum, max = maximum)
def __call__(self, value): def __call__(self, value):
(value, msg) = IS_DATETIME.__call__(self, value) (value, msg) = IS_DATETIME.__call__(self, value)
if msg is not None: if msg is not None:
return (value, msg) return (value, msg)
if self.minimum and self.minimum > value: if self.minimum and self.minimum > value:
return (value, self.error_message) return (value, translate(self.error_message) % self.extremes)
if self.maximum and value > self.maximum: if self.maximum and value > self.maximum:
return (value, self.error_message) return (value, translate(self.error_message) % self.extremes)
return (value, None) return (value, None)