From ae3ad89e6f32467bb7c08ea80eced7fd95928ecd Mon Sep 17 00:00:00 2001 From: Holger Brunn Date: Tue, 5 May 2015 16:26:46 +0200 Subject: [PATCH] [ADD] document_reindex --- document_reindex/README.rst | 33 ++++++++++++ document_reindex/__init__.py | 21 ++++++++ document_reindex/__openerp__.py | 41 ++++++++++++++ document_reindex/models/__init__.py | 22 ++++++++ document_reindex/models/ir_attachment.py | 50 ++++++++++++++++++ .../models/knowledge_config_settings.py | 43 +++++++++++++++ document_reindex/static/description/icon.png | Bin 0 -> 14699 bytes document_reindex/views/ir_attachment.xml | 16 ++++++ .../views/knowledge_config_settings.xml | 21 ++++++++ 9 files changed, 247 insertions(+) create mode 100644 document_reindex/README.rst create mode 100644 document_reindex/__init__.py create mode 100644 document_reindex/__openerp__.py create mode 100644 document_reindex/models/__init__.py create mode 100644 document_reindex/models/ir_attachment.py create mode 100644 document_reindex/models/knowledge_config_settings.py create mode 100644 document_reindex/static/description/icon.png create mode 100644 document_reindex/views/ir_attachment.xml create mode 100644 document_reindex/views/knowledge_config_settings.xml diff --git a/document_reindex/README.rst b/document_reindex/README.rst new file mode 100644 index 00000000..f7dbf8f7 --- /dev/null +++ b/document_reindex/README.rst @@ -0,0 +1,33 @@ +Reindex documents +================= + +This module allows you to reindex documents in case they were uploaded when the right configuration for indexation was missing. + +Usage +===== + +To reindex a single document, open its form and click the `Reindex document` button. + +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. + +Credits +======= + +Contributors +------------ + +* Holger Brunn +* Icon courtesy of http://www.picol.org (refresh.svg) and https://github.com/odoo/odoo/blob/8.0/addons/knowledge/static/description/icon.png + +Maintainer +---------- + +.. image:: http://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: http://odoo-community.org + +This module is maintained by the OCA. + +OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. + +To contribute to this module, please visit http://odoo-community.org. diff --git a/document_reindex/__init__.py b/document_reindex/__init__.py new file mode 100644 index 00000000..48f5a694 --- /dev/null +++ b/document_reindex/__init__.py @@ -0,0 +1,21 @@ +# -*- 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 . import models diff --git a/document_reindex/__openerp__.py b/document_reindex/__openerp__.py new file mode 100644 index 00000000..c69c5ba5 --- /dev/null +++ b/document_reindex/__openerp__.py @@ -0,0 +1,41 @@ +# -*- 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 . +# +############################################################################## +{ + "name": "Reindex documents", + "version": "1.0", + "author": "Therp BV", + "license": "AGPL-3", + "category": "Knowledge Management", + "summary": "Reindex your already uploaded documents", + "depends": [ + 'document', + ], + "data": [ + "views/knowledge_config_settings.xml", + "views/ir_attachment.xml", + ], + "auto_install": False, + "installable": True, + "application": False, + "external_dependencies": { + 'python': [], + }, +} diff --git a/document_reindex/models/__init__.py b/document_reindex/models/__init__.py new file mode 100644 index 00000000..a9c96dea --- /dev/null +++ b/document_reindex/models/__init__.py @@ -0,0 +1,22 @@ +# -*- 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 . import ir_attachment +from . import knowledge_config_settings diff --git a/document_reindex/models/ir_attachment.py b/document_reindex/models/ir_attachment.py new file mode 100644 index 00000000..5666f6a2 --- /dev/null +++ b/document_reindex/models/ir_attachment.py @@ -0,0 +1,50 @@ +# -*- 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 models, fields, api + + +class IrAttachment(models.Model): + _inherit = 'ir.attachment' + + @api.multi + def document_reindex(self): + for this in self: + if not this.datas: + continue + mimetype, indexed_content = this._index( + this.datas.decode('base64'), this.datas_fname, this.file_type) + this.write({ + 'file_type': mimetype, + 'index_content': indexed_content, + }) + + @api.model + def document_reindex_all(self): + self.search([('datas', '!=', False)]).document_reindex() + + @api.model + def document_reindex_unindexed(self): + self.search([ + ('datas', '!=', False), + '|', + ('index_content', '=', False), + ('index_content', '=', ''), + ]).document_reindex() diff --git a/document_reindex/models/knowledge_config_settings.py b/document_reindex/models/knowledge_config_settings.py new file mode 100644 index 00000000..b24b10f6 --- /dev/null +++ b/document_reindex/models/knowledge_config_settings.py @@ -0,0 +1,43 @@ +# -*- 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 models, fields, api + + +class KnowledgeConfigSettings(models.TransientModel): + _inherit = 'knowledge.config.settings' + + document_reindex_all = fields.Boolean('Reindex all documents') + document_reindex_unindexed = fields.Boolean('Reindex unindexed documents') + + @api.one + def set_document_reindex(self): + if self.document_reindex_all: + self.document_reindex_create_cronjob('document_reindex_all') + if self.document_reindex_unindexed: + self.document_reindex_create_cronjob('document_reindex_unindexed') + + @api.multi + def document_reindex_create_cronjob(self, function): + self.env['ir.cron'].create({ + 'name': function, + 'model': 'ir.attachment', + 'function': function, + }) diff --git a/document_reindex/static/description/icon.png b/document_reindex/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e106e973cba61f21c798fc5640834b930f6d5dbb GIT binary patch literal 14699 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 literal 0 HcmV?d00001 diff --git a/document_reindex/views/ir_attachment.xml b/document_reindex/views/ir_attachment.xml new file mode 100644 index 00000000..af842f21 --- /dev/null +++ b/document_reindex/views/ir_attachment.xml @@ -0,0 +1,16 @@ + + + + + ir.attachment + + + +
+
+
+
+
+
+
diff --git a/document_reindex/views/knowledge_config_settings.xml b/document_reindex/views/knowledge_config_settings.xml new file mode 100644 index 00000000..2d91a7bf --- /dev/null +++ b/document_reindex/views/knowledge_config_settings.xml @@ -0,0 +1,21 @@ + + + + + knowledge.config.settings + + + +
+ +
+
+ +
+
+
+
+
+