From b39aac717d7a998cc169418c483a7b063fe5fa79 Mon Sep 17 00:00:00 2001 From: Xavier Morel <xmo@openerp.com> Date: Mon, 12 May 2014 12:04:00 +0200 Subject: [PATCH] [IMP] mail, base_import: context key disabling history tracking * added a ``tracking_disable`` context key used by mail to completely disable subscriptions setup and events generation during create and write operations * added import option to optionally set up that context key and speed up imports at the cost of not setting up subscriptions and not sending create/update events bzr revid: xmo@openerp.com-20140512100400-d1axjam2d0i2y0tf --- addons/base_import/static/src/js/import.js | 5 ++++- addons/base_import/static/src/xml/import.xml | 9 +++++++++ addons/mail/mail_thread.py | 7 +++++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/addons/base_import/static/src/js/import.js b/addons/base_import/static/src/js/import.js index 78cb09001a97..0ee88e0a203a 100644 --- a/addons/base_import/static/src/js/import.js +++ b/addons/base_import/static/src/js/import.js @@ -363,7 +363,10 @@ openerp.base_import = function (instance) { var fields = this.$('.oe_import_fields input.oe_import_match_field').map(function (index, el) { return $(el).select2('val') || false; }).get(); - kwargs.context = this.parent_context; + kwargs.context = _.extend( + {}, this.parent_context, + {tracking_disable: !this.$('#oe_import_tracking').prop('checked')} + ); return this.Import.call('do', [this.id, fields, this.import_options()], kwargs) .then(undefined, function (error, event) { // In case of unexpected exception, convert diff --git a/addons/base_import/static/src/xml/import.xml b/addons/base_import/static/src/xml/import.xml index 8d7155912e69..953beca8d9f9 100644 --- a/addons/base_import/static/src/xml/import.xml +++ b/addons/base_import/static/src/xml/import.xml @@ -53,6 +53,15 @@ <div class="oe_import_with_file oe_padding"> <h2>Map your data to OpenERP</h2> + <div title="If the model uses openchatter, history tracking + will set up subscriptions and send notifications + during the import, but lead to a slower import."> + <input type="checkbox" id="oe_import_tracking" + checked="checked"/> + <label for="oe_import_tracking"> + Track history during import + </label> + </div> <input type="checkbox" class="oe_import_has_header" id="oe_import_has_header" checked="checked"/> <label for="oe_import_has_header">The first row of the diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index b6166c69aef2..43cf4cddda48 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -359,6 +359,10 @@ class mail_thread(osv.AbstractModel): if context is None: context = {} + if context.get('tracking_disable'): + return super(mail_thread, self).create( + cr, uid, values, context=context) + # subscribe uid unless asked not to if not context.get('mail_create_nosubscribe'): pid = self.pool['res.users'].browse(cr, SUPERUSER_ID, uid).partner_id.id @@ -394,6 +398,9 @@ class mail_thread(osv.AbstractModel): context = {} if isinstance(ids, (int, long)): ids = [ids] + if context.get('tracking_disable'): + return super(mail_thread, self).write( + cr, uid, ids, values, context=context) # Track initial values of tracked fields track_ctx = dict(context) if 'lang' not in track_ctx: -- GitLab