[ADD] allow synchronous reindexation during init

This commit is contained in:
Holger Brunn 2015-06-03 11:39:49 +02:00
parent dafc1d6639
commit e4d11a8c1e
4 changed files with 38 additions and 4 deletions

View File

@ -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
=======

View File

@ -19,3 +19,4 @@
#
##############################################################################
from . import models
from .hooks import post_init_hook

View File

@ -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,

35
document_reindex/hooks.py Normal file
View File

@ -0,0 +1,35 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# This module copyright (C) 2015 Therp BV <http://therp.nl>.
#
# 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 <http://www.gnu.org/licenses/>.
#
##############################################################################
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)()