[FIX] handling of fields back to the diagram's main model while creating and editing nodes

lp bug: https://launchpad.net/bugs/932773 fixed
lp bug: https://launchpad.net/bugs/932805 fixed

bzr revid: xmo@openerp.com-20120216150434-bnrku6qj8r10sltj
This commit is contained in:
Xavier Morel 2012-02-16 16:04:34 +01:00
parent ac882af9dd
commit bd8f8c9be3
2 changed files with 30 additions and 22 deletions

View File

@ -116,4 +116,7 @@ class DiagramView(View):
n['options'][node_fields_string[i]] = act[fld]
id_model = req.session.model(model).read([id],['name'], req.session.context)[0]['name']
return dict(nodes=nodes, conn=connectors, id_model=id_model)
return dict(nodes=nodes,
conn=connectors,
id_model=id_model,
parent_field=graphs['node_parent_field'])

View File

@ -136,6 +136,7 @@ openerp.web.DiagramView = openerp.web.View.extend({
var res_nodes = result['nodes'];
var res_connectors = result['conn'];
this.parent_field = result.parent_field;
//Custom logic
var self = this;
@ -240,30 +241,34 @@ openerp.web.DiagramView = openerp.web.View.extend({
var form_fields;
if(model == self.node) {
form_fields = ['wkf_id'];
if (model === self.node) {
form_fields = [this.parent_field];
if (!id) {
form_controller.on_record_loaded.add_last(function() {
_.each(form_fields, function(fld) {
if (!(fld in form_controller.fields)) { return; }
var field = form_controller.fields[fld];
field.set_value([self.id,self.active_model]);
field.dirty = true;
});
});
} else {
form_controller.on_record_loaded.add_first(function() {
_.each(form_fields, function(fld) {
if (!(fld in form_controller.fields)) { return; }
var field = form_controller.fields[fld];
field.$input.prop('disabled', true);
field.$drop_down.unbind();
field.$menu_btn.unbind();
});
});
}
} else {
form_fields = ['act_from', 'act_to'];
form_fields = [
this.connectors.attrs.source,
this.connectors.attrs.destination];
}
if(model == self.node || id) {
$.each(form_fields, function(index, fld) {
form_controller.on_record_loaded.add_first(function() {
form_controller.fields[fld].modifiers.readonly = true;
form_controller.fields[fld].$input.attr('disabled', true);
form_controller.fields[fld].$drop_down.unbind();
form_controller.fields[fld].$menu_btn.unbind();
});
});
}
if(!id && (model == self.node)) {
$.each(form_fields, function(index, fld) {
form_controller.on_record_loaded.add_last(function() {
form_controller.fields[fld].set_value([self.id,self.active_model]);
form_controller.fields[fld].dirty = true;
});
});
}
if (!_.isEmpty(defaults)) {
form_controller.on_record_loaded.add_last(function () {
_(form_fields).each(function (field) {