diff options
| author | Martin Geubelle <mge@odoo.com> | 2017-08-22 14:22:03 +0200 |
|---|---|---|
| committer | Martin Geubelle <mge@odoo.com> | 2017-08-23 13:53:18 +0200 |
| commit | 65ecd109a5910b9bf919b42fc8198f3762f5f240 (patch) | |
| tree | 6b799fdbac83a6eb3217e944a4bd365acc562875 /addons/web/static/src/js/widgets/debug_manager.js | |
| parent | 59f8b849fba3b53eee3682af64a757a32acc12da (diff) | |
[FIX] web: reimplement conditions in the "Set Default" dialog
The rev. https://github.com/odoo/odoo/commit/49f0413290821cb123e75b4546873cf98edf1d25 reintroduced
the "Set Default" dialog but forgot the conditions part.
This rev. reintroduces the missing part.
Diffstat (limited to 'addons/web/static/src/js/widgets/debug_manager.js')
| -rw-r--r-- | addons/web/static/src/js/widgets/debug_manager.js | 57 |
1 files changed, 40 insertions, 17 deletions
diff --git a/addons/web/static/src/js/widgets/debug_manager.js b/addons/web/static/src/js/widgets/debug_manager.js index e38813478b0..5fc51d1deb1 100644 --- a/addons/web/static/src/js/widgets/debug_manager.js +++ b/addons/web/static/src/js/widgets/debug_manager.js @@ -349,6 +349,20 @@ DebugManager.include({ }, set_defaults: function() { var self = this; + + var display = function (fieldInfo, value) { + var displayed = value; + if (value && fieldInfo.type === 'many2one') { + displayed = value.data.display_name; + value = value.data.id; + } else if (value && fieldInfo.type === 'selection') { + displayed = _.find(fieldInfo.selection, function (option) { + return option[0] === value; + })[1]; + } + return [value, displayed]; + }; + var renderer = this._active_view.controller.renderer; var fields = self._active_view.fields_view.fields; var fieldsInfo = self._active_view.fields_view.fieldsInfo.form; @@ -369,17 +383,10 @@ DebugManager.include({ invisibleOrReadOnly = evaluatedModifiers.invisible || evaluatedModifiers.readonly; } var fieldInfo = fields[fieldName]; - var value = fieldsValues[fieldName]; - var displayed = value; - if (value && fieldInfo.type === 'many2one') { - displayed = value.data.display_name; - value = value.data.id; - } else if (value && fieldInfo.type === 'selection') { - displayed = _.find(fieldInfo.selection, function (option) { - return option[0] === value; - })[1]; - } - // ignore fields which are empty, invisible, readonly, o2m + var valueDisplayed = display(fieldInfo, fieldsValues[fieldName]); + var value = valueDisplayed[0]; + var displayed = valueDisplayed[1]; + // ignore fields which are empty, invisible, readonly, o2m // or m2m if (!value || invisibleOrReadOnly || fieldInfo.type === 'one2many' || fieldInfo.type === 'many2many' || fieldInfo.type === 'binary' || @@ -396,6 +403,25 @@ DebugManager.include({ .compact() .sortBy(function (field) { return field.string; }) .value(); + + var conditions = _.chain(fieldNamesInView) + .filter(function (fieldName) { + var fieldInfo = fields[fieldName]; + return fieldInfo.change_default; + }) + .map(function (fieldName) { + var fieldInfo = fields[fieldName]; + var valueDisplayed = display(fieldInfo, fieldsValues[fieldName]); + var value = valueDisplayed[0]; + var displayed = valueDisplayed[1]; + return { + name: fieldName, + string: fieldInfo.string, + value: value, + displayed: displayed, + }; + }) + .value(); var d = new Dialog(this, { title: _t("Set Default"), buttons: [ @@ -408,6 +434,7 @@ DebugManager.include({ return; } var allUsers = d.$el.find('#formview_default_all').is(':checked'); + var condition = d.$el.find('#formview_default_conditions').val(); var value = _.find(self.fields, function (field) { return field.name === fieldToSet; }).value; @@ -420,7 +447,7 @@ DebugManager.include({ value, allUsers, true, - false + condition || false, ], }).done(function () { d.close(); }); }} @@ -428,11 +455,7 @@ DebugManager.include({ }); d.args = { fields: this.fields, - // @FIXME - // The conditions part has been dropped from now on because the flag 'change_default' - // disappeared during the web client refactoring. Should be implemented again in the - // right place. - conditions: [], + conditions: conditions, }; d.template = 'FormView.set_default'; d.open(); |
