[ADD] Added support for future display_name
bzr revid: fme@openerp.com-20120731140309-8hawqnal8cw3zxww
This commit is contained in:
parent
685e30543b
commit
8e43e0f494
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue