[FIX] web: avoid force_reload in list editable
authorMartin Trigaux <mat@openerp.com>
Fri, 3 Oct 2014 09:21:48 +0000 (11:21 +0200)
committerMartin Trigaux <mat@openerp.com>
Fri, 3 Oct 2014 09:41:00 +0000 (11:41 +0200)
When creating a new record in list editable, due to previous commit 6349048, the load_record was called twice and the first record of the current list view (self.dataset.index) was used to fill the new record.
With this, we make sure a new record is indeed created.
Fix the web test to have a default_get call in mock models and increase the number of default_get assertions (for creations in list editable, the default_get is then called twice, not optimal but due to the absence of distinction between empty datarecord and filled with default values).

addons/web/static/src/js/view_form.js
addons/web/static/test/list-editable.js

index 3e5d386..58067c5 100644 (file)
@@ -284,7 +284,7 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
         var shown = this.has_been_loaded;
         if (options.reload !== false || !this.datarecord.id) {
             shown = shown.then(function() {
-                if (self.dataset.index === null) {
+                if (self.dataset.index === null || !self.datarecord.id) {
                     // null index means we should start a new record
                     return self.on_button_new();
                 }
index a91d501..3032ae7 100644 (file)
@@ -9,6 +9,9 @@ openerp.testing.section('editor', {
         mock('test.model:onchange', function () {
             return {};
         });
+        mock('test.model:default_get', function () {
+            return {};
+        });
     }
 }, function (test) {
     /**
@@ -211,7 +214,7 @@ openerp.testing.section('list.edition', {
         });
     }
 }, function (test) {
-    test('newrecord', {asserts: 6}, function (instance, $fix, mock) {
+    test('newrecord', {asserts: 7}, function (instance, $fix, mock) {
         var got_defaults = false;
         mock('demo:default_get', function (args) {
             var fields = args[0];