summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/views/basic
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/static/src/js/views/basic')
-rw-r--r--addons/web/static/src/js/views/basic/basic_model.js11
-rw-r--r--addons/web/static/src/js/views/basic/basic_renderer.js38
2 files changed, 10 insertions, 39 deletions
diff --git a/addons/web/static/src/js/views/basic/basic_model.js b/addons/web/static/src/js/views/basic/basic_model.js
index 0642fd6842c..f59cf96a881 100644
--- a/addons/web/static/src/js/views/basic/basic_model.js
+++ b/addons/web/static/src/js/views/basic/basic_model.js
@@ -268,6 +268,8 @@ var BasicModel = AbstractModel.extend({
* @param {boolean} [options.env=false] if true, will only return res_id
* (if record) or res_ids (if list)
* @param {boolean} [options.raw=false] if true, will not follow relations
+ * @param {boolean} [options.noUnsetNumeric=false] if true, will set numeric
+ * values to 0 if not set
* @returns {Object}
*/
get: function (id, options) {
@@ -311,6 +313,13 @@ var BasicModel = AbstractModel.extend({
if (!field) {
continue;
}
+ if (options.noUnsetNumeric) {
+ if (field.type === 'float' ||
+ field.type === 'integer' ||
+ field.type === 'monetary') {
+ element.data[fieldName] = element.data[fieldName] || 0;
+ }
+ }
// get relational datapoint
if (field.type === 'many2one') {
@@ -1792,7 +1801,7 @@ var BasicModel = AbstractModel.extend({
* @returns {Object}
*/
_getEvalContext: function (element) {
- var evalContext = this.get(element.id, {raw: true}).data;
+ var evalContext = this.get(element.id, {raw: true, noUnsetNumeric: true}).data;
evalContext.active_model = element.model;
if (evalContext.id) {
evalContext.active_id = evalContext.id;
diff --git a/addons/web/static/src/js/views/basic/basic_renderer.js b/addons/web/static/src/js/views/basic/basic_renderer.js
index 2aa4479648b..1db0718545e 100644
--- a/addons/web/static/src/js/views/basic/basic_renderer.js
+++ b/addons/web/static/src/js/views/basic/basic_renderer.js
@@ -52,44 +52,6 @@ return AbstractRenderer.extend({
});
},
/**
- * Helper method, used to get an object with the 'raw' field values. It is
- * important when we want to evaluate if a record matches a given domain.
- *
- * A basic model record is a tree structure, but we sometimes need 'pure'
- * data, so for example, [1,4] for the value of a one2many, not
- * [{Object}, {Object}].
- *
- * @param {Object} record
- * @returns {Object}
- */
- _getFieldValues: function (record) {
- var result = {};
- _.each(record.getFieldNames(), function (name) {
- var field = record.fields[name];
- var value = record.data[name];
- result[name] = value;
- if (!value) {
- return;
- }
- else if (field.type === 'many2one') {
- result[name] = value.data ? value.data.id || false : false;
- }
- else if (field.type === 'one2many' || field.type === 'many2many') {
- if (value) {
- result[name] = _.pluck(value.data, 'res_id');
- } else {
- result[name] = [];
- }
- }
- else if (field.type === 'boolean') {
- // we want an explicit false value, not null if it is unset
- result[name] = value || false;
- }
- });
- result.id = record.data.id;
- return result;
- },
- /**
* Render the view
*
* @override