From 681af866e4b82915bdca266c93d8d925637d946b Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Thu, 1 Sep 2011 17:22:24 +0200 Subject: [PATCH] [fix] problem with an on_change returning a datetime instead of a date bzr revid: nicolas.vanhoren@openerp.com-20110901152224-1mcv25kdrbxb9zd1 --- addons/base/static/src/js/form.js | 10 +++++----- addons/base/static/src/js/formats.js | 29 ++++++++++++++++++++-------- 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js index 11ddc1a3850..2a3c8ab476e 100644 --- a/addons/base/static/src/js/form.js +++ b/addons/base/static/src/js/form.js @@ -1106,17 +1106,17 @@ openerp.base.form.FieldDatetime = openerp.base.form.Field.extend({ focus: function() { this.$element.find('input').focus(); }, - parse: openerp.base.str_to_datetime, - format: openerp.base.datetime_to_str + parse: openerp.base.auto_str_to_date, + format: function(val) { + return openerp.base.auto_date_to_str(val, this.field.type); + } }); openerp.base.form.FieldDate = openerp.base.form.FieldDatetime.extend({ init: function(view, node) { this._super(view, node); this.jqueryui_object = 'datepicker'; - }, - parse: openerp.base.str_to_date, - format: openerp.base.date_to_str + } }); openerp.base.form.FieldText = openerp.base.form.Field.extend({ diff --git a/addons/base/static/src/js/formats.js b/addons/base/static/src/js/formats.js index bd81238ddd8..625868eee75 100644 --- a/addons/base/static/src/js/formats.js +++ b/addons/base/static/src/js/formats.js @@ -45,7 +45,7 @@ openerp.base.format_value = function (value, descriptor, value_if_empty) { return value[1]; case 'datetime': if (typeof(value) == "string") - value = auto_str_to_date(value, descriptor.type); + value = openerp.base.auto_str_to_date(value); try { return value.toString(_.sprintf("%s %s", Date.CultureInfo.formatPatterns.shortDate, Date.CultureInfo.formatPatterns.longTime)); @@ -55,7 +55,7 @@ openerp.base.format_value = function (value, descriptor, value_if_empty) { return value; case 'date': if (typeof(value) == "string") - value = auto_str_to_date(value, descriptor.type); + value = openerp.base.auto_str_to_date(value); try { return value.toString(Date.CultureInfo.formatPatterns.shortDate); } catch (e) { @@ -63,7 +63,7 @@ openerp.base.format_value = function (value, descriptor, value_if_empty) { } case 'time': if (typeof(value) == "string") - value = auto_str_to_date(value, descriptor.type); + value = openerp.base.auto_str_to_date(value); try { return value.toString(Date.CultureInfo.formatPatterns.longTime); } catch (e) { @@ -138,16 +138,29 @@ openerp.base.parse_value = function (value, descriptor, value_if_empty) { return value; }; -var auto_str_to_date = function(value, type) { +openerp.base.auto_str_to_date = function(value, type) { + try { + return openerp.base.str_to_datetime(value); + } catch(e) {} + try { + return openerp.base.str_to_date(value); + } catch(e) {} + try { + return openerp.base.str_to_time(value); + } catch(e) {} + throw "'" + value + "' is not a valid date, datetime nor time" +}; + +openerp.base.auto_date_to_str = function(value, type) { switch(type) { case 'datetime': - return openerp.base.str_to_datetime(value); + return openerp.base.datetime_to_str(value); case 'date': - return openerp.base.str_to_date(value); + return openerp.base.date_to_str(value); case 'time': - return openerp.base.str_to_time(value); + return openerp.base.time_to_str(value); default: - throw "'" + value + "' is not a valid date, datetime nor time" + throw type + " is not convertible to date, datetime nor time" } };