From 8e43e0f494a51aa6384e804eb63c2be3b5f3af0d Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Tue, 31 Jul 2012 16:03:09 +0200 Subject: [PATCH] [ADD] Added support for future display_name bzr revid: fme@openerp.com-20120731140309-8hawqnal8cw3zxww --- addons/web/controllers/main.py | 10 +++++++++ addons/web/static/src/js/view_form.js | 32 ++++++++++----------------- 2 files changed, 22 insertions(+), 20 deletions(-) diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index da034aa88b6..e4c576fecae 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -997,6 +997,16 @@ class DataSet(openerpweb.Controller): elif isinstance(kwargs[k], common.nonliterals.BaseDomain): kwargs[k] = req.session.eval_domain(kwargs[k]) + # Temporary implements future display_name special field for model#read() + if method == 'read' and kwargs.get('context') and kwargs['context'].get('future_display_name'): + if 'display_name' in args[1]: + names = req.session.model(model).name_get(args[0], **kwargs) + args[1].remove('display_name') + r = getattr(req.session.model(model), method)(*args, **kwargs) + for i in range(len(r)): + r[i]['display_name'] = names[i][1] or "%s#%d" % (model, names[i][0]) + return r + return getattr(req.session.model(model), method)(*args, **kwargs) @openerpweb.jsonrequest diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 65afd4a36d6..9afe980b89e 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -277,8 +277,10 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM // null index means we should start a new record return self.on_button_new(); } - return self.dataset.read_index(_.keys(self.fields_view.fields), { - context: { 'bin_size': true } + var fields = _.keys(self.fields_view.fields); + fields.push('display_name'); + return self.dataset.read_index(fields, { + context: { 'bin_size': true, 'future_display_name' : true } }).pipe(self.on_record_loaded); }); } @@ -302,7 +304,7 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM this._super(); }, on_record_loaded: function(record) { - var self = this, defs = []; + var self = this, set_values = []; if (!record) { this.set({ 'title' : undefined }); this.do_warn("Form", "The record could not be found in the database.", true); @@ -310,19 +312,7 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM } this.datarecord = record; this._actualize_mode(); - - var titleDef = $.Deferred(); - if (record.id) { - this.dataset.name_get([record.id]).then(function(names) { - self.set({ 'title' : names[0][1] }); - }).always(function() { - titleDef.resolve(); - }); - } else { - this.set({ 'title' : "New record" }); - titleDef.resolve(); - } - defs.push(titleDef); + this.set({ 'title' : record.id ? record.display_name : "New record" }); if (this.qweb) { this.kill_current_form(); @@ -334,9 +324,9 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM _(this.fields).each(function (field, f) { field._dirty_flag = false; var result = field.set_value(self.datarecord[f] || false); - defs.push(result); + set_values.push(result); }); - return $.when.apply(null, defs).pipe(function() { + return $.when.apply(null, set_values).pipe(function() { if (!record.id) { // New record: Second pass in order to trigger the onchanges // respecting the fields order defined in the view @@ -868,8 +858,10 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM if (self.dataset.index == null || self.dataset.index < 0) { return $.when(self.on_button_new()); } else { - return self.dataset.read_index(_.keys(self.fields_view.fields), { - context : { 'bin_size' : true } + var fields = _.keys(self.fields_view.fields); + fields.push('display_name'); + return self.dataset.read_index(fields, { + context : { 'bin_size' : true, 'future_display_name' : true } }).pipe(self.on_record_loaded); } });