From ccd10f58225fb6b4c14ca0800429c207d4cd455c Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Thu, 15 Sep 2011 13:00:58 +0530 Subject: [PATCH 01/42] [IMP] kanban :- if no groupby on field then display records in multiple columns. bzr revid: ysa@tinyerp.com-20110915073058-w8c9bwjp1otfweoz --- addons/web_kanban/static/src/js/kanban.js | 36 ++++++++++++++++++++--- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index dfaf7769df5..1d4de3d8398 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -18,6 +18,7 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ this.all_display_data = false; this.groups = []; this.qweb = new QWeb2.Engine(); + this.NO_OF_COLUMNS = 2; if (this.options.action_views_ids.form) { this.form_dialog = new openerp.web.FormDialog(this, {}, this.options.action_views_ids.form, dataset).start(); this.form_dialog.on_form_dialog_saved.add_last(this.on_record_saved); @@ -117,9 +118,12 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ } } }, - on_show_data: function(data) { + on_show_data: function() { var self = this; - this.$element.html(QWeb.render("KanbanView", {"data": data})); + if (!this.group_by.length) { + this.do_record_group(); + } + this.$element.html(QWeb.render("KanbanView", {"data": self.all_display_data})); this.on_reload_kanban(); var drag_handel = false; if (this.$element.find(".oe_kanban_draghandle").length > 0) { @@ -137,6 +141,17 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ this.$element.find(".oe_column").disableSelection() this.$element.find('button.oe_kanban_button_new').click(this.do_add_record); }, + do_record_group: function() { + if (this.NO_OF_COLUMNS) { + var records = this.all_display_data[0].records; + var record_per_group = Math.round((records).length / this.NO_OF_COLUMNS); + this.all_display_data = []; + for (var i=0, ii=this.NO_OF_COLUMNS; i < ii; i++) { + this.all_display_data.push({'records': records.slice(0,record_per_group), 'value':false, 'header' : false, 'ids':[]}); + records.splice(0,record_per_group); + } + } + }, on_button_click: function (button_attrs, record_id) { var self = this; if (this.groups.length) { @@ -391,6 +406,7 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ group_by = self.group_by; if (!group_by.length && this.fields_view.arch.attrs.default_group_by) { group_by = [this.fields_view.arch.attrs.default_group_by]; + self.group_by = group_by; } self.datagroup = new openerp.web.DataGroup(self, self.model, self.domain, self.context, group_by); self.dataset.context = self.context; @@ -407,7 +423,7 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ self.dataset.read_slice([], {}, function(records) { self.all_display_data = [{'records': records, 'value':false, 'header' : false, 'ids': self.dataset.ids}]; self.$element.find(".oe_kanban_view").remove(); - self.on_show_data(self.all_display_data); + self.on_show_data(); }); } ); @@ -431,7 +447,7 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ self.all_display_data.push({"value" : group_value, "records": records, 'header':group_name, 'ids': self.dataset.ids}); if (datagroups.length == self.all_display_data.length) { self.$element.find(".oe_kanban_view").remove(); - self.on_show_data(self.all_display_data); + self.on_show_data(); } }); }); @@ -443,6 +459,18 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ this.$element.hide(); } }); + +/*openerp.web_kanban.KanbanRecord = openerp.web.Class.extend({ + init: function (dataset, record_id, options) { + this.dataset = dataset; + this.record_id = record_id; + this.options = options; + }, + + on_render: function () { + + }, +});*/ }; // vim:et fdc=0 fdl=0 foldnestmax=3 fdm=syntax: From 7b500f02ad31a6be0337faa3b2d503ef5fdbf93c Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Thu, 15 Sep 2011 13:06:03 +0530 Subject: [PATCH 02/42] [IMP] kanban :- if no group by on field then drag and drop functionality disable. bzr revid: ysa@tinyerp.com-20110915073603-5yvddorwgu0xwyt6 --- addons/web_kanban/static/src/js/kanban.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index 1d4de3d8398..3cc2e6a8beb 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -129,6 +129,9 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ if (this.$element.find(".oe_kanban_draghandle").length > 0) { drag_handel = ".oe_kanban_draghandle"; } + if (!this.group_by.length) { + drag_handel = true; + } this.$element.find(".oe_column").sortable({ connectWith: ".oe_column", handle : drag_handel, From 681a5bd001871c68730636ef6ac27c01f79615b1 Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Thu, 15 Sep 2011 15:42:09 +0530 Subject: [PATCH 03/42] [IMP] kanban :- column group pass in sort order. bzr revid: ysa@tinyerp.com-20110915101209-29ez6zvd1q8s6asg --- addons/web_kanban/static/src/js/kanban.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index 3bbaaf6c430..424518b92d8 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -118,11 +118,19 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ } } }, + sort_group: function (first, second) { + first = first.header.toLowerCase(); + second = second.header.toLowerCase(); + if (first > second) return 1; + else if (first < second) return -1; + else return 0; + }, on_show_data: function() { var self = this; if (!this.group_by.length) { this.do_record_group(); } + self.all_display_data.sort(this.sort_group); this.$element.html(QWeb.render("KanbanView", {"data": self.all_display_data})); this.on_reload_kanban(); var drag_handel = false; From 903ae74c11998eafc34ef5612877dd965cb5d7c5 Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Fri, 16 Sep 2011 18:30:49 +0530 Subject: [PATCH 04/42] [IMP] kanban :- add basic struncture of folding and unfolding columns. bzr revid: ysa@tinyerp.com-20110916130049-ppachcw4xne1rzjw --- addons/web_kanban/static/src/css/kanban.css | 11 ++++-- addons/web_kanban/static/src/js/kanban.js | 13 +++++++ .../web_kanban/static/src/xml/web_kanban.xml | 36 ++++++++++--------- 3 files changed, 41 insertions(+), 19 deletions(-) diff --git a/addons/web_kanban/static/src/css/kanban.css b/addons/web_kanban/static/src/css/kanban.css index afac6cdef47..1497044b807 100644 --- a/addons/web_kanban/static/src/css/kanban.css +++ b/addons/web_kanban/static/src/css/kanban.css @@ -2,18 +2,25 @@ float: left; width: 100%; } - .openerp .oe_kanban_view .ui-sortable-placeholder { border: 1px dotted black; visibility: visible !important; height: 60px !important; } - +.oe_kanban_row { + overflow:hidden; +} +.oe_table_column { + float:left; +} .openerp .oe_kanban_view .oe_column_heading { color: #000000; font-size: 1.5em; font-weight: bold; } +.openerp .oe_kanban_view { + overflow:hidden; +} .openerp .oe_kanban_action_button { height: 22px; margin: 0; diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index 424518b92d8..db9473b4ff5 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -19,6 +19,7 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ this.groups = []; this.qweb = new QWeb2.Engine(); this.NO_OF_COLUMNS = 2; + this.DISPLAY_COLUMNS = 3; if (this.options.action_views_ids.form) { this.form_dialog = new openerp.web.FormDialog(this, {}, this.options.action_views_ids.form, dataset).start(); this.form_dialog.on_form_dialog_saved.add_last(this.on_record_saved); @@ -151,6 +152,18 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ }); this.$element.find(".oe_column").disableSelection() this.$element.find('button.oe_kanban_button_new').click(this.do_add_record); + var column_width = 100 / (this.all_display_data).length; + var row_width = column_width * (this.all_display_data).length * this.DISPLAY_COLUMNS; + self.$element.find(".oe_table_column" ).css("width", column_width +"%"); + self.$element.find(".oe_kanban_row" ).css("width", row_width +"%"); + this.$element.find('#next-column').click(function(event) { + event.preventDefault(); + self.$element.find('.oe_kanban_view').animate({"scrollLeft" : "+=" + self.$element.find('.oe_column').width()}, 'slow'); + }); + this.$element.find('#previous-column').click(function(event) { + event.preventDefault(); + self.$element.find('.oe_kanban_view').animate({scrollLeft:'-=' + self.$element.find('.oe_column').width() }, 'slow'); + }); }, do_record_group: function() { if (this.NO_OF_COLUMNS) { diff --git a/addons/web_kanban/static/src/xml/web_kanban.xml b/addons/web_kanban/static/src/xml/web_kanban.xml index aa7bc73190d..b48333e6df4 100644 --- a/addons/web_kanban/static/src/xml/web_kanban.xml +++ b/addons/web_kanban/static/src/xml/web_kanban.xml @@ -1,26 +1,28 @@ \ No newline at end of file From 9fa1aaec6e9acec1aa1183dda1f4dea46a2218ca Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Tue, 20 Sep 2011 17:32:47 +0530 Subject: [PATCH 12/42] [IMP] kanban :- add basic structure of folding and unfolding columns. bzr revid: ysa@tinyerp.com-20110920120247-0f916npmmeu83qhu --- addons/web_kanban/static/src/css/kanban.css | 9 ++++++-- addons/web_kanban/static/src/js/kanban.js | 21 +++++++++++++++++++ .../web_kanban/static/src/xml/web_kanban.xml | 16 ++++++++------ 3 files changed, 38 insertions(+), 8 deletions(-) diff --git a/addons/web_kanban/static/src/css/kanban.css b/addons/web_kanban/static/src/css/kanban.css index afac6cdef47..35b8c1cb16b 100644 --- a/addons/web_kanban/static/src/css/kanban.css +++ b/addons/web_kanban/static/src/css/kanban.css @@ -3,6 +3,12 @@ width: 100%; } +.oe_vertical_text { + -moz-transform: rotate(-90deg); + -o-transform: rotate(-90deg); + -webkit-transform: rotate(-90deg); +} + .openerp .oe_kanban_view .ui-sortable-placeholder { border: 1px dotted black; visibility: visible !important; @@ -199,5 +205,4 @@ /* Alert color */ .openerp .oe_kanban_color_alert .oe_kanban_color_border { border-color: #c00 !important; -} - +} \ No newline at end of file diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index d11d2cfbcf4..62f7dd3052a 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -148,6 +148,7 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ self.all_display_data.sort(this.sort_group); this.$element.html(QWeb.render("KanbanView", {"data": self.all_display_data})); this.on_reload_kanban(); + this.$element.find(".oe_vertical_text").hide(); var drag_handel = false; if (this.$element.find(".oe_kanban_draghandle").length > 0) { drag_handel = ".oe_kanban_draghandle"; @@ -166,6 +167,26 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ }); this.$element.find(".oe_column").disableSelection() this.$element.find('button.oe_kanban_button_new').click(this.do_add_record); + this.$element.find(".fold-columns-icon").click(function(event) { + self.do_fold_unfold_columns(event, this.id); + }); + }, + do_fold_unfold_columns: function(event, element_id) { + var column_id = "column_" + element_id; + var column_element = this.$element.find("#" + column_id + ".oe_fold_column"); + if (column_element.is(":hidden")) { + this.$element.find("#" + column_id).find("img.fold-columns-icon").attr('src', '/web_kanban/static/src/img/minus-icon.png'); + column_element.show(); + this.$element.find("#" + column_id + ".oe_table_column").css("width",Math.round(99 / this.all_display_data.length) + "%"); + this.$element.find("#" + column_id + ".oe_vertical_text").hide(); + } + else{ + this.$element.find("#" + column_id).find("img.fold-columns-icon").attr('src', '/web_kanban/static/src/img/plus-icon.png'); + column_element.hide(); + this.$element.find("#" + column_id + ".oe_table_column").css("width","0.5%"); + this.$element.find("#" + column_id + ".oe_vertical_text").show(); + } + }, do_record_group: function() { if (this.NO_OF_COLUMNS) { diff --git a/addons/web_kanban/static/src/xml/web_kanban.xml b/addons/web_kanban/static/src/xml/web_kanban.xml index 04620abaeae..599c81a8797 100644 --- a/addons/web_kanban/static/src/xml/web_kanban.xml +++ b/addons/web_kanban/static/src/xml/web_kanban.xml @@ -10,15 +10,19 @@ - - -
- + +
+ + +
+ +
- -
+ +

+
From acdb9b1ec4bd0bb6815eb5c4e930d811ffa95759 Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Tue, 20 Sep 2011 17:34:00 +0530 Subject: [PATCH 13/42] [ADD] kanban :- add icon of fold and unfold columns. bzr revid: ysa@tinyerp.com-20110920120400-nzybn0awsspkrsli --- addons/web_kanban/static/src/img/minus-icon.png | Bin 0 -> 1390 bytes addons/web_kanban/static/src/img/plus-icon.png | Bin 0 -> 761 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 addons/web_kanban/static/src/img/minus-icon.png create mode 100644 addons/web_kanban/static/src/img/plus-icon.png diff --git a/addons/web_kanban/static/src/img/minus-icon.png b/addons/web_kanban/static/src/img/minus-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..cb655d1e5032501ad68d7312725d9cb609c5d157 GIT binary patch literal 1390 zcmcIkO-vI(6douf6$7GCgGS?Ii3tbW+1<93ZrUPH5DY~^n~25(%XTO$?e1oGNDCVL zi5FwM8Dorza5Emfm>9e$a^OIqA&udJ1PvyVh>-&)gWzmiN+Cv1Om_ZW-uJyX-@Kjs zogEj-%TAU70Lt5116_2kG`rP8#~RzA5S=VWV_Vp2wJvX1~7rWI4UbX213X{IpSk3yMk;`Yr_3< z>#&YP!yRF1ctG+*n0kMiHz`nX91{^H<1xh$l0GKGDbTfPMhwijkO3dlUKHohoK0dKPUx()^KRbbu001sB7ql01@dmlvn(BWf#U=xN0Z4k#$QHfuO8_Wx&ke^ zm~`i3`U%klgc6B_J>jscdK7UUj|Z_l;&~hOuo*)N5tBB>sLqmX^8~OV>9R&-Re>h2 z*sBf_AH$e|@-25bQOgHXjGTB>MwApa#MxPtXQn_eH405S7Ky5dRW;_%9=}D_aYEGx z4A>NMcunLkr=6%fcpMN3_ESCTY%Fi%++mg%9JPYeb+rJWb=m_Dsu8(wr~vM;@vaQq zB{;Yoyuc|3_aak>0%0<$n`hc%|DRwHDX*6{sK+wb5|I#&;W$=^K{excYZj4&K2?v4 z#4pFiC`OtR^`af)Kl96GP0NCoCCb<3cIx@7+?U0U?)yTYCEd>;j$^dAe zCf-j?O-)Zv&(6-IQmJ%0JwHFcu&}VSw6wguyt1;gy1Kfywzj^$PJxeaZA?-g3+d_z z0mP)K16MJ5zOsbbWclW8C_=Zb~GH-P80Ef&5mFX!vysop{R z^^U%jo0#tI?95(hZAGzA0EpnaE`DroVs&jTU#XP)J}oVM`3G>LtE;1_srmD*?ru9` zS=ig%!Pw|10AONr5)IibwANTzT{+m^{dMQ#!uv%4U;yap=}BeMnZ;}E?Y8GtuwU9o z+4DkYp68)l+K2CXxO(}Dold2vd!O{mFb6DUe@jbq%CGte0)Uv|`^Ny^_fW1>K*V4s zG&MG6^~S*vfL9g(L}Rf5As9Q`Kf%l(7VzsF6pKY@ZNLnG81XYP#NzRLAs{07;>P+q z-o1GXtu<=38no6S;N|3tuy0^6@^l2Tc+3s2pd48U{2)t25JEr*aiX-245d@~w#z|0WL zD3>eYiHSr4$z%e|d?Ld@7%m8WtegilFP(74yjQR5yu~*prBQPW_00000NkvXXu0mjfdy-ED literal 0 HcmV?d00001 From 87a55e927e7a177b21607275256614251abd5a60 Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Tue, 20 Sep 2011 18:42:36 +0530 Subject: [PATCH 14/42] [IMP] kanban :- improve css of fold and unfold columns. bzr revid: ysa@tinyerp.com-20110920131236-hrwinziygoh9j9az --- addons/web_kanban/static/src/css/kanban.css | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/addons/web_kanban/static/src/css/kanban.css b/addons/web_kanban/static/src/css/kanban.css index 35b8c1cb16b..c7a1b3f27a9 100644 --- a/addons/web_kanban/static/src/css/kanban.css +++ b/addons/web_kanban/static/src/css/kanban.css @@ -4,9 +4,15 @@ } .oe_vertical_text { - -moz-transform: rotate(-90deg); - -o-transform: rotate(-90deg); - -webkit-transform: rotate(-90deg); + writing-mode:tb-rl; + -webkit-transform:rotate(90deg); + -moz-transform:rotate(90deg); + -o-transform: rotate(90deg); + display:block; + width:30px; + height:20px; + align:center; + font-size:24px; } .openerp .oe_kanban_view .ui-sortable-placeholder { From 01106829e939f30487235481a3365d8cc78da69d Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Tue, 20 Sep 2011 19:01:36 +0530 Subject: [PATCH 15/42] [IMP] kanban :- improve css bzr revid: ysa@tinyerp.com-20110920133136-oida5na52ola5ygl --- addons/web_kanban/static/src/css/kanban.css | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/addons/web_kanban/static/src/css/kanban.css b/addons/web_kanban/static/src/css/kanban.css index c7a1b3f27a9..6224723147f 100644 --- a/addons/web_kanban/static/src/css/kanban.css +++ b/addons/web_kanban/static/src/css/kanban.css @@ -3,11 +3,13 @@ width: 100%; } -.oe_vertical_text { +.openerp .oe_vertical_text { writing-mode:tb-rl; -webkit-transform:rotate(90deg); -moz-transform:rotate(90deg); -o-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); display:block; width:30px; height:20px; From 9936f7276006887839998a3dba348d49bc66b9d2 Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Wed, 21 Sep 2011 15:22:45 +0530 Subject: [PATCH 16/42] [IMP] kanban :- if drag any record and no record in this group then empty group display and again drop any record in empty group. bzr revid: ysa@tinyerp.com-20110921095245-e2hucliw1zo5uzbj --- addons/web_kanban/static/src/css/kanban.css | 1 - addons/web_kanban/static/src/js/kanban.js | 5 +---- addons/web_kanban/static/src/xml/web_kanban.xml | 8 +++----- 3 files changed, 4 insertions(+), 10 deletions(-) diff --git a/addons/web_kanban/static/src/css/kanban.css b/addons/web_kanban/static/src/css/kanban.css index 6224723147f..0aca55430b5 100644 --- a/addons/web_kanban/static/src/css/kanban.css +++ b/addons/web_kanban/static/src/css/kanban.css @@ -1,5 +1,4 @@ .openerp .oe_kanban_view .oe_column { - float: left; width: 100%; } diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index 62f7dd3052a..6c2a06b982c 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -173,7 +173,7 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ }, do_fold_unfold_columns: function(event, element_id) { var column_id = "column_" + element_id; - var column_element = this.$element.find("#" + column_id + ".oe_fold_column"); + var column_element = this.$element.find("#" + column_id + " .oe_fold_column"); if (column_element.is(":hidden")) { this.$element.find("#" + column_id).find("img.fold-columns-icon").attr('src', '/web_kanban/static/src/img/minus-icon.png'); column_element.show(); @@ -399,9 +399,6 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ kanban_gravatar: self.kanban_gravatar })); }); - } else { - self.$element.find("#column_" + data.value).remove(); - self.all_display_data.splice(index, 1); } }); this.$element.find('.oe_kanban_action').click(this.on_action_clicked); diff --git a/addons/web_kanban/static/src/xml/web_kanban.xml b/addons/web_kanban/static/src/xml/web_kanban.xml index 599c81a8797..352ccf66b19 100644 --- a/addons/web_kanban/static/src/xml/web_kanban.xml +++ b/addons/web_kanban/static/src/xml/web_kanban.xml @@ -11,7 +11,7 @@ -
+

@@ -20,11 +20,9 @@ - +

-
-
-
+
From f8b7d96e20a2a89d31d3d7e4e90e5a30920131ab Mon Sep 17 00:00:00 2001 From: kmo Date: Wed, 21 Sep 2011 17:07:43 +0530 Subject: [PATCH 17/42] [FIX]Remove Overlapping of graph in Dashboard. lp bug: https://launchpad.net/bugs/854692 fixed bzr revid: kgo@kgo-desktop-20110921113743-0p19ocxmf26n2jtl --- addons/web_graph/static/src/js/graph.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/web_graph/static/src/js/graph.js b/addons/web_graph/static/src/js/graph.js index 2a493b89166..3ab6d4e20fc 100644 --- a/addons/web_graph/static/src/js/graph.js +++ b/addons/web_graph/static/src/js/graph.js @@ -49,7 +49,7 @@ openerp.web_graph.GraphView = openerp.web.View.extend({ this.operator = []; this.group_field = []; this.orientation = this.fields_view.arch.attrs.orientation || ''; - this.elem_id = this.$element[0]['id']; + this.elem_id = this.view_manager.element_id; _.each(this.fields_view.arch.children, function (field) { if (field.attrs.operator) { From 8b9a3b31a8577d9ea91dfed88cb48f7777710a36 Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Wed, 21 Sep 2011 17:09:37 +0530 Subject: [PATCH 18/42] [IMP] kanban :- default dataset domain problem fix. bzr revid: ysa@tinyerp.com-20110921113937-407vhkefp6olpb64 --- addons/web_kanban/static/src/js/kanban.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index 6c2a06b982c..a9aecbb0e22 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -20,6 +20,8 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ this.qweb = new QWeb2.Engine(); this.aggregates = {}; this.NO_OF_COLUMNS = 3; + this.dataset_default_domain = dataset.domain; + this.dataset_default_context = dataset.context; if (this.options.action_views_ids.form) { this.form_dialog = new openerp.web.FormDialog(this, {}, this.options.action_views_ids.form, dataset).start(); this.form_dialog.on_form_dialog_saved.add_last(this.on_record_saved); @@ -434,9 +436,11 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ }, do_search: function (domains, contexts, group_by) { var self = this; + this.dataset.domain = this.dataset_default_domain; + this.dataset.context = this.dataset_default_context; this.rpc('/web/session/eval_domain_and_context', { - domains: domains, - contexts: contexts, + domains: [this.dataset.get_domain()].concat(domains), + contexts: [this.dataset.get_context()].concat(contexts), group_by_seq: group_by }, function (results) { self.domain = results.domain; @@ -461,8 +465,6 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ self.do_render_group(groups); }, function (dataset) { - self.domain = dataset.domain; - self.context = dataset.context; self.groups = []; self.dataset.read_slice([], {}, function(records) { self.all_display_data = [{'records': records, 'value':false, 'header' : false, 'ids': self.dataset.ids}]; From 5142f9a9aaf4108f03093e6efde118556dbe7532 Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Thu, 22 Sep 2011 10:50:59 +0530 Subject: [PATCH 19/42] [IMP] kanban :- improve group title. bzr revid: ysa@tinyerp.com-20110922052059-fg7w253jxb6i8dxs --- addons/web_kanban/static/src/js/kanban.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index a9aecbb0e22..c30794fb6ed 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -491,9 +491,7 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ } var group_aggregates = ''; _.each(self.aggregates, function(value, key) { - if (group.aggregates[key]) { - group_aggregates += value + ": " + group.aggregates[key]; - } + group_aggregates += value + ": " + group.aggregates[key]; }); self.dataset.read_slice([], {}, function(records) { self.all_display_data.push({"value" : group_value, "records": records, 'header':group_name, 'ids': self.dataset.ids, 'aggregates': group_aggregates}); From 5ba40e563953dff00931403d9a03ce6807cc2603 Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Thu, 22 Sep 2011 12:47:18 +0530 Subject: [PATCH 20/42] [IMP] kanban :- pass domain and context in read_slice method instead of dataset. bzr revid: ysa@tinyerp.com-20110922071718-jksxy7hx8dm0n8ce --- addons/web_kanban/static/src/js/kanban.js | 38 ++--------------------- 1 file changed, 3 insertions(+), 35 deletions(-) diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index c30794fb6ed..1450e8c26fa 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -20,8 +20,6 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ this.qweb = new QWeb2.Engine(); this.aggregates = {}; this.NO_OF_COLUMNS = 3; - this.dataset_default_domain = dataset.domain; - this.dataset_default_context = dataset.context; if (this.options.action_views_ids.form) { this.form_dialog = new openerp.web.FormDialog(this, {}, this.options.action_views_ids.form, dataset).start(); this.form_dialog.on_form_dialog_saved.add_last(this.on_record_saved); @@ -202,31 +200,7 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ } }, on_button_click: function (button_attrs, record_id) { - var self = this; - if (this.groups.length) { - _.each(this.groups, function (group) { - group.list([], - function (groups) {}, - function (dataset) { - dataset.read_slice([], {}, function(records) { - var index = parseInt(_.indexOf(dataset.ids, record_id)); - if(index >= 0) { - self.on_confirm_click(dataset, button_attrs, index, record_id); - } - }); - } - ); - }); - } else { - var index = parseInt(_.indexOf(self.dataset.ids, record_id)); - if (index >= 0) { - _.extend(self.dataset, {domain: self.domain, context: self.context}); - self.on_confirm_click(self.dataset, button_attrs, index, record_id); - } - } - }, - on_confirm_click: function (dataset, button_attrs, index, record_id) { - this.on_execute_button_click(dataset, button_attrs, record_id); + this.on_execute_button_click(this.dataset, button_attrs, record_id); }, do_add_record: function() { this.dataset.index = null; @@ -436,8 +410,6 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ }, do_search: function (domains, contexts, group_by) { var self = this; - this.dataset.domain = this.dataset_default_domain; - this.dataset.context = this.dataset_default_context; this.rpc('/web/session/eval_domain_and_context', { domains: [this.dataset.get_domain()].concat(domains), contexts: [this.dataset.get_context()].concat(contexts), @@ -457,8 +429,6 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ self.group_by = group_by; } self.datagroup = new openerp.web.DataGroup(self, self.model, self.domain, self.context, group_by); - self.dataset.context = self.context; - self.dataset.domain = self.domain; self.datagroup.list([], function (groups) { self.groups = groups; @@ -466,7 +436,7 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ }, function (dataset) { self.groups = []; - self.dataset.read_slice([], {}, function(records) { + self.dataset.read_slice([], {'domain': self.domain, 'context': self.context}, function(records) { self.all_display_data = [{'records': records, 'value':false, 'header' : false, 'ids': self.dataset.ids}]; self.$element.find(".oe_kanban_view").remove(); self.on_show_data(); @@ -478,8 +448,6 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ this.all_display_data = []; var self = this; _.each(datagroups, function (group) { - self.dataset.context = group.context; - self.dataset.domain = group.domain; var group_name = group.value; var group_value = group.value; if (!group.value) { @@ -493,7 +461,7 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ _.each(self.aggregates, function(value, key) { group_aggregates += value + ": " + group.aggregates[key]; }); - self.dataset.read_slice([], {}, function(records) { + self.dataset.read_slice([], {'domain': group.domain, 'context': group.context}, function(records) { self.all_display_data.push({"value" : group_value, "records": records, 'header':group_name, 'ids': self.dataset.ids, 'aggregates': group_aggregates}); if (datagroups.length == self.all_display_data.length) { self.$element.find(".oe_kanban_view").remove(); From b20f60ba611bb3ba9e3a73579ea93b4fec298205 Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Thu, 22 Sep 2011 12:50:01 +0530 Subject: [PATCH 21/42] [FIX] kanban :- if no record found then display as a blank page. bzr revid: ysa@tinyerp.com-20110922072001-u3rcsst3g0y9vwiz --- addons/web_kanban/static/src/js/kanban.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index 1450e8c26fa..eec3daaba09 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -432,7 +432,13 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ self.datagroup.list([], function (groups) { self.groups = groups; - self.do_render_group(groups); + if (groups.length) { + self.do_render_group(groups); + } + else { + self.all_display_data = []; + self.on_show_data(); + } }, function (dataset) { self.groups = []; From 132377f01252d1c6d738d42a842e41924cca8554 Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Thu, 22 Sep 2011 14:33:14 +0530 Subject: [PATCH 22/42] [FIX] kanban :- fix problem on group by. bzr revid: ysa@tinyerp.com-20110922090314-o7cs05dkgptr8nkc --- addons/web_kanban/static/src/js/kanban.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index eec3daaba09..d1fa4bb92ba 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -189,7 +189,7 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ }, do_record_group: function() { - if (this.NO_OF_COLUMNS) { + if (this.NO_OF_COLUMNS && this.all_display_data.length > 0) { var records = this.all_display_data[0].records; var record_per_group = Math.round((records).length / this.NO_OF_COLUMNS); this.all_display_data = []; @@ -443,7 +443,8 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ function (dataset) { self.groups = []; self.dataset.read_slice([], {'domain': self.domain, 'context': self.context}, function(records) { - self.all_display_data = [{'records': records, 'value':false, 'header' : false, 'ids': self.dataset.ids}]; + if (records.length) self.all_display_data = [{'records': records, 'value':false, 'header' : false, 'ids': self.dataset.ids}]; + else self.all_display_data = []; self.$element.find(".oe_kanban_view").remove(); self.on_show_data(); }); From 948b1c0a57498a976d34e42963c5e9c3f100a5a1 Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Thu, 22 Sep 2011 16:08:34 +0530 Subject: [PATCH 23/42] [IMP] kanban :- remove unused code. bzr revid: ysa@tinyerp.com-20110922103834-2h6hrp9ym8o872ah --- addons/web_kanban/static/src/js/kanban.js | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index d1fa4bb92ba..f278d304af3 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -265,16 +265,7 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ this.do_execute_action( button_attrs, dataset, record_id, function () { - var count = 1; - _.each(self.all_display_data, function(data, index) { - self.dataset.read_ids( data.ids, [], function(records){ - self.all_display_data[index].records = records; - if(self.all_display_data.length == count) { - self.do_actual_search(); - } - count++; - }); - }); + self.do_actual_search(); } ); }, From 092190e8de399b7297905866b9e768b051051ff2 Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Fri, 23 Sep 2011 14:18:38 +0530 Subject: [PATCH 24/42] [IMP] kanban :- add on_reload_record method for reload particular record. bzr revid: ysa@tinyerp.com-20110923084838-yynkktws7t1bpvbm --- addons/web_kanban/static/src/js/kanban.js | 28 ++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index f278d304af3..eb3810e3b5e 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -236,11 +236,37 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ data[$e.data('name')] = $(this).data('color'); self.dataset.write(id, data, {}, function() { // TODO fme: reload record instead of all. need refactoring - self.do_actual_search(); + self.on_reload_record(id, data); }); $cpicker.remove(); }); }, + /** + Reload one record in view. + record_id : reload record id. + data : change value in particular record. + */ + on_reload_record: function (record_id, data){ + var self = this; + for (var i=0, ii=this.all_display_data.length; i < ii; i++) { + for(j=0, jj=this.all_display_data[i].records.length; j < jj; j++) { + if (this.all_display_data[i].records[j].id == record_id) { + _.extend(this.all_display_data[i].records[j], data); + this.$element.find("#main_" + record_id).children().remove(); + this.$element.find("#main_" + record_id).append(this.qweb.render('kanban-box', { + record: this.do_transform_record(this.all_display_data[i].records[j]), + kanban_color: this.kanban_color, + kanban_gravatar: this.kanban_gravatar + })); + break; + } + } + } + this.$element.find("#main_" + record_id + " .oe_kanban_action").click(this.on_action_clicked); + this.$element.find("#main_" + record_id + " .oe_kanban_box_show_onclick_trigger").click(function() { + $(this).parent("#main_" + record_id + " .oe_kanban_box").find(".oe_kanban_box_show_onclick").toggle(); + }); + }, do_delete: function (id) { var self = this; return $.when(this.dataset.unlink([id])).then(function () { From 9adf06ef6f96acb7bac5ca3c3582c41b666d69ad Mon Sep 17 00:00:00 2001 From: Khushbu Date: Fri, 23 Sep 2011 14:25:57 +0530 Subject: [PATCH 25/42] [FIX] Used views own element id. bzr revid: kmo@tinyerp.com-20110923085557-t6alqpum8aa5ic4i --- addons/web_graph/static/src/js/graph.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/addons/web_graph/static/src/js/graph.js b/addons/web_graph/static/src/js/graph.js index 3ab6d4e20fc..3052a7bb8c9 100644 --- a/addons/web_graph/static/src/js/graph.js +++ b/addons/web_graph/static/src/js/graph.js @@ -49,8 +49,7 @@ openerp.web_graph.GraphView = openerp.web.View.extend({ this.operator = []; this.group_field = []; this.orientation = this.fields_view.arch.attrs.orientation || ''; - this.elem_id = this.view_manager.element_id; - + this.elem_id = this.element_id; _.each(this.fields_view.arch.children, function (field) { if (field.attrs.operator) { this.operator.push(field.attrs.name); From 895c2ab980b71f7a0f8785c67a4e3e846525ea71 Mon Sep 17 00:00:00 2001 From: Khushbu Date: Fri, 23 Sep 2011 15:07:53 +0530 Subject: [PATCH 26/42] [FIX] direct use of element_id bzr revid: kmo@tinyerp.com-20110923093753-8ghoyq5y24imet7y --- addons/web_graph/static/src/js/graph.js | 9 ++++----- addons/web_graph/static/src/xml/web_graph.xml | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/addons/web_graph/static/src/js/graph.js b/addons/web_graph/static/src/js/graph.js index 3052a7bb8c9..86c37b5508a 100644 --- a/addons/web_graph/static/src/js/graph.js +++ b/addons/web_graph/static/src/js/graph.js @@ -49,7 +49,6 @@ openerp.web_graph.GraphView = openerp.web.View.extend({ this.operator = []; this.group_field = []; this.orientation = this.fields_view.arch.attrs.orientation || ''; - this.elem_id = this.element_id; _.each(this.fields_view.arch.children, function (field) { if (field.attrs.operator) { this.operator.push(field.attrs.name); @@ -97,7 +96,7 @@ openerp.web_graph.GraphView = openerp.web.View.extend({ }, schedule_chart: function(results) { - this.$element.html(QWeb.render("GraphView", {"fields_view": this.fields_view, "chart": this.chart,'elem_id': this.elem_id})); + this.$element.html(QWeb.render("GraphView", {"fields_view": this.fields_view, "chart": this.chart,'element_id': this.element_id})); _.each(results, function (result) { _.each(result, function (field_value, field_name) { @@ -303,7 +302,7 @@ openerp.web_graph.GraphView = openerp.web.View.extend({ var bar_chart = new dhtmlXChart({ view: view_chart, - container: self.elem_id+"-barchart", + container: self.element_id+"-barchart", value:"#"+group_list[0]+"#", gradient: "3d", border: false, @@ -373,7 +372,7 @@ openerp.web_graph.GraphView = openerp.web.View.extend({ }); } bar_chart.parse(_.values(abscissa_data), "json"); - jQuery("#"+self.elem_id+"-barchart").height(jQuery("#"+self.elem_id+"-barchart").height()+50); + jQuery("#"+self.element_id+"-barchart").height(jQuery("#"+self.element_id+"-barchart").height()+50); bar_chart.attachEvent("onItemClick", function(id) { self.open_list_view(bar_chart.get(id)); }); @@ -382,7 +381,7 @@ openerp.web_graph.GraphView = openerp.web.View.extend({ var self = this; var chart = new dhtmlXChart({ view:"pie3D", - container:self.elem_id+"-piechart", + container:self.element_id+"-piechart", value:"#"+self.operator_field+"#", pieInnerText:function(obj) { var sum = chart.sum("#"+self.operator_field+"#"); diff --git a/addons/web_graph/static/src/xml/web_graph.xml b/addons/web_graph/static/src/xml/web_graph.xml index 4320b9f156e..90349623946 100644 --- a/addons/web_graph/static/src/xml/web_graph.xml +++ b/addons/web_graph/static/src/xml/web_graph.xml @@ -1,4 +1,4 @@ \ No newline at end of file From 04d35223741955b118529a22c23591c4f600b861 Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Fri, 23 Sep 2011 17:24:22 +0530 Subject: [PATCH 27/42] [IMP] kanbna:- if no group by on field then folding and unfolding columns work. bzr revid: ysa@tinyerp.com-20110923115422-0oi0y9pcj3swxg82 --- addons/web_kanban/static/src/js/kanban.js | 2 +- addons/web_kanban/static/src/xml/web_kanban.xml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index eb3810e3b5e..fc286855c90 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -194,7 +194,7 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ var record_per_group = Math.round((records).length / this.NO_OF_COLUMNS); this.all_display_data = []; for (var i=0, ii=this.NO_OF_COLUMNS; i < ii; i++) { - this.all_display_data.push({'records': records.slice(0,record_per_group), 'value':false, 'header' : false, 'ids':[]}); + this.all_display_data.push({'records': records.slice(0,record_per_group), 'value':i, 'header' : false, 'ids':[]}); records.splice(0,record_per_group); } } diff --git a/addons/web_kanban/static/src/xml/web_kanban.xml b/addons/web_kanban/static/src/xml/web_kanban.xml index 352ccf66b19..9ca9913b795 100644 --- a/addons/web_kanban/static/src/xml/web_kanban.xml +++ b/addons/web_kanban/static/src/xml/web_kanban.xml @@ -12,7 +12,7 @@
- +
@@ -21,7 +21,7 @@ -

+

From fbb36c547c2e720fae74cff35b75da147050b354 Mon Sep 17 00:00:00 2001 From: Olivier Dony Date: Mon, 26 Sep 2011 14:11:22 +0200 Subject: [PATCH 28/42] [IMP] openerp-server: handle more startup exceptions w/o exiting main thread bzr revid: odo@openerp.com-20110926121122-uecfrv53x731k5ey --- openerp-server | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/openerp-server b/openerp-server index b3a4a33e418..60eccd777bc 100755 --- a/openerp-server +++ b/openerp-server @@ -96,14 +96,17 @@ def preload_registry(dbname): def run_test_file(dbname, test_file): """ Preload a registry, possibly run a test file, and start the cron.""" - db, pool = openerp.pooler.get_db_and_pool(dbname, update_module=config['init'] or config['update'], pooljobs=False) + try: + db, pool = openerp.pooler.get_db_and_pool(dbname, update_module=config['init'] or config['update'], pooljobs=False) + cr = db.cursor() + logger = logging.getLogger('server') + logger.info('loading test file %s', test_file) + openerp.tools.convert_yaml_import(cr, 'base', file(test_file), {}, 'test', True) + cr.rollback() + cr.close() + except Exception: + logging.exception('Failed to initialize database `%s` and run test file `%s`.', dbname, test_file) - cr = db.cursor() - logger = logging.getLogger('server') - logger.info('loading test file %s', test_file) - openerp.tools.convert_yaml_import(cr, 'base', file(test_file), {}, 'test', True) - cr.rollback() - cr.close() def export_translation(): config = openerp.tools.config @@ -235,11 +238,14 @@ if __name__ == "__main__": sys.exit(0) for m in openerp.conf.server_wide_modules: - __import__(m) - # Call any post_load hook. - info = openerp.modules.module.load_information_from_description_file(m) - if info['post_load']: - getattr(sys.modules[m], info['post_load'])() + try: + __import__(m) + # Call any post_load hook. + info = openerp.modules.module.load_information_from_description_file(m) + if info['post_load']: + getattr(sys.modules[m], info['post_load'])() + except Exception: + logging.exception('Failed to load server-wide module `%s`', m) setup_pid_file() logger = logging.getLogger('server') From 0de487e0293bd4dcb2fb69bffba2e3ef63d57048 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 26 Sep 2011 09:51:15 +0200 Subject: [PATCH 29/42] [IMP] doc for import_data bzr revid: xmo@openerp.com-20110926075115-bsdyjzk5nhp0cbnh --- openerp/osv/orm.py | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index 37dd1010d2f..251e736e0e7 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -1030,17 +1030,6 @@ class orm_template(object): """ Import given data in given module - :param cr: database cursor - :param uid: current user id - :param fields: list of fields - :param data: data to import - :param mode: 'init' or 'update' for record creation - :param current_module: module name - :param noupdate: flag for record creation - :param context: context arguments, like lang, time zone, - :param filename: optional file to store partial import state for recovery - :rtype: tuple - This method is used when importing data via client menu. Example of fields to import for a sale.order:: @@ -1053,6 +1042,22 @@ class orm_template(object): order_line/price_unit, order_line/product_uom_qty, order_line/product_uom/id (=xml_id) + + This method returns a 4-tuple with the following structure: + + * The first item is a return code, it returns either ``-1`` in case o + + :param cr: database cursor + :param uid: current user id + :param fields: list of fields + :param data: data to import + :param mode: 'init' or 'update' for record creation + :param current_module: module name + :param noupdate: flag for record creation + :param context: context arguments, like lang, time zone, + :param filename: optional file to store partial import state for recovery + :returns: 4-tuple of a return code, an errored resource, an error message and ??? + :rtype: (int, dict|0, str|0, ''|0) """ if not context: context = {} From 6ec293a9c7b61effd0291d544fe4506c96ad5687 Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Mon, 26 Sep 2011 14:38:47 +0530 Subject: [PATCH 30/42] [IMP] kanban :- donot scroll when draging record out side of page. bzr revid: ysa@tinyerp.com-20110926090847-69nm54mpe73cqnq3 --- addons/web_kanban/static/src/js/kanban.js | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index fc286855c90..f910dc9927c 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -164,6 +164,7 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ self.source_index['column'] = ui.item.parent().attr('id'); }, stop: self.on_receive_record, + scroll: false }); this.$element.find(".oe_column").disableSelection() this.$element.find('button.oe_kanban_button_new').click(this.do_add_record); From 527cbb6a35609dd4c04e8963648d7fba9902263b Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 26 Sep 2011 14:22:23 +0200 Subject: [PATCH 31/42] [FIX] spurious context setting in menu-triggered action makes little sense to use the active_id of a menu-triggered action as it will return the menu's id lp bug: https://launchpad.net/bugs/855343 fixed bzr revid: xmo@openerp.com-20110926122223-0o8tgnfern5fk9ry --- addons/project_long_term/wizard/project_compute_phases_view.xml | 1 - addons/project_long_term/wizard/project_compute_tasks_view.xml | 1 - 2 files changed, 2 deletions(-) diff --git a/addons/project_long_term/wizard/project_compute_phases_view.xml b/addons/project_long_term/wizard/project_compute_phases_view.xml index 9d5754af09c..69b7d94eabd 100644 --- a/addons/project_long_term/wizard/project_compute_phases_view.xml +++ b/addons/project_long_term/wizard/project_compute_phases_view.xml @@ -31,7 +31,6 @@ form form - {'record_id': active_id} new To schedule phases of all or a specified project. It then open a gantt view. diff --git a/addons/project_long_term/wizard/project_compute_tasks_view.xml b/addons/project_long_term/wizard/project_compute_tasks_view.xml index e6540fafff9..e679110acdc 100644 --- a/addons/project_long_term/wizard/project_compute_tasks_view.xml +++ b/addons/project_long_term/wizard/project_compute_tasks_view.xml @@ -30,7 +30,6 @@ form form - {'record_id' : active_id} new From 02549a9c0e8d65b438aba68f96993164986829f8 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Mon, 26 Sep 2011 14:39:29 +0200 Subject: [PATCH 32/42] [imp] refactoring of form view to allow recursize save for o2m bzr revid: nicolas.vanhoren@openerp.com-20110926123929-35bespquay2qxmfe --- addons/web/static/src/js/view_form.js | 62 ++++++++++++++------------- 1 file changed, 32 insertions(+), 30 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 4b9432ca41a..806c0f0b319 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -345,7 +345,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# do_save: function(success, prepend_on_create) { var self = this; if (!this.ready) { - return false; + return $.Deferred().reject(); } var form_dirty = false, form_invalid = false, @@ -367,17 +367,17 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# if (form_invalid) { first_invalid_field.focus(); this.on_invalid(); - return false; + return $.Deferred().reject(); } else { console.log("About to save", values); if (!this.datarecord.id) { - return this.dataset.create(values, function(r) { - self.on_created(r, success, prepend_on_create); - }); + return this.dataset.create(values).pipe(function(r) { + return self.on_created(r, undefined, prepend_on_create); + }).then(success); } else { - return this.dataset.write(this.datarecord.id, values, {}, function(r) { - self.on_saved(r, success); - }); + return this.dataset.write(this.datarecord.id, values, {}).pipe(function(r) { + return self.on_saved(r); + }).then(success); } } }, @@ -402,11 +402,10 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# on_saved: function(r, success) { if (!r.result) { // should not happen in the server, but may happen for internal purpose + return $.Deferred().reject(); } else { - if (success) { - success(r); - } this.reload(); + return $.Deferred().then(success).resolve(r); } }, /** @@ -425,6 +424,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# on_created: function(r, success, prepend_on_create) { if (!r.result) { // should not happen in the server, but may happen for internal purpose + return $.Deferred().reject(); } else { this.datarecord.id = r.result; if (!prepend_on_create) { @@ -439,10 +439,8 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# this.sidebar.attachments.do_update(); } console.debug("The record has been created with id #" + this.datarecord.id); - if (success) { - success(_.extend(r, {created: true})); - } this.reload(); + return $.Deferred().then(success).resolve(_.extend(r, {created: true})); } }, do_search: function (domains, contexts, groupbys) { @@ -472,6 +470,13 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# get_selected_ids: function() { var id = this.dataset.ids[this.dataset.index]; return id ? [id] : []; + }, + recursive_save: function() { + var self = this; + return $.when(this.do_save()).pipe(function(res) { + if (self.parent_form_view) + return self.parent_form_view.recursive_save(); + }); } }); openerp.web.FormDialog = openerp.web.Dialog.extend({ @@ -830,30 +835,31 @@ openerp.web.form.WidgetButton = openerp.web.form.Widget.extend({ this._super.apply(this, arguments); this.$element.click(this.on_click); }, - on_click: function(saved) { + on_click: function() { var self = this; - if ((!this.node.attrs.special && this.view.dirty_for_user && saved !== true) || !this.view.datarecord.id) { - this.view.do_save(function() { - self.on_click(true); - }); - } else { - if (this.node.attrs.confirm) { - var dialog = $('
' + this.node.attrs.confirm + '
').dialog({ + var exec_action = function() { + if (self.node.attrs.confirm) { + var dialog = $('
' + self.node.attrs.confirm + '
').dialog({ title: 'Confirm', modal: true, buttons: { Ok: function() { self.on_confirmed(); - $(this).dialog("close"); + $(self).dialog("close"); }, Cancel: function() { - $(this).dialog("close"); + $(self).dialog("close"); } } }); } else { - this.on_confirmed(); + self.on_confirmed(); } + }; + if ((!this.node.attrs.special && this.view.dirty_for_user) || !this.view.datarecord.id) { + this.view.recursive_save().then(exec_action); + } else { + exec_action(); } }, on_confirmed: function() { @@ -1945,11 +1951,7 @@ openerp.web.form.FieldOne2Many = openerp.web.form.Field.extend({ var view = this.viewmanager.views[this.viewmanager.active_view].controller; if (this.viewmanager.active_view === "form") { var res = $.when(view.do_save()); - if (res === false) { - // ignore - } else if (res.isRejected()) { - throw "Save or create on one2many dataset is not supposed to fail."; - } else if (!res.isResolved()) { + if (!res.isResolved() && !res.isRejected()) { throw "Asynchronous get_value() is not supported in form view."; } return res; From 211713396a77201663718eaee3d3ee6ef7805692 Mon Sep 17 00:00:00 2001 From: Antony Lesuisse Date: Mon, 26 Sep 2011 14:53:30 +0200 Subject: [PATCH 33/42] [IMP] multiple addons-path bzr revid: al@openerp.com-20110926125330-9ddpet3tdho3gq2o --- addons/web/__init__.py | 5 ++--- addons/web/common/dispatch.py | 35 +++++++++++++++------------------- addons/web/controllers/main.py | 21 +++++++++++--------- openerp-web.py | 2 +- 4 files changed, 30 insertions(+), 33 deletions(-) diff --git a/addons/web/__init__.py b/addons/web/__init__.py index 681fd6b42b3..dba47c9f45e 100644 --- a/addons/web/__init__.py +++ b/addons/web/__init__.py @@ -10,15 +10,14 @@ class Options(object): pass def wsgi_postload(): - import openerp.wsgi - import openerp.tools + import openerp import os import tempfile _logger.info("embedded mode") o = Options() o.dbfilter = openerp.tools.config['dbfilter'] o.session_storage = os.path.join(tempfile.gettempdir(), "oe-sessions") - o.addons_path = os.path.dirname(os.path.dirname(__file__)) + o.addons_path = openerp.modules.module.ad_paths o.serve_static = True o.backend = 'local' diff --git a/addons/web/common/dispatch.py b/addons/web/common/dispatch.py index b0ab780cff0..7a293c8228b 100644 --- a/addons/web/common/dispatch.py +++ b/addons/web/common/dispatch.py @@ -33,7 +33,6 @@ _logger = logging.getLogger(__name__) # Globals (wont move into a pool) #----------------------------------------------------------- -applicationsession = {} addons_module = {} addons_manifest = {} controllers_class = {} @@ -52,10 +51,6 @@ class WebRequest(object): :type request: :class:`werkzeug.wrappers.BaseRequest` :param config: configuration object - .. attribute:: applicationsession - - an application-wide :class:`~collections.Mapping` - .. attribute:: httprequest the original :class:`werkzeug.wrappers.Request` object provided to the @@ -94,7 +89,6 @@ class WebRequest(object): ``bool``, indicates whether the debug mode is active on the client """ def __init__(self, request, config): - self.applicationsession = applicationsession self.httprequest = request self.httpresponse = None self.httpsession = request.session @@ -381,20 +375,21 @@ class Root(object): static URLs to the corresponding directories """ statics = {} - addons_path = self.config.addons_path - if addons_path not in sys.path: - sys.path.insert(0, addons_path) - for module in os.listdir(addons_path): - if module not in addons_module: - manifest_path = os.path.join(addons_path, module, '__openerp__.py') - path_static = os.path.join(addons_path, module, 'static') - if os.path.isfile(manifest_path) and os.path.isdir(path_static): - manifest = ast.literal_eval(open(manifest_path).read()) - _logger.info("Loading %s", module) - m = __import__(module) - addons_module[module] = m - addons_manifest[module] = manifest - statics['/%s/static' % module] = path_static + for addons_path in self.config.addons_path: + if addons_path not in sys.path: + sys.path.insert(0, addons_path) + for module in os.listdir(addons_path): + if module not in addons_module: + manifest_path = os.path.join(addons_path, module, '__openerp__.py') + path_static = os.path.join(addons_path, module, 'static') + if os.path.isfile(manifest_path) and os.path.isdir(path_static): + manifest = ast.literal_eval(open(manifest_path).read()) + manifest['addons_path'] = addons_path + _logger.info("Loading %s", module) + m = __import__(module) + addons_module[module] = m + addons_manifest[module] = manifest + statics['/%s/static' % module] = path_static for k, v in controllers_class.items(): if k not in controllers_object: o = v() diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index 79e260100b6..6b4a272c145 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -68,10 +68,12 @@ class Xml2Json: # OpenERP Web web Controllers #---------------------------------------------------------- -def manifest_glob(addons_path, addons, key): +def manifest_glob(addons, key): files = [] for addon in addons: - globlist = openerpweb.addons_manifest.get(addon, {}).get(key, []) + manifest = openerpweb.addons_manifest.get(addon, {}) + addons_path = manifest['addons_path'] + globlist = manifest.get(key, []) for pattern in globlist: for path in glob.glob(os.path.join(addons_path, addon, pattern)): files.append(path[len(addons_path):]) @@ -118,22 +120,22 @@ class WebClient(openerpweb.Controller): @openerpweb.jsonrequest def csslist(self, req, mods='web'): - return manifest_glob(req.config.addons_path, mods.split(','), 'css') + return manifest_glob(mods.split(','), 'css') @openerpweb.jsonrequest def jslist(self, req, mods='web'): - return manifest_glob(req.config.addons_path, mods.split(','), 'js') + return manifest_glob(mods.split(','), 'js') @openerpweb.httprequest def css(self, req, mods='web'): - files = manifest_glob(req.config.addons_path, mods.split(','), 'css') + files = manifest_glob(mods.split(','), 'css') content,timestamp = concat_files(req.config.addons_path, files) # TODO request set the Date of last modif and Etag return req.make_response(content, [('Content-Type', 'text/css')]) @openerpweb.httprequest def js(self, req, mods='web'): - files = manifest_glob(req.config.addons_path, mods.split(','), 'js') + files = manifest_glob(mods.split(','), 'js') content,timestamp = concat_files(req.config.addons_path, files) # TODO request set the Date of last modif and Etag return req.make_response(content, [('Content-Type', 'application/javascript')]) @@ -143,13 +145,13 @@ class WebClient(openerpweb.Controller): # script tags jslist = ['/web/webclient/js'] if req.debug: - jslist = [i + '?debug=' + str(time.time()) for i in manifest_glob(req.config.addons_path, ['web'], 'js')] + jslist = [i + '?debug=' + str(time.time()) for i in manifest_glob(['web'], 'js')] js = "\n ".join([''%i for i in jslist]) # css tags csslist = ['/web/webclient/css'] if req.debug: - csslist = [i + '?debug=' + str(time.time()) for i in manifest_glob(req.config.addons_path, ['web'], 'css')] + csslist = [i + '?debug=' + str(time.time()) for i in manifest_glob(['web'], 'css')] css = "\n ".join([''%i for i in csslist]) r = home_template % { 'javascript': js, @@ -179,7 +181,8 @@ class WebClient(openerpweb.Controller): transl = {"messages":[]} transs[addon_name] = transl for l in langs: - f_name = os.path.join(req.config.addons_path, addon_name, "po", l + ".po") + addons_path = openerpweb.addons_manifest[addon_name]['addons_path'] + f_name = os.path.join(addons_path, addon_name, "po", l + ".po") if not os.path.exists(f_name): continue try: diff --git a/openerp-web.py b/openerp-web.py index e5b28c83e0a..928a62e4528 100755 --- a/openerp-web.py +++ b/openerp-web.py @@ -24,7 +24,7 @@ optparser.add_option("--server-port", dest="server_port", default=8069, help="OpenERP server port", type="int", metavar="NUMBER") optparser.add_option("--db-filter", dest="dbfilter", default='.*', help="Filter listed database", metavar="REGEXP") -optparser.add_option('--addons-path', dest='addons_path', default=path_addons, +optparser.add_option('--addons-path', dest='addons_path', default=[path_addons], action='append', help="Path do addons directory", metavar="PATH") server_options = optparse.OptionGroup(optparser, "Server configuration") From c0d25a2d8985d8f94ccba3668e979ce3ef42d866 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Mon, 26 Sep 2011 15:03:29 +0200 Subject: [PATCH 34/42] [FIX] Fixed aggregates bzr revid: fme@openerp.com-20110926130329-r8urx8kcfdodcni2 --- addons/web_kanban/static/src/js/kanban.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index f910dc9927c..0f449a51cfc 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -447,7 +447,7 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ self.group_by = group_by; } self.datagroup = new openerp.web.DataGroup(self, self.model, self.domain, self.context, group_by); - self.datagroup.list([], + self.datagroup.list(_.keys(self.fields_view.fields), function (groups) { self.groups = groups; if (groups.length) { From 0a3a7663d1562ca3649c87cbc2abea0c9b7334ca Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 26 Sep 2011 16:02:41 +0200 Subject: [PATCH 35/42] [IMP] remove custom implementation of fields_view_get in graph view bzr revid: xmo@openerp.com-20110926140241-4xuobnvpncetk7bx --- addons/web_graph/__init__.py | 2 -- addons/web_graph/controllers/__init__.py | 1 - addons/web_graph/controllers/main.py | 11 ----------- addons/web_graph/static/src/js/graph.js | 14 +++++++++++++- 4 files changed, 13 insertions(+), 15 deletions(-) delete mode 100644 addons/web_graph/controllers/__init__.py delete mode 100644 addons/web_graph/controllers/main.py diff --git a/addons/web_graph/__init__.py b/addons/web_graph/__init__.py index 53e20f29429..e69de29bb2d 100644 --- a/addons/web_graph/__init__.py +++ b/addons/web_graph/__init__.py @@ -1,2 +0,0 @@ -#!/usr/bin/python -import controllers \ No newline at end of file diff --git a/addons/web_graph/controllers/__init__.py b/addons/web_graph/controllers/__init__.py deleted file mode 100644 index 039d9715fab..00000000000 --- a/addons/web_graph/controllers/__init__.py +++ /dev/null @@ -1 +0,0 @@ -import main \ No newline at end of file diff --git a/addons/web_graph/controllers/main.py b/addons/web_graph/controllers/main.py deleted file mode 100644 index cda868c0809..00000000000 --- a/addons/web_graph/controllers/main.py +++ /dev/null @@ -1,11 +0,0 @@ -from web.controllers.main import View -import web.common as openerpweb - -class GraphView(View): - _cp_path = "/web_graph/graphview" - - @openerpweb.jsonrequest - def load(self, req, model, view_id): - fields_view = self.fields_view_get(req, model, view_id, 'graph') - all_fields = req.session.model(model).fields_get() - return {'fields_view': fields_view, 'all_fields':all_fields} diff --git a/addons/web_graph/static/src/js/graph.js b/addons/web_graph/static/src/js/graph.js index 86c37b5508a..59bc2c29dcf 100644 --- a/addons/web_graph/static/src/js/graph.js +++ b/addons/web_graph/static/src/js/graph.js @@ -33,8 +33,20 @@ openerp.web_graph.GraphView = openerp.web.View.extend({ this.$element.hide(); }, start: function() { + var self = this; this._super(); - return this.rpc("/web_graph/graphview/load", {"model": this.model, "view_id": this.view_id}, this.on_loaded); + return $.when( + new openerp.web.DataSet(this, this.model).call('fields_get', []), + this.rpc('/web/view/load', { + model: this.model, + view_id: this.view_id, + view_type: 'graph' + })).then(function (fields_result, view_result) { + self.on_loaded({ + all_fields: fields_result[0], + fields_view: view_result[0] + }); + }); }, on_loaded: function(data) { this.all_fields = data.all_fields; From eac3fe15bdacc2794a8e4b33602c7a1b27c17e7d Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Mon, 26 Sep 2011 16:10:39 +0200 Subject: [PATCH 36/42] [FIX] Fixed vertical column headers bzr revid: fme@openerp.com-20110926141039-ylm2dp1kzk2dkagu --- addons/web_kanban/static/src/xml/web_kanban.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/web_kanban/static/src/xml/web_kanban.xml b/addons/web_kanban/static/src/xml/web_kanban.xml index 9ca9913b795..70843b8a0b8 100644 --- a/addons/web_kanban/static/src/xml/web_kanban.xml +++ b/addons/web_kanban/static/src/xml/web_kanban.xml @@ -12,7 +12,7 @@
- +
@@ -21,7 +21,7 @@ -

+

@@ -39,4 +39,4 @@ - \ No newline at end of file + From bd93d296afa53b32687838f648bcb73ba385d6a7 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Mon, 26 Sep 2011 17:04:24 +0200 Subject: [PATCH 37/42] [IMP] Improved aggregates bzr revid: fme@openerp.com-20110926150424-o6nsd1h26y8o945d --- addons/web_kanban/static/src/css/kanban.css | 6 +++++- addons/web_kanban/static/src/js/kanban.js | 4 ++-- addons/web_kanban/static/src/xml/web_kanban.xml | 10 +++++----- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/addons/web_kanban/static/src/css/kanban.css b/addons/web_kanban/static/src/css/kanban.css index 0aca55430b5..f92203589b2 100644 --- a/addons/web_kanban/static/src/css/kanban.css +++ b/addons/web_kanban/static/src/css/kanban.css @@ -27,6 +27,10 @@ font-size: 1.5em; font-weight: bold; } +.openerp .oe_kanban_view .fold-columns-icon { + float: left; + padding: 2px 2px 0 0; +} .openerp .oe_kanban_action_button { height: 22px; margin: 0; @@ -212,4 +216,4 @@ /* Alert color */ .openerp .oe_kanban_color_alert .oe_kanban_color_border { border-color: #c00 !important; -} \ No newline at end of file +} diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index 0f449a51cfc..df194e9f844 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -482,9 +482,9 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ group_name = group.value[1]; group_value = group.value[0]; } - var group_aggregates = ''; + var group_aggregates = {}; _.each(self.aggregates, function(value, key) { - group_aggregates += value + ": " + group.aggregates[key]; + group_aggregates[value] = group.aggregates[key]; }); self.dataset.read_slice([], {'domain': group.domain, 'context': group.context}, function(records) { self.all_display_data.push({"value" : group_value, "records": records, 'header':group_name, 'ids': self.dataset.ids, 'aggregates': group_aggregates}); diff --git a/addons/web_kanban/static/src/xml/web_kanban.xml b/addons/web_kanban/static/src/xml/web_kanban.xml index 70843b8a0b8..4c98f42f8fe 100644 --- a/addons/web_kanban/static/src/xml/web_kanban.xml +++ b/addons/web_kanban/static/src/xml/web_kanban.xml @@ -9,13 +9,13 @@ - + -
+
- -
- +
+
+ :
From 27c2db6a61d623ccce4e94c890dc0cf5972cdaca Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Mon, 26 Sep 2011 17:44:53 +0200 Subject: [PATCH 38/42] [IMP] Added 'Expected Revenues' aggregate in opportunities kanban view bzr revid: fme@openerp.com-20110926154453-cz72hniz203hnj4q --- addons/crm/crm_lead_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/crm/crm_lead_view.xml b/addons/crm/crm_lead_view.xml index d631e371948..12a3428236d 100644 --- a/addons/crm/crm_lead_view.xml +++ b/addons/crm/crm_lead_view.xml @@ -302,7 +302,7 @@ - + From 78cdb8d1ab6081a7c9ce3bb63ff1560e67270918 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Mon, 26 Sep 2011 18:00:57 +0200 Subject: [PATCH 39/42] [fix] problem in o2m form view with read only fields, now saves result of default_get bzr revid: nicolas.vanhoren@openerp.com-20110926160057-zss7934ji5hhtq44 --- addons/web/static/src/js/data.js | 23 ++++++++++++++++++----- addons/web/static/src/js/view_form.js | 9 ++++++--- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/addons/web/static/src/js/data.js b/addons/web/static/src/js/data.js index e5d323c8a96..00281628e75 100644 --- a/addons/web/static/src/js/data.js +++ b/addons/web/static/src/js/data.js @@ -608,15 +608,23 @@ openerp.web.BufferedDataSet = openerp.web.DataSetStatic.extend({ init: function() { this._super.apply(this, arguments); this.reset_ids([]); + this.last_default_get = {}; + }, + default_get: function(fields, callback) { + return this._super(fields).then(this.on_default_get).then(callback); + }, + on_default_get: function(res) { + this.last_default_get = res; }, create: function(data, callback, error_callback) { - var cached = {id:_.uniqueId(this.virtual_id_prefix), values: data}; + var cached = {id:_.uniqueId(this.virtual_id_prefix), values: data, + defaults: this.last_default_get}; this.to_create.push(cached); this.cache.push(cached); this.on_change(); - var to_return = $.Deferred().then(callback); - to_return.resolve({result: cached.id}); - return to_return.promise(); + var prom = $.Deferred().then(callback); + setTimeout(function() {prom.resolve({result: cached.id});}, 0); + return prom.promise(); }, write: function (id, data, options, callback) { var self = this; @@ -676,7 +684,8 @@ openerp.web.BufferedDataSet = openerp.web.DataSetStatic.extend({ var cached = _.detect(self.cache, function(x) {return x.id === id;}); var created = _.detect(self.to_create, function(x) {return x.id === id;}); if (created) { - _.each(fields, function(x) {if (cached.values[x] === undefined) cached.values[x] = false;}); + _.each(fields, function(x) {if (cached.values[x] === undefined) + cached.values[x] = created.defaults[x] || false;}); } else { if (!cached || !_.all(fields, function(x) {return cached.values[x] !== undefined})) to_get.push(id); @@ -716,6 +725,10 @@ openerp.web.BufferedDataSet = openerp.web.DataSetStatic.extend({ } }); openerp.web.ReadOnlyDataSetSearch = openerp.web.DataSetSearch.extend({ + default_get: function(fields, callback) { + return this._super(fields, callback).then(this.on_default_get); + }, + on_default_get: function(result) {}, create: function(data, callback, error_callback) { this.on_create(data); var to_return = $.Deferred().then(callback); diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 806c0f0b319..c7ffb896186 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -474,8 +474,8 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# recursive_save: function() { var self = this; return $.when(this.do_save()).pipe(function(res) { - if (self.parent_form_view) - return self.parent_form_view.recursive_save(); + if (self.dataset.parent_view) + return self.dataset.parent_view.recursive_save(); }); } }); @@ -2004,6 +2004,7 @@ openerp.web.form.One2ManyListView = openerp.web.ListView.extend({ } else { var self = this; var pop = new openerp.web.form.SelectCreatePopup(this); + pop.on_default_get.add(self.dataset.on_default_get); pop.select_element(self.o2m.field.relation,{ initial_view: "form", alternative_form_view: self.o2m.field.views ? self.o2m.field.views["form"] : undefined, @@ -2165,6 +2166,7 @@ openerp.web.form.SelectCreatePopup = openerp.web.OldWidget.extend(/** @lends ope this.dataset = new openerp.web.ReadOnlyDataSetSearch(this, this.model, this.context); this.dataset.parent_view = this.options.parent_view; + this.dataset.on_default_get.add(this.on_default_get); if (this.options.initial_view == "search") { this.setup_search_view(); } else { // "form" @@ -2287,7 +2289,8 @@ openerp.web.form.SelectCreatePopup = openerp.web.OldWidget.extend(/** @lends ope this.on_select_elements(this.created_elements); } this.stop(); - } + }, + on_default_get: function(res) {} }); openerp.web.form.SelectCreateListView = openerp.web.ListView.extend({ From 83df79527e2e1cdf843f3638c32a5756a1d2bed5 Mon Sep 17 00:00:00 2001 From: Antony Lesuisse Date: Mon, 26 Sep 2011 19:24:13 +0200 Subject: [PATCH 40/42] [IMP] default sequences are shared in multicompany bzr revid: al@openerp.com-20110926172413-5idcn0u7d3cppihn --- addons/purchase/purchase_sequence.xml | 2 +- addons/sale/sale_sequence.xml | 1 + addons/stock/stock_sequence.xml | 5 +++++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/addons/purchase/purchase_sequence.xml b/addons/purchase/purchase_sequence.xml index e8a7f43c503..d5b4fc4bd3b 100644 --- a/addons/purchase/purchase_sequence.xml +++ b/addons/purchase/purchase_sequence.xml @@ -11,7 +11,7 @@ purchase.order PO 5 - + diff --git a/addons/sale/sale_sequence.xml b/addons/sale/sale_sequence.xml index dadd1942940..666f7b49720 100644 --- a/addons/sale/sale_sequence.xml +++ b/addons/sale/sale_sequence.xml @@ -13,6 +13,7 @@ sale.order SO 3 + diff --git a/addons/stock/stock_sequence.xml b/addons/stock/stock_sequence.xml index cabf24dda5b..a8515c2f0df 100644 --- a/addons/stock/stock_sequence.xml +++ b/addons/stock/stock_sequence.xml @@ -29,6 +29,7 @@ stock.picking.in IN/ 5 + @@ -36,6 +37,7 @@ stock.picking.out OUT/ 5 + @@ -43,6 +45,7 @@ stock.picking.internal INT/ 5 +