Xavier ALT (OpenERP) has proposed merging 
lp:~openerp-dev/openobject-client-web/6.0-opw-574308-xal into 
lp:openobject-client-web.

Requested reviews:
  OpenERP Core Team (openerp)

For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-client-web/6.0-opw-574308-xal/+merge/109344

Hi,

This fix a problem when clicking on the "New" button of a "one2many field" and 
the parent record is currenctly not saved.

Steps:
- Go to products, edit one and go to "Suppliers" tab
- Clic on "New" to add a supplier.
- Within the PopUp window, choose a supplier.
- Clic on "New" from the a pricelist

Current: page reload, but on line appears. We have to clic "New" a seconds time 
to display the "new" empty line.
Expect: we should directly get a "new" empty line.

Cheers,
Xavier
-- 
https://code.launchpad.net/~openerp-dev/openobject-client-web/6.0-opw-574308-xal/+merge/109344
Your team OpenERP R&D Team is subscribed to branch 
lp:~openerp-dev/openobject-client-web/6.0-opw-574308-xal.
=== modified file 'addons/openerp/controllers/listgrid.py'
--- addons/openerp/controllers/listgrid.py	2012-06-01 10:38:30 +0000
+++ addons/openerp/controllers/listgrid.py	2012-06-08 12:27:34 +0000
@@ -232,6 +232,15 @@
     def get(self, **kw):
         params, data = TinyDict.split(kw)
 
+        if not params.model and params.o2m and params.view_params.model:
+            # Ok, no base model, copy infos from _terp_view_params.
+            # This is required to be able to correctly build the form view
+            # and to get the 'widget' related to the requested listgrid
+            view_params_base, x = TinyDict.split(params.view_params)
+            view_params_update = dict([(k[6:], v) for k, v in view_params_base.iteritems()
+                                                if k.startswith('_terp_') ])
+            params.update(view_params_update)
+
         groupby = params.get('_terp_group_by_ctx')
         if groupby and isinstance(groupby, basestring):
             groupby = groupby.split(',')

=== modified file 'addons/openerp/static/javascript/listgrid.js'
--- addons/openerp/static/javascript/listgrid.js	2012-06-01 10:38:30 +0000
+++ addons/openerp/static/javascript/listgrid.js	2012-06-08 12:27:34 +0000
@@ -734,14 +734,15 @@
         var self = this;
 
         var current_id = edit_inline ? (parseInt(edit_inline) || 0) : edit_inline;
+        var prefix = this.name == '_terp_list' ? '' : this.name + '/';
 
         var args = jQuery.extend(this.makeArgs(), {
             _terp_source: this.name,
             _terp_edit_inline: edit_inline,
             _terp_source_default_get: default_get_ctx,
             _terp_concurrency_info: concurrency_info,
-            _terp_editable: openobject.dom.get('_terp_editable').value,
-            _terp_group_by_ctx: openobject.dom.get('_terp_group_by_ctx').value
+            _terp_editable: openobject.dom.get(prefix + '_terp_editable').value,
+            _terp_group_by_ctx: openobject.dom.get(prefix + '_terp_group_by_ctx').value
         });
 
         if (this.name == '_terp_list') {

=== modified file 'addons/openerp/static/javascript/o2m.js'
--- addons/openerp/static/javascript/o2m.js	2011-09-19 12:50:15 +0000
+++ addons/openerp/static/javascript/o2m.js	2012-06-08 12:27:34 +0000
@@ -54,13 +54,20 @@
 
     this.params_parent = false
     if (this.m2o == "False"){
+        var params_parent_prefix = '';
+        if (!openobject.dom.get('_terp_model')) {
+            // Handle case when we create a new one2many record over an unsaved
+            // parent record - in that we not do have a valid '_terp_model'
+            // within the document, so we just copy original information.
+            params_parent_prefix = '_terp_view_params/';
+        }
         this.params_parent = {
-            '_terp_view_params/_terp_model': openobject.dom.get('_terp_model').value,
-            '_terp_view_params/_terp_id': openobject.dom.get('_terp_id').value,
-            '_terp_view_params/_terp_view_id':openobject.dom.get('_terp_view_id').value,
-            '_terp_view_params/_terp_view_ids': openobject.dom.get('_terp_view_ids').value,
-            '_terp_view_params/_terp_view_mode': openobject.dom.get('_terp_view_mode').value,
-            '_terp_view_params/_terp_context': openobject.dom.get('_terp_context').value || {},
+            '_terp_view_params/_terp_model': openobject.dom.get(params_parent_prefix + '_terp_model').value,
+            '_terp_view_params/_terp_id': openobject.dom.get(params_parent_prefix + '_terp_id').value,
+            '_terp_view_params/_terp_view_id':openobject.dom.get(params_parent_prefix + '_terp_view_id').value,
+            '_terp_view_params/_terp_view_ids': openobject.dom.get(params_parent_prefix + '_terp_view_ids').value,
+            '_terp_view_params/_terp_view_mode': openobject.dom.get(params_parent_prefix + '_terp_view_mode').value,
+            '_terp_view_params/_terp_context': openobject.dom.get(params_parent_prefix + '_terp_context').value || {},
             '_terp_view_params/_terp_view_type': 'form'
         };
     }

_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help   : https://help.launchpad.net/ListHelp

Reply via email to