diff --git a/addons/web/static/src/js/view_list.js b/addons/web/static/src/js/view_list.js index 0025bd6e83c..6e62955f0b1 100644 --- a/addons/web/static/src/js/view_list.js +++ b/addons/web/static/src/js/view_list.js @@ -212,7 +212,7 @@ openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView# this.$element.find('.oe-list-add') .click(this.do_add_record) - .attr('disabled', grouped && !this.options.editable); + .attr('disabled', grouped && this.options.editable); this.$element.find('.oe-list-delete') .attr('disabled', true) .click(this.do_delete_selected); diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index f723c54da5d..2e595146d0d 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -243,12 +243,16 @@ session.web.ViewManager = session.web.Widget.extend(/** @lends session.web.View */ on_mode_switch: function(view_type, no_store) { var self = this, + view = this.views[view_type], view_promise; + if(!view) + return $.Deferred().reject(); + if (!no_store) { this.views_history.push(view_type); } this.active_view = view_type; - var view = this.views[view_type]; + if (!view.controller) { // Lazy loading of views var controllerclass = this.registry.get_object(view_type); @@ -471,8 +475,8 @@ session.web.ViewManagerAction = session.web.ViewManager.extend(/** @lends oepner }, on_mode_switch: function (view_type, no_store) { var self = this; - if (!_.include(_.pluck(this.views_src,"view_type"),view_type)) - return; + if (!(view_type in this.views)) + return $.Deferred().reject(); var switched = $.when(this._super(view_type, no_store)).then(function () { self.$element.find('.oe-view-manager-logs:first')