From ae91f6400b6a37c3e33c1e0179431198fa9737f1 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Fri, 2 Sep 2011 17:26:22 +0200 Subject: [imp] added helper to call any method on models bzr revid: nicolas.vanhoren@openerp.com-20110902152622-marolbq8hkxu6wd0 --- addons/web/static/src/js/data.js | 44 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) (limited to 'addons/web/static/src/js/data.js') diff --git a/addons/web/static/src/js/data.js b/addons/web/static/src/js/data.js index c4b489242fa..55e407c99cd 100644 --- a/addons/web/static/src/js/data.js +++ b/addons/web/static/src/js/data.js @@ -737,6 +737,50 @@ openerp.web.ReadOnlyDataSetSearch = openerp.web.DataSetSearch.extend({ on_unlink: function(ids) {} }); +openerp.base.Model = openerp.base.SessionAware.extend({ + init: function(session, model_name) { + this._super(session); + this.model_name = model_name; + }, + get_func: function(method_name) { + var self = this; + return function() { + if (method_name == "search_read") + return self._search_read.apply(self, arguments); + return self._call(method_name, arguments); + }; + }, + _call: function (method, args) { + return this.rpc('/base/dataset/call', { + model: this.model_name, + method: method, + args: args + }).pipe(function(result) { + if (method == "read" && result instanceof Array && result.length > 0 && result[0]["id"]) { + var index = {}; + _.each(_.range(result.length), function(i) { + index[result[i]["id"]] = result[i]; + }) + result = _.map(args[0], function(x) {return index[x];}); + } + return result; + }); + }, + _search_read: function(domain, fields, offset, limit, order, context) { + return this.rpc('/base/dataset/search_read', { + model: this.model_name, + fields: fields, + offset: offset, + limit: limit, + domain: domain, + sort: order, + context: context + }).pipe(function(result) { + return result.records; + });; + } +}); + openerp.web.CompoundContext = openerp.web.Class.extend({ init: function () { this.__ref = "compound_context"; -- cgit v1.2.3 From 32441da020525552abe2c07a3dfa475e7a769c19 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Fri, 2 Sep 2011 17:59:49 +0200 Subject: [fix] fix in the model helper bzr revid: nicolas.vanhoren@openerp.com-20110902155949-29mhv0d8rnl0dzkt --- addons/web/static/src/js/data.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'addons/web/static/src/js/data.js') diff --git a/addons/web/static/src/js/data.js b/addons/web/static/src/js/data.js index 55e407c99cd..3a997d4f003 100644 --- a/addons/web/static/src/js/data.js +++ b/addons/web/static/src/js/data.js @@ -747,7 +747,7 @@ openerp.base.Model = openerp.base.SessionAware.extend({ return function() { if (method_name == "search_read") return self._search_read.apply(self, arguments); - return self._call(method_name, arguments); + return self._call(method_name, _.toArray(arguments)); }; }, _call: function (method, args) { -- cgit v1.2.3 From 3c5c8b3e6618a041a04b6d61e3bf628570f86087 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Mon, 5 Sep 2011 16:04:39 +0200 Subject: [imp] lot of fixes after refactoring of base to web bzr revid: nicolas.vanhoren@openerp.com-20110905140439-n858qs02fwnib5ac --- addons/web/static/src/js/data.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'addons/web/static/src/js/data.js') diff --git a/addons/web/static/src/js/data.js b/addons/web/static/src/js/data.js index 3a997d4f003..9325e2b7812 100644 --- a/addons/web/static/src/js/data.js +++ b/addons/web/static/src/js/data.js @@ -737,7 +737,7 @@ openerp.web.ReadOnlyDataSetSearch = openerp.web.DataSetSearch.extend({ on_unlink: function(ids) {} }); -openerp.base.Model = openerp.base.SessionAware.extend({ +openerp.web.Model = openerp.web.SessionAware.extend({ init: function(session, model_name) { this._super(session); this.model_name = model_name; @@ -751,7 +751,7 @@ openerp.base.Model = openerp.base.SessionAware.extend({ }; }, _call: function (method, args) { - return this.rpc('/base/dataset/call', { + return this.rpc('/web/dataset/call', { model: this.model_name, method: method, args: args @@ -767,7 +767,7 @@ openerp.base.Model = openerp.base.SessionAware.extend({ }); }, _search_read: function(domain, fields, offset, limit, order, context) { - return this.rpc('/base/dataset/search_read', { + return this.rpc('/web/dataset/search_read', { model: this.model_name, fields: fields, offset: offset, -- cgit v1.2.3