[FIX] correctly apply user's date and time formatting settings

lp bug: https://launchpad.net/bugs/886471 fixed

bzr revid: xmo@openerp.com-20111114140007-7nz0pz9zkhqkt3ga
This commit is contained in:
Xavier Morel 2011-11-14 15:00:07 +01:00
parent 16006b42e3
commit 550436f084
1 changed files with 12 additions and 22 deletions

View File

@ -1,6 +1,6 @@
openerp.web.formats = function(openerp) { openerp.web.formats = function(openerp) {
var _t = openerp.web._t;
/** /**
* Formats a single atomic value based on a field descriptor * Formats a single atomic value based on a field descriptor
* *
@ -43,29 +43,17 @@ openerp.web.format_value = function (value, descriptor, value_if_empty) {
case 'datetime': case 'datetime':
if (typeof(value) == "string") if (typeof(value) == "string")
value = openerp.web.auto_str_to_date(value); value = openerp.web.auto_str_to_date(value);
try {
return value.toString(_.sprintf("%s %s", Date.CultureInfo.formatPatterns.shortDate, return value.format(_t.database.parameters.date_format
Date.CultureInfo.formatPatterns.longTime)); + ' ' + _t.database.parameters.time_format);
} catch (e) {
return value.format("%m/%d/%Y %H:%M:%S");
}
return value;
case 'date': case 'date':
if (typeof(value) == "string") if (typeof(value) == "string")
value = openerp.web.auto_str_to_date(value); value = openerp.web.auto_str_to_date(value);
try { return value.format(_t.database.parameters.date_format);
return value.toString(Date.CultureInfo.formatPatterns.shortDate);
} catch (e) {
return value.format("%m/%d/%Y");
}
case 'time': case 'time':
if (typeof(value) == "string") if (typeof(value) == "string")
value = openerp.web.auto_str_to_date(value); value = openerp.web.auto_str_to_date(value);
try { return value.format(_t.database.parameters.time_format);
return value.toString(Date.CultureInfo.formatPatterns.longTime);
} catch (e) {
return value.format("%H:%M:%S");
}
case 'selection': case 'selection':
// Each choice is [value, label] // Each choice is [value, label]
var result = _(descriptor.selection).detect(function (choice) { var result = _(descriptor.selection).detect(function (choice) {
@ -79,6 +67,8 @@ openerp.web.format_value = function (value, descriptor, value_if_empty) {
}; };
openerp.web.parse_value = function (value, descriptor, value_if_empty) { openerp.web.parse_value = function (value, descriptor, value_if_empty) {
var date_pattern = Date.normalizeFormat(_t.database.parameters.date_format),
time_pattern = Date.normalizeFormat(_t.database.parameters.time_format);
switch (value) { switch (value) {
case false: case false:
case "": case "":
@ -119,8 +109,8 @@ openerp.web.parse_value = function (value, descriptor, value_if_empty) {
case 'progressbar': case 'progressbar':
return openerp.web.parse_value(value, {type: "float"}); return openerp.web.parse_value(value, {type: "float"});
case 'datetime': case 'datetime':
var datetime = Date.parseExact(value, _.sprintf("%s %s", Date.CultureInfo.formatPatterns.shortDate, var datetime = Date.parseExact(
Date.CultureInfo.formatPatterns.longTime)); value, (date_pattern + ' ' + time_pattern));
if (datetime !== null) if (datetime !== null)
return openerp.web.datetime_to_str(datetime); return openerp.web.datetime_to_str(datetime);
datetime = Date.parse(value); datetime = Date.parse(value);
@ -128,7 +118,7 @@ openerp.web.parse_value = function (value, descriptor, value_if_empty) {
return openerp.web.datetime_to_str(datetime); return openerp.web.datetime_to_str(datetime);
throw new Error(value + " is not a valid datetime"); throw new Error(value + " is not a valid datetime");
case 'date': case 'date':
var date = Date.parseExact(value, Date.CultureInfo.formatPatterns.shortDate); var date = Date.parseExact(value, date_pattern);
if (date !== null) if (date !== null)
return openerp.web.date_to_str(date); return openerp.web.date_to_str(date);
date = Date.parse(value); date = Date.parse(value);
@ -136,7 +126,7 @@ openerp.web.parse_value = function (value, descriptor, value_if_empty) {
return openerp.web.date_to_str(date); return openerp.web.date_to_str(date);
throw new Error(value + " is not a valid date"); throw new Error(value + " is not a valid date");
case 'time': case 'time':
var time = Date.parseExact(value, Date.CultureInfo.formatPatterns.longTime); var time = Date.parseExact(value, time_pattern);
if (time !== null) if (time !== null)
return openerp.web.time_to_str(time); return openerp.web.time_to_str(time);
time = Date.parse(value); time = Date.parse(value);