[FIX] handling of fields back to the diagram's main model while creating and editing...
authorXavier Morel <xmo@openerp.com>
Thu, 16 Feb 2012 15:04:34 +0000 (16:04 +0100)
committerXavier Morel <xmo@openerp.com>
Thu, 16 Feb 2012 15:04:34 +0000 (16:04 +0100)
lp bug: https://launchpad.net/bugs/932773 fixed
lp bug: https://launchpad.net/bugs/932805 fixed

bzr revid: xmo@openerp.com-20120216150434-bnrku6qj8r10sltj

addons/web_diagram/controllers/main.py
addons/web_diagram/static/src/js/diagram.js

index 95cd9af..3a8bd0c 100644 (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'])
index ddc88d9..90f8000 100644 (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'];
-        } else {
-            form_fields = ['act_from', 'act_to'];
-        }
-
-        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) {
+        if (model === self.node) {
+            form_fields = [this.parent_field];
+            if (!id) {
                 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;
+                    _.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 = [
+                this.connectors.attrs.source,
+                this.connectors.attrs.destination];
         }
+
         if (!_.isEmpty(defaults)) {
             form_controller.on_record_loaded.add_last(function () {
                 _(form_fields).each(function (field) {