From e4d11a8c1e342db169a56230aa7fea05736c1a4f Mon Sep 17 00:00:00 2001 From: Holger Brunn Date: Wed, 3 Jun 2015 11:39:49 +0200 Subject: [PATCH] [ADD] allow synchronous reindexation during init --- document_reindex/README.rst | 5 +---- document_reindex/__init__.py | 1 + document_reindex/__openerp__.py | 1 + document_reindex/hooks.py | 35 +++++++++++++++++++++++++++++++++ 4 files changed, 38 insertions(+), 4 deletions(-) create mode 100644 document_reindex/hooks.py diff --git a/document_reindex/README.rst b/document_reindex/README.rst index ce560882..e3e0e9a8 100644 --- a/document_reindex/README.rst +++ b/document_reindex/README.rst @@ -10,10 +10,7 @@ To reindex a single document, open its form and click the `Reindex document` but To reindex all documents, go to Settings / Configuration / Knowledge, check the box `Reindex all documents` or `Reindex all unindexed documents` and click apply. Those are done in the background, so watch your logs for the process to finish. -Known issues / Roadmap -====================== - -* Currently, this module is not fit for huge amounts of documents +In a migration context, you might want to reindex all or unindexed documents. To achieve this, create a config parameter `document_reindex.reindex_unindexed_on_init` or `document_reindex.reindex_all_on_init` to have the reindexation run synchronously during installation of this module. Credits ======= diff --git a/document_reindex/__init__.py b/document_reindex/__init__.py index 48f5a694..0c0c8df4 100644 --- a/document_reindex/__init__.py +++ b/document_reindex/__init__.py @@ -19,3 +19,4 @@ # ############################################################################## from . import models +from .hooks import post_init_hook diff --git a/document_reindex/__openerp__.py b/document_reindex/__openerp__.py index 28bdf1a7..8f2b0bc0 100644 --- a/document_reindex/__openerp__.py +++ b/document_reindex/__openerp__.py @@ -32,6 +32,7 @@ "views/knowledge_config_settings.xml", "views/ir_attachment.xml", ], + "post_init_hook": 'post_init_hook', "auto_install": False, "installable": True, "application": False, diff --git a/document_reindex/hooks.py b/document_reindex/hooks.py new file mode 100644 index 00000000..65f54f28 --- /dev/null +++ b/document_reindex/hooks.py @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# This module copyright (C) 2015 Therp BV . +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## +from openerp import SUPERUSER_ID, api + + +def post_init_hook(cr, pool): + env = api.Environment(cr, SUPERUSER_ID, {}) + with env.manage(): + func = None + if env['ir.config_parameter'].get_param( + 'document_reindex.reindex_all_on_init'): + func = 'document_reindex_all' + if env['ir.config_parameter'].get_param( + 'document_reindex.reindex_unindexed_on_init'): + func = 'document_reindex_unindexed' + if func: + getattr(env['ir.attachment'], func)()