diff --git a/addons/base/static/src/js/formats.js b/addons/base/static/src/js/formats.js
index 3db6138106c..a2c7956df8b 100644
--- a/addons/base/static/src/js/formats.js
+++ b/addons/base/static/src/js/formats.js
@@ -48,7 +48,7 @@ openerp.base.format_value = function (value, descriptor, value_if_empty) {
return value.strftime(_.sprintf("%s %s", openerp.base._t.database.parameters.date_format,
openerp.base._t.database.parameters.time_format));
} catch (e) {
- return openerp.base.datetime_to_str(value);
+ return value.strftime("%m/%d/%Y %H:%M:%S");
}
return value;
case 'date':
@@ -57,21 +57,75 @@ openerp.base.format_value = function (value, descriptor, value_if_empty) {
try {
return value.strftime(openerp.base._t.database.parameters.date_format);
} catch (e) {
- return openerp.base.date_to_str(value);
+ return value.strftime("%m/%d/%Y");
}
- case 'datetime':
+ case 'time':
if (typeof(value) == "string")
value = openerp.base.str_to_time(value);
try {
return value.strftime(openerp.base._t.database.parameters.time_format);
} catch (e) {
- return openerp.base.time_to_str(value);
+ return value.strftime("%H:%M:%S");
}
default:
return value;
}
};
+openerp.base.parse_value = function (value, descriptor, value_if_empty) {
+ switch (value) {
+ case false:
+ case "":
+ return value_if_empty === undefined ? false : value_if_empty;
+ }
+ switch (descriptor.widget || descriptor.type) {
+ case 'integer':
+ var tmp = Number(value);
+ if (isNaN(tmp))
+ throw value + " is not a correct integer";
+ return tmp;
+ case 'float':
+ var tmp = Number(value);
+ if (!isNaN(tmp))
+ return tmp;
+ tmp = tmp.replace(openerp.base._t.database.parameters.decimal_point, ".");
+ var tmp2 = tmp;
+ do {
+ tmp = tmp2;
+ tmp2 = tmp.replace(openerp.base._t.database.parameters.thousands_sep, "");
+ } while(tmp !== tmp2);
+ tmp = Number(value);
+ if (isNaN(tmp))
+ throw value + " is not a correct float";
+ return tmp;
+ case 'float_time':
+ var tmp = value.split(":");
+ if (tmp.length != 2)
+ throw value + " is not a correct float_time";
+ var tmp1 = openerp.base.parse_value(tmp[0], {type: "integer"});
+ var tmp2 = openerp.base.parse_value(tmp[1], {type: "integer"});
+ return tmp1 + (tmp2 / 60);
+ case 'progressbar':
+ return openerp.base.parse_value(value, {type: "float"});
+ case 'datetime':
+ var tmp = Date.parse(value);
+ if (tmp !== null)
+ return tmp;
+ throw value + " is not a valid datetime";
+ case 'date':
+ var tmp = Date.parse(value);
+ if (tmp !== null)
+ return tmp;
+ throw value + " is not a valid date";
+ case 'time':
+ var tmp = Date.parse(value);
+ if (tmp !== null)
+ return tmp;
+ throw value + " is not a valid time";
+ }
+ return value;
+};
+
/**
* Formats a provided cell based on its field type
*
diff --git a/addons/base/static/test/formats.js b/addons/base/static/test/formats.js
new file mode 100644
index 00000000000..4843a33be60
--- /dev/null
+++ b/addons/base/static/test/formats.js
@@ -0,0 +1,16 @@
+$(document).ready(function () {
+ var openerp;
+ module('base-formats', {
+ setup: function () {
+ openerp = window.openerp.init();
+ window.openerp.base.core(openerp);
+ window.openerp.base.dates(openerp);
+ window.openerp.base.formats(openerp);
+ }
+ });
+ test("format_datetime", function () {
+ var date = openerp.base.str_to_datetime("2009-05-04 12:34:23");
+ var str = openerp.base.format_value(date, {type:"datetime"});
+ console.log(str);
+ });
+});
\ No newline at end of file
diff --git a/addons/base/static/test/test.html b/addons/base/static/test/test.html
index 14df778cd02..2b8e0510a21 100644
--- a/addons/base/static/test/test.html
+++ b/addons/base/static/test/test.html
@@ -9,15 +9,19 @@
+
+
+
+
@@ -40,4 +44,5 @@
+