web_m2x_options check Many2one and Many2many options

pull/1392/head
Antonio Espinosa 2015-11-16 13:00:04 +01:00 committed by Jeroen Evens
parent 6213da32b7
commit e4d520e2c5
1 changed files with 65 additions and 48 deletions

View File

@ -67,11 +67,11 @@ openerp.web_m2x_options = function (instance) {
var self = this; var self = this;
// add options limit used to change number of selections record // add options limit used to change number of selections record
// returned. // returned.
if (_.isUndefined(this.view)) if (_.isUndefined(this.view))
return this._super.apply(this, arguments); return this._super.apply(this, arguments);
if (!_.isUndefined(this.view.ir_options['web_m2x_options.limit'])) { if (!_.isUndefined(this.view.ir_options['web_m2x_options.limit'])) {
this.limit = parseInt(this.view.ir_options['web_m2x_options.limit']); this.limit = parseInt(this.view.ir_options['web_m2x_options.limit']);
} }
if (typeof this.options.limit === 'number') { if (typeof this.options.limit === 'number') {
this.limit = this.options.limit; this.limit = this.options.limit;
@ -99,8 +99,7 @@ openerp.web_m2x_options = function (instance) {
self.build_context())); self.build_context()));
var create_rights; var create_rights;
if (typeof this.options.create === "undefined" || if (!(self.options && (self.options.no_create || self.options.no_create_edit))) {
typeof this.options.create_edit === "undefined") {
create_rights = new instance.web.Model(this.field.relation).call( create_rights = new instance.web.Model(this.field.relation).call(
"check_access_rights", ["create", false]); "check_access_rights", ["create", false]);
} }
@ -171,10 +170,15 @@ openerp.web_m2x_options = function (instance) {
var raw_result = _(data.result).map(function (x) { var raw_result = _(data.result).map(function (x) {
return x[1]; return x[1];
}); });
var no_quick_create = (
self.options && (self.options.no_create ||
self.options.no_quick_create)
)
var m2x_create_undef = _.isUndefined(self.view.ir_options['web_m2x_options.create'])
var m2x_create = self.view.ir_options['web_m2x_options.create'] == "True"
if ((_.isUndefined(self.options.create) && _.isUndefined(self.view.ir_options['web_m2x_options.create']) && can_create) || if (!no_quick_create && ((m2x_create_undef && can_create) ||
(_.isUndefined(self.options.create) && self.view.ir_options['web_m2x_options.create'] == "True") || m2x_create)) {
self.options.create) {
if (search_val.length > 0 && if (search_val.length > 0 &&
!_.include(raw_result, search_val)) { !_.include(raw_result, search_val)) {
@ -192,10 +196,15 @@ openerp.web_m2x_options = function (instance) {
} }
// create... // create...
var no_create_edit = (
self.options && (self.options.no_create ||
self.options.no_create_edit)
)
var m2x_create_edit_undef = _.isUndefined(self.view.ir_options['web_m2x_options.create_edit'])
var m2x_create_edit = self.view.ir_options['web_m2x_options.create_edit'] == "True"
if ((_.isUndefined(self.options.create_edit) && _.isUndefined(self.view.ir_options['web_m2x_options.create_edit']) && can_create) || if (!no_create_edit && ((m2x_create_edit_undef && can_create) ||
(_.isUndefined(self.options.create) && self.view.ir_options['web_m2x_options.create_edit'] == "True") || m2x_create_edit)) {
self.options.create_edit) {
values.push({ values.push({
label: _t("Create and Edit..."), label: _t("Create and Edit..."),
@ -227,27 +236,27 @@ openerp.web_m2x_options = function (instance) {
} }
}, },
start: function() { start: function() {
this._super.apply(this, arguments); this._super.apply(this, arguments);
return this.get_options(); return this.get_options();
}, },
get_options: function() { get_options: function() {
var self = this; var self = this;
if (_.isUndefined(this.view.ir_options_loaded)) { if (_.isUndefined(this.view.ir_options_loaded)) {
this.view.ir_options_loaded = $.Deferred(); this.view.ir_options_loaded = $.Deferred();
this.view.ir_options = {}; this.view.ir_options = {};
(new instance.web.Model("ir.config_parameter")) (new instance.web.Model("ir.config_parameter"))
.query(["key", "value"]).filter([['key', 'in', OPTIONS]]) .query(["key", "value"]).filter([['key', 'in', OPTIONS]])
.all().then(function(records) { .all().then(function(records) {
_(records).each(function(record) { _(records).each(function(record) {
self.view.ir_options[record.key] = record.value; self.view.ir_options[record.key] = record.value;
}); });
self.view.ir_options_loaded.resolve(); self.view.ir_options_loaded.resolve();
}); });
} }
return this.view.ir_options_loaded; return this.view.ir_options_loaded;
}, },
/** /**
* Call this method to search using a string. * Call this method to search using a string.
@ -259,9 +268,9 @@ openerp.web_m2x_options = function (instance) {
// add options limit used to change number of selections record // add options limit used to change number of selections record
// returned. // returned.
if (!_.isUndefined(this.view.ir_options['web_m2x_options.limit'])) { if (!_.isUndefined(this.view.ir_options['web_m2x_options.limit'])) {
this.limit = parseInt(this.view.ir_options['web_m2x_options.limit']); this.limit = parseInt(this.view.ir_options['web_m2x_options.limit']);
} }
if (typeof this.options.limit === 'number') { if (typeof this.options.limit === 'number') {
this.limit = this.options.limit; this.limit = this.options.limit;
@ -300,10 +309,14 @@ openerp.web_m2x_options = function (instance) {
}); });
} }
// quick create // quick create
var no_quick_create = (
self.options && (self.options.no_create ||
self.options.no_quick_create)
)
var m2x_create_undef = _.isUndefined(self.view.ir_options['web_m2x_options.create'])
var m2x_create = self.view.ir_options['web_m2x_options.create'] == "True"
if ((_.isUndefined(self.options.create) && _.isUndefined(self.view.ir_options['web_m2x_options.create'])) || if (!no_quick_create && (m2x_create_undef || m2x_create)) {
(_.isUndefined(self.options.create) && self.view.ir_options['web_m2x_options.create'] == 'True') ||
self.options.create) {
var raw_result = _(data.result).map(function(x) {return x[1];}); var raw_result = _(data.result).map(function(x) {return x[1];});
if (search_val.length > 0 && !_.include(raw_result, search_val)) { if (search_val.length > 0 && !_.include(raw_result, search_val)) {
@ -319,10 +332,14 @@ openerp.web_m2x_options = function (instance) {
} }
// create... // create...
var no_create_edit = (
self.options && (self.options.no_create ||
self.options.no_create_edit)
)
var m2x_create_edit_undef = _.isUndefined(self.view.ir_options['web_m2x_options.create_edit'])
var m2x_create_edit = self.view.ir_options['web_m2x_options.create_edit'] == "True"
if ((_.isUndefined(self.options.create_edit === 'undefined') && _.isUndefined(self.view.ir_options['web_m2x_options.create_edit'])) || if (!no_create_edit && (m2x_create_edit_undef || m2x_create_edit)) {
(_.isUndefined(self.options.create) && self.view.ir_options['web_m2x_options.create_edit'] == 'True') ||
self.options.create_edit) {
values.push({ values.push({
label: _t("Create and Edit..."), label: _t("Create and Edit..."),