summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/views/basic/basic_model.js
diff options
context:
space:
mode:
authorYannick Tivisse <yti@odoo.com>2019-07-02 10:41:19 +0200
committerYannick Tivisse <yti@odoo.com>2019-07-12 13:01:36 +0200
commitf896afcc8a54eae3efcdf034e3fd256942f7fa78 (patch)
treef971a366144eacbdcdb77e74650ddaea75dce4d7 /addons/web/static/src/js/views/basic/basic_model.js
parentba0308923030c2dcafa1a1577742fa5233d71a04 (diff)
[FIX] web: Call 'toggle_active' instead of 'write'
Purpose ======= Currently when clicking on 'Archive' or 'Unarchive' on the list view, we write directly on the record {'active': False}, instead of calling toggle_active. Missing that way implementation of numerous business cases. Example - Archive a record --> archive its next activities - (Un)Archive a user --> (Un)Archive its partner - (Un)Archive a product variant --> (Un)Archive its template if there is only one variant - Archive an employee --> Open a wizard to choose an exit plan + describe the departure reason - Archive a route --> Archive its procurement rules - ... Specification ============= - Call toggle_active instead of write when calling toggleActive in the web client. - On the other hand, use actionArchive and actionUnarchive to apply the toggle action on the related records only.
Diffstat (limited to 'addons/web/static/src/js/views/basic/basic_model.js')
-rw-r--r--addons/web/static/src/js/views/basic/basic_model.js54
1 files changed, 51 insertions, 3 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 60c2f6a3314..311b0ee6947 100644
--- a/addons/web/static/src/js/views/basic/basic_model.js
+++ b/addons/web/static/src/js/views/basic/basic_model.js
@@ -1176,7 +1176,7 @@ var BasicModel = AbstractModel.extend({
* @param {string} parentID id of the parent resource to reload
* @returns {Promise<string>} resolves to the parent id
*/
- toggleActive: function (recordIDs, value, parentID) {
+ toggleActive: function (recordIDs, parentID) {
var self = this;
var parent = this.localData[parentID];
var resIDs = _.map(recordIDs, function (recordID) {
@@ -1184,8 +1184,56 @@ var BasicModel = AbstractModel.extend({
});
return this._rpc({
model: parent.model,
- method: 'write',
- args: [resIDs, { active: value }],
+ method: 'toggle_active',
+ args: [resIDs],
+ })
+ .then(function () {
+ // optionally clear the DataManager's cache
+ self._invalidateCache(parent);
+ return self.reload(parentID);
+ });
+ },
+ /**
+ * Archive the given records
+ *
+ * @param {Array} recordIDs local ids of the records to (un)archive
+ * @param {string} parentID id of the parent resource to reload
+ * @returns {Promise<string>} resolves to the parent id
+ */
+ actionArchive: function (recordIDs, parentID) {
+ var self = this;
+ var parent = this.localData[parentID];
+ var resIDs = _.map(recordIDs, function (recordID) {
+ return self.localData[recordID].res_id;
+ });
+ return this._rpc({
+ model: parent.model,
+ method: 'action_archive',
+ args: [resIDs],
+ })
+ .then(function () {
+ // optionally clear the DataManager's cache
+ self._invalidateCache(parent);
+ return self.reload(parentID);
+ });
+ },
+ /**
+ * Unarchive the given records
+ *
+ * @param {Array} recordIDs local ids of the records to (un)archive
+ * @param {string} parentID id of the parent resource to reload
+ * @returns {Promise<string>} resolves to the parent id
+ */
+ actionUnarchive: function (recordIDs, parentID) {
+ var self = this;
+ var parent = this.localData[parentID];
+ var resIDs = _.map(recordIDs, function (recordID) {
+ return self.localData[recordID].res_id;
+ });
+ return this._rpc({
+ model: parent.model,
+ method: 'action_unarchive',
+ args: [resIDs],
})
.then(function () {
// optionally clear the DataManager's cache