From cea55917424b7500b97ef2db09f19a636441708a Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Wed, 7 May 2014 09:43:10 +0200 Subject: [PATCH 1/2] [FIX] runbot color bzr revid: fme@openerp.com-20140507074310-bt0r1vt6rsgy9wqe --- openerp/addons/base/ir/ir_ui_view.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/ir/ir_ui_view.py b/openerp/addons/base/ir/ir_ui_view.py index f5ebbe4d63a..026f9161c36 100644 --- a/openerp/addons/base/ir/ir_ui_view.py +++ b/openerp/addons/base/ir/ir_ui_view.py @@ -885,7 +885,7 @@ class view(osv.osv): # TODO: remove this as soon as the following branch is merged # lp:~openerp-dev/openerp-web/trunk-module-closure-style-msh from openerp.addons.web.controllers.main import module_boot - qcontext['modules'] = simplejson.dumps(module_boot()) + qcontext['modules'] = simplejson.dumps(module_boot()) if request else None def loader(name): return self.read_template(cr, uid, name, context=context) From 7a492f6202d469278b1c6766b8c43d0343bb788b Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 7 May 2014 12:30:56 +0200 Subject: [PATCH 2/2] [IMP] mail: type fixes * _get_tracked_fields should return a dict even when there's no tracked field (return an empty dict) * in write, only call _get_tracked_fields once, initialize to None instead of a list (especially since it should be a dict in the first place) bzr revid: xmo@openerp.com-20140507103056-ykr9f57yxpw1c542 --- addons/mail/mail_thread.py | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index 112dff6bac6..79bf92cb68d 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -385,7 +385,7 @@ class mail_thread(osv.AbstractModel): if not context.get('mail_notrack'): tracked_fields = self._get_tracked_fields(cr, uid, values.keys(), context=track_ctx) if tracked_fields: - initial_values = {thread_id: dict((item, False) for item in tracked_fields)} + initial_values = {thread_id: dict.fromkeys(tracked_fields, False)} self.message_track(cr, uid, [thread_id], tracked_fields, initial_values, context=track_ctx) return thread_id @@ -398,25 +398,24 @@ class mail_thread(osv.AbstractModel): track_ctx = dict(context) if 'lang' not in track_ctx: track_ctx['lang'] = self.pool.get('res.users').browse(cr, uid, uid, context=context).lang + + tracked_fields = None if not context.get('mail_notrack'): tracked_fields = self._get_tracked_fields(cr, uid, values.keys(), context=track_ctx) - else: - tracked_fields = [] + if tracked_fields: records = self.browse(cr, uid, ids, context=track_ctx) - initial_values = dict((this.id, dict((key, getattr(this, key)) for key in tracked_fields.keys())) for this in records) + initial_values = dict((record.id, dict((key, getattr(record, key)) for key in tracked_fields)) + for record in records) # Perform write, update followers result = super(mail_thread, self).write(cr, uid, ids, values, context=context) self.message_auto_subscribe(cr, uid, ids, values.keys(), context=context, values=values) - if not context.get('mail_notrack'): - # Perform the tracking - tracked_fields = self._get_tracked_fields(cr, uid, values.keys(), context=context) - else: - tracked_fields = None + # Perform the tracking if tracked_fields: self.message_track(cr, uid, ids, tracked_fields, initial_values, context=track_ctx) + return result def unlink(self, cr, uid, ids, context=None): @@ -453,14 +452,15 @@ class mail_thread(osv.AbstractModel): :return list: a list of (field_name, column_info obj), containing always tracked fields and modified on_change fields """ - lst = [] + tracked_fields = [] for name, column_info in self._all_columns.items(): visibility = getattr(column_info.column, 'track_visibility', False) if visibility == 'always' or (visibility == 'onchange' and name in updated_fields) or name in self._track: - lst.append(name) - if not lst: - return lst - return self.fields_get(cr, uid, lst, context=context) + tracked_fields.append(name) + + if tracked_fields: + return self.fields_get(cr, uid, tracked_fields, context=context) + return {} def message_track(self, cr, uid, ids, tracked_fields, initial_values, context=None): @@ -1871,4 +1871,4 @@ class mail_thread(osv.AbstractModel): message_obj.write(cr, uid, msg_ids_comment, {"res_id" : new_res_id, "model" : new_model}, context=context) message_obj.write(cr, uid, msg_ids_not_comment, {"res_id" : new_res_id, "model" : new_model, "subtype_id" : None}, context=context) - return True \ No newline at end of file + return True