diff --git a/src/model.js b/src/model.js index f545ddb..802e342 100644 --- a/src/model.js +++ b/src/model.js @@ -106,8 +106,9 @@ }); array.get_readonly = function() { // Must skip res.user for Preference windows + var access = Sao.common.MODELACCESS.get(this.model.name); if (this.context._datetime || - (!Sao.common.MODELACCESS.get(this.model.name).write && + (!(access.write || access.create) && !this.skip_model_access)) { return true; } diff --git a/src/screen.js b/src/screen.js index 408043d..67ba6ac 100644 --- a/src/screen.js +++ b/src/screen.js @@ -600,7 +600,8 @@ this.size_limit = null; this.limit = attributes.limit || Sao.config.limit; this.offset = 0; - if (!Sao.common.MODELACCESS.get(model_name).write) { + var access = Sao.common.MODELACCESS.get(model_name); + if (!(access.write || access.create)) { this.attributes.readonly = true; } this.search_count = 0; diff --git a/src/tab.js b/src/tab.js index 9808614..0ac33ab 100644 --- a/src/tab.js +++ b/src/tab.js @@ -505,7 +505,8 @@ }.bind(this)); }, save: function() { - if (!Sao.common.MODELACCESS.get(this.screen.model_name).write) { + var access = Sao.common.MODELACCESS.get(this.screen.model_name); + if (!(access.write || access.create)) { return jQuery.when(); } return this.screen.save_current().then( @@ -709,10 +710,12 @@ set_buttons_sensitive: function(revision) { if (!revision) { var access = Sao.common.MODELACCESS.get(this.screen.model_name); - [['new', 'create'], ['save', 'write']].forEach(function(e) { + [['new', access.create], + ['save', access.create || access.write] + ].forEach(function(e) { var button = e[0]; - var access_type = e[1]; - if (access[access_type]) { + var access = e[1]; + if (access) { this.buttons[button].parent().removeClass('disabled'); } else { this.buttons[button].parent().addClass('disabled');