diff options
| author | Nicolas Martinelli <nim@odoo.com> | 2017-01-18 16:05:08 +0100 |
|---|---|---|
| committer | Nicolas Martinelli <nim@odoo.com> | 2017-01-19 09:52:44 +0100 |
| commit | 94f7f6aa22f01c89e1c07f9fa59902b5ab91d8b3 (patch) | |
| tree | ce80f6cef13f5c4d4ee07997c5a90136771c17c2 /addons/web/static/src/js/framework | |
| parent | bbdf9605e4c480e1fc19b1faac9cfc4321bcaea2 (diff) | |
[FIX] web: date < 01-01-1900
The Python method `strftime` raises an error when the date is older than
01-01-1900 ("The datetime strftime() methods require year >= 1900"). If
the user mistyped the date (or was expecting 01-01-16 to be converted
into 01-01-2016), this can lead errors since the ORM uses this method
frequently.
opw-702313
Diffstat (limited to 'addons/web/static/src/js/framework')
| -rw-r--r-- | addons/web/static/src/js/framework/formats.js | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/addons/web/static/src/js/framework/formats.js b/addons/web/static/src/js/framework/formats.js index 90cecd5398d..bddc40f424d 100644 --- a/addons/web/static/src/js/framework/formats.js +++ b/addons/web/static/src/js/framework/formats.js @@ -161,26 +161,30 @@ function parse_value (value, descriptor, value_if_empty) { return parse_value(value, {type: "float"}); case 'datetime': var datetime = moment(value, [date_pattern + ' ' + time_pattern, date_pattern_wo_zero + ' ' + time_pattern_wo_zero, moment.ISO_8601], true); - if (datetime.isValid()) + if (datetime.isValid() && datetime.year() >= 1900) return time.datetime_to_str(datetime.toDate()); datetime = moment(value, [date_pattern + ' ' + time_pattern, date_pattern_wo_zero + ' ' + time_pattern_wo_zero, moment.ISO_8601]); if (datetime.isValid()) { if (datetime.year() === 0) { datetime.year(moment.utc().year()); } - return time.datetime_to_str(datetime.toDate()); + if (datetime.year() >= 1900) { + return time.datetime_to_str(datetime.toDate()); + } } throw new Error(_.str.sprintf(_t("'%s' is not a correct datetime"), value)); case 'date': var date = moment(value, [date_pattern, date_pattern_wo_zero, moment.ISO_8601], true); - if (date.isValid()) + if (date.isValid() && date.year() >= 1900) return time.date_to_str(date.toDate()); date = moment(value, [date_pattern, date_pattern_wo_zero, moment.ISO_8601]); if (date.isValid()) { if (date.year() === 0) { date.year(moment.utc().year()); } - return time.date_to_str(date.toDate()); + if (date.year() >= 1900) { + return time.date_to_str(date.toDate()); + } } throw new Error(_.str.sprintf(_t("'%s' is not a correct date"), value)); case 'time': |
