[FIX] web: on record reload (form & list view), use search_read instead of read,...
authorDenis Ledoux <dle@openerp.com>
Wed, 26 Mar 2014 11:30:36 +0000 (12:30 +0100)
committerDenis Ledoux <dle@openerp.com>
Wed, 26 Mar 2014 11:30:36 +0000 (12:30 +0100)
bzr revid: dle@openerp.com-20140326113036-g9yv3jj6yetwxvg8

addons/web/static/src/js/view_form.js
addons/web/static/src/js/view_list.js

index edb44e7..812da9a 100644 (file)
@@ -951,14 +951,20 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
             } else {
                 var fields = _.keys(self.fields_view.fields);
                 fields.push('display_name');
-                return self.dataset.read_index(fields,
+                // Use of search_read instead of read to check if we can still read the record (security rules)
+                return self.dataset.call('search_read', [[['id', '=', self.dataset.ids[self.dataset.index]]], fields],
                     {
                         context: {
                             'bin_size': true,
                             'future_display_name': true
                         }
                     }).then(function(r) {
-                        self.trigger('load_record', r);
+                        if (_.isEmpty(r)){
+                            self.do_action('history_back');
+                        }
+                        else{
+                            self.trigger('load_record', r[0]);
+                        }
                     });
             }
         });
index 6de354b..775c905 100644 (file)
@@ -528,13 +528,14 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi
     },
     reload_record: function (record) {
         var self = this;
-        return this.dataset.read_ids(
-            [record.get('id')],
+        // Use of search_read instead of read to check if we can still read the record (security rules)
+        return this.dataset.call('search_read', [
+            [['id', '=', record.get('id')]],
             _.pluck(_(this.columns).filter(function (r) {
                     return r.tag === 'field';
-                }), 'name')
+                }), 'name')]
         ).done(function (records) {
-            var values = records[0];
+            var values = _.isEmpty(records) ? undefined : records[0];
             if (!values) {
                 self.records.remove(record);
                 return;