[FIX] web: basic model now parse dates on lists
Before this commit, the BasicModel didn't parse the dates when loading data for a list. But the rest of the web client assumes that data is properly parsed into their correct types, so a moment instance for date and datetime. Also, uppercase field_utils and properly reorder imports
This commit is contained in:
committed by
Aaron Bohy
parent
064d7f4621
commit
4a612171b3
@@ -80,9 +80,9 @@ var AbstractModel = require('web.AbstractModel');
|
||||
var concurrency = require('web.concurrency');
|
||||
var Context = require('web.Context');
|
||||
var data = require('web.data'); // TODO: remove dependency to data.js
|
||||
var fieldUtils = require('web.field_utils');
|
||||
var pyeval = require('web.pyeval');
|
||||
var session = require('web.session');
|
||||
var field_utils = require('web.field_utils');
|
||||
|
||||
var x2ManyCommands = {
|
||||
// (0, _, {values})
|
||||
@@ -537,10 +537,10 @@ var BasicModel = AbstractModel.extend({
|
||||
});
|
||||
} else if (field.type === 'date') {
|
||||
// process date: convert into Date object
|
||||
record._changes[name] = field_utils.parse_date(result[name]);
|
||||
record._changes[name] = fieldUtils.parse_date(result[name]);
|
||||
} else if (field.type === 'datetime') {
|
||||
// process datetime: convert into Date object
|
||||
record._changes[name] = field_utils.parse_datetime(result[name]);
|
||||
record._changes[name] = fieldUtils.parse_datetime(result[name]);
|
||||
} else {
|
||||
record._changes[name] = result[name];
|
||||
}
|
||||
@@ -1278,10 +1278,10 @@ var BasicModel = AbstractModel.extend({
|
||||
}
|
||||
} else if (field.type === 'date') {
|
||||
// process data: convert into Date object
|
||||
record.data[name] = field_utils.parse_date(val);
|
||||
record.data[name] = fieldUtils.parse_date(val);
|
||||
} else if (field.type === 'datetime') {
|
||||
// process datetime: convert into Date object
|
||||
record.data[name] = field_utils.parse_datetime(val);
|
||||
record.data[name] = fieldUtils.parse_datetime(val);
|
||||
}
|
||||
});
|
||||
}).then(function () {
|
||||
@@ -1926,6 +1926,12 @@ var BasicModel = AbstractModel.extend({
|
||||
|
||||
dataPoint.data[name] = r.id;
|
||||
}
|
||||
if (field.type === 'date') {
|
||||
dataPoint.data[name] = fieldUtils.parse_date(dataPoint.data[name]);
|
||||
}
|
||||
if (field.type === 'datetime') {
|
||||
dataPoint.data[name] = fieldUtils.parse_datetime(dataPoint.data[name]);
|
||||
}
|
||||
});
|
||||
return dataPoint.id;
|
||||
});
|
||||
|
||||
@@ -19,10 +19,11 @@ QUnit.module('Views', {
|
||||
product_id: {string: "Favorite product", type: 'many2one', relation: 'product'},
|
||||
product_ids: {string: "Favorite products", type: 'one2many', relation: 'product'},
|
||||
category: {string: "Category M2M", type: 'many2many', relation: 'partner_type'},
|
||||
date: {string: "Date Field", type: 'date'},
|
||||
},
|
||||
records: [
|
||||
{id: 1, foo: 'blip', bar: 1, product_id: 37, category: [12], display_name: "first partner"},
|
||||
{id: 2, foo: 'gnap', bar: 2, product_id: 41, display_name: "second partner"},
|
||||
{id: 1, foo: 'blip', bar: 1, product_id: 37, category: [12], display_name: "first partner", date: "2017-01-25"},
|
||||
{id: 2, foo: 'gnap', bar: 2, product_id: 41, display_name: "second partner", date: "2017-01-26"},
|
||||
],
|
||||
onchanges: {},
|
||||
},
|
||||
@@ -717,5 +718,29 @@ QUnit.module('Views', {
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
});
|
||||
QUnit.test('dates are properly loaded and parsed', function (assert) {
|
||||
assert.expect(1);
|
||||
|
||||
|
||||
var model = createModel({
|
||||
Model: BasicModel,
|
||||
data: this.data,
|
||||
});
|
||||
|
||||
var params = {
|
||||
fieldNames: ['date'],
|
||||
fields: this.data.partner.fields,
|
||||
modelName: 'partner',
|
||||
type: 'list',
|
||||
};
|
||||
|
||||
model.load(params).then(function (resultID) {
|
||||
var record = model.get(resultID);
|
||||
var firstRecord = record.data[0];
|
||||
assert.ok(firstRecord.data.date instanceof moment,
|
||||
"fetched date field should have been formatted");
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
});});
|
||||
|
||||
Reference in New Issue
Block a user