From e6335d2b4072a4045e0b677adcb01acbcfa35ce2 Mon Sep 17 00:00:00 2001 From: "Parth Gajjar (Open ERP)" Date: Fri, 21 Feb 2014 18:47:28 +0530 Subject: [PATCH 1/5] [IMP] improved UI for empty kanban(group_by) bzr revid: pga@tinyerp.com-20140221131728-i2ra7rrkgl9hu69n --- addons/web_kanban/static/src/css/kanban.css | 7 ++++++- addons/web_kanban/static/src/js/kanban.js | 8 ++------ addons/web_kanban/static/src/xml/web_kanban.xml | 2 +- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/addons/web_kanban/static/src/css/kanban.css b/addons/web_kanban/static/src/css/kanban.css index dea09b75651..fe0dd75632f 100644 --- a/addons/web_kanban/static/src/css/kanban.css +++ b/addons/web_kanban/static/src/css/kanban.css @@ -9,8 +9,13 @@ .openerp .oe_kanban_view .oe_view_nocontent { position: relative; max-width: none; + z-index: 1; + width: 100%; height: 100%; } +.openerp .oe_kanban_view.oe_kanban_grouped{ + position: relative; +} .openerp .oe_kanban_view .oe_view_nocontent .oe_view_nocontent_content { margin-left: 90px; margin-top: 5px; @@ -160,7 +165,7 @@ padding: 0px; background: white; } -.openerp .oe_kanban_view .oe_kanban_column, .openerp .oe_kanban_view .oe_kanban_column_cards { +.openerp .oe_kanban_view .oe_kanban_column { height: 100%; } .openerp .oe_kanban_view .oe_kanban_aggregates { diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index f600e20c03b..ca4bd4917bb 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -43,7 +43,6 @@ instance.web_kanban.KanbanView = instance.web.View.extend({ this.currently_dragging = {}; this.limit = options.limit || 40; this.add_group_mutex = new $.Mutex(); - this.last_position = 'static'; }, view_loading: function(r) { return this.load_kanban(r); @@ -496,16 +495,13 @@ instance.web_kanban.KanbanView = instance.web.View.extend({ || (!this.options.action.help && !this.options.action.get_empty_list_help)) { return; } - this.last_position = this.$el.find('table:first').css("position"); - this.$el.find('table:first').css("position", "absolute"); - $(QWeb.render('KanbanView.nocontent', { content : this.options.action.get_empty_list_help || this.options.action.help})).insertAfter(this.$('table:first')); + $(QWeb.render('KanbanView.nocontent', { content : this.options.action.get_empty_list_help || this.options.action.help})).insertBefore(this.$('table:first')); this.$el.find('.oe_view_nocontent').click(function() { self.$buttons.openerpBounce(); }); }, remove_no_result: function() { - this.$el.find('table:first').css("position", this.last_position); - this.$el.find('.oe_view_nocontent').remove(); + this.$el.find('.oe_view_nocontent').remove(); }, /* diff --git a/addons/web_kanban/static/src/xml/web_kanban.xml b/addons/web_kanban/static/src/xml/web_kanban.xml index 33e03baf5f9..8c145fea23f 100644 --- a/addons/web_kanban/static/src/xml/web_kanban.xml +++ b/addons/web_kanban/static/src/xml/web_kanban.xml @@ -102,7 +102,7 @@ -
+
From 004fa1f1acdcc68a5d138f68da674630e22cd1df Mon Sep 17 00:00:00 2001 From: "Parth Gajjar (Open ERP)" Date: Wed, 5 Mar 2014 17:03:07 +0530 Subject: [PATCH 2/5] [IMP] improvement for kanban card movement bzr revid: pga@tinyerp.com-20140305113307-mbwffroxmbgefion --- addons/web_kanban/static/src/css/kanban.css | 5 +---- addons/web_kanban/static/src/js/kanban.js | 2 ++ 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/addons/web_kanban/static/src/css/kanban.css b/addons/web_kanban/static/src/css/kanban.css index fe0dd75632f..65b3d97fac9 100644 --- a/addons/web_kanban/static/src/css/kanban.css +++ b/addons/web_kanban/static/src/css/kanban.css @@ -13,9 +13,6 @@ width: 100%; height: 100%; } -.openerp .oe_kanban_view.oe_kanban_grouped{ - position: relative; -} .openerp .oe_kanban_view .oe_view_nocontent .oe_view_nocontent_content { margin-left: 90px; margin-top: 5px; @@ -165,7 +162,7 @@ padding: 0px; background: white; } -.openerp .oe_kanban_view .oe_kanban_column { +.openerp .oe_kanban_view .oe_kanban_column, .openerp .oe_kanban_view .oe_kanban_column_cards { height: 100%; } .openerp .oe_kanban_view .oe_kanban_aggregates { diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index ca4bd4917bb..1c87c453d7f 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -495,12 +495,14 @@ instance.web_kanban.KanbanView = instance.web.View.extend({ || (!this.options.action.help && !this.options.action.get_empty_list_help)) { return; } + this.$el.css("position", "relative"); $(QWeb.render('KanbanView.nocontent', { content : this.options.action.get_empty_list_help || this.options.action.help})).insertBefore(this.$('table:first')); this.$el.find('.oe_view_nocontent').click(function() { self.$buttons.openerpBounce(); }); }, remove_no_result: function() { + this.$el.css("position", ""); this.$el.find('.oe_view_nocontent').remove(); }, From e4d4c00312141057bdb0df139e39ac641d0c6f91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Fri, 11 Apr 2014 16:15:10 +0200 Subject: [PATCH 3/5] [FIX] gamification: allow having False or 0 values as result of a computation. bzr revid: tde@openerp.com-20140411141510-c11djv7qlf9qgek2 --- addons/gamification/models/goal.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/addons/gamification/models/goal.py b/addons/gamification/models/goal.py index 925b05de5ab..2408e58d3d7 100644 --- a/addons/gamification/models/goal.py +++ b/addons/gamification/models/goal.py @@ -249,16 +249,15 @@ class gamification_goal(osv.Model): 'object': goal, 'pool': self.pool, 'cr': cr, - 'context': dict(context), # copy context to prevent side-effects of eval + 'context': dict(context), # copy context to prevent side-effects of eval 'uid': uid, - 'result': False, 'date': date, 'datetime': datetime, 'timedelta': timedelta, 'time': time } code = goal.definition_id.compute_code.strip() safe_eval(code, cxt, mode="exec", nocopy=True) # the result of the evaluated codeis put in the 'result' local variable, propagated to the context - result = cxt.get('result', False) - if result and type(result) in (float, int, long): + result = cxt.get('result') + if result is not None and type(result) in (float, int, long): if result != goal.current: towrite['current'] = result else: From e2dc6b782d844c8cbfa85ce34b16f3ed588055f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Fri, 11 Apr 2014 16:22:14 +0200 Subject: [PATCH 4/5] [FIX] mail: avoid crashing message_post if the subtype does not exists anymore. Using xmlid_to_res_id, subtype_id will be False if not found. bzr revid: tde@openerp.com-20140411142214-nvvgkduzv51cc2eg --- addons/mail/mail_thread.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index f2d33be7787..73588207d6a 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -1511,8 +1511,7 @@ class mail_thread(osv.AbstractModel): if subtype: if '.' not in subtype: subtype = 'mail.%s' % subtype - ref = self.pool.get('ir.model.data').get_object_reference(cr, uid, *subtype.split('.')) - subtype_id = ref and ref[1] or False + subtype_id = self.pool.get('ir.model.data').xmlid_to_res_id(cr, uid, subtype) # automatically subscribe recipients if asked to if context.get('mail_post_autofollow') and thread_id and partner_ids: From bf7c16d6d905172d437ac6c154b7cacb1c802605 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Fri, 11 Apr 2014 16:28:42 +0200 Subject: [PATCH 5/5] [FIX] mail: res_users post: fixed partner_ids computation, could receive a list of ids, or a list of commands. Both cases should be taken into account. bzr revid: tde@openerp.com-20140411142842-kw0x1vrop6x6i5kf --- addons/mail/res_users.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/addons/mail/res_users.py b/addons/mail/res_users.py index 645a77ea707..42e739d8051 100644 --- a/addons/mail/res_users.py +++ b/addons/mail/res_users.py @@ -118,10 +118,18 @@ class res_users(osv.Model): various mailboxes, we do not have access to the current partner_id. """ if isinstance(thread_id, (list, tuple)): thread_id = thread_id[0] + current_pids = [] partner_ids = kwargs.get('partner_ids', []) - partner_id = self._message_post_get_pid(cr, uid, thread_id, context=context) - if partner_id not in [command[1] for command in partner_ids]: - partner_ids.append(partner_id) + user_pid = self._message_post_get_pid(cr, uid, thread_id, context=context) + for partner_id in partner_ids: + if isinstance(partner_id, (list, tuple)) and partner_id[0] == 4 and len(partner_id) == 2: + current_pids.append(partner_id[1]) + elif isinstance(partner_id, (list, tuple)) and partner_id[0] == 6 and len(partner_id) == 3: + current_pids.append(partner_id[2]) + elif isinstance(partner_id, (int, long)): + current_pids.append(partner_id) + if user_pid not in current_pids: + partner_ids.append(user_pid) kwargs['partner_ids'] = partner_ids return self.pool.get('mail.thread').message_post(cr, uid, False, **kwargs)