From 14c5cfd5d8aa2eef479d425970d493225f7ec1ce Mon Sep 17 00:00:00 2001 From: Adrian Moennich Date: Thu, 13 Nov 2014 14:02:08 +0100 Subject: [PATCH] Import settings from ZODB --- .../indico_search_invenio/zodbimport.py | 42 +++++++++++++++++++ search_invenio/setup.py | 5 ++- 2 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 search_invenio/indico_search_invenio/zodbimport.py diff --git a/search_invenio/indico_search_invenio/zodbimport.py b/search_invenio/indico_search_invenio/zodbimport.py new file mode 100644 index 0000000..96b99e7 --- /dev/null +++ b/search_invenio/indico_search_invenio/zodbimport.py @@ -0,0 +1,42 @@ +# This file is part of Indico. +# Copyright (C) 2002 - 2014 European Organization for Nuclear Research (CERN). +# +# Indico is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3 of the +# License, or (at your option) any later version. +# +# Indico 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 +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Indico; if not, see . + +from __future__ import unicode_literals + +from indico.core.db import db +from indico.util.console import cformat +from indico_zodbimport import Importer, convert_to_unicode + +from indico_search_invenio.plugin import InvenioSearchPlugin + + +class InvenioSearchImporter(Importer): + plugins = {'search', 'search_invenio'} + + def migrate(self): + self.migrate_settings() + + def migrate_settings(self): + print cformat('%{white!}migrating settings') + InvenioSearchPlugin.settings.delete_all() + opts = self.zodb_root['plugins']['search']._PluginType__plugins['invenio']._PluginBase__options + InvenioSearchPlugin.settings.set('search_url', convert_to_unicode(opts['serverUrl'].getValue()).strip()) + type_map = {'public': 'api_public', + 'private': 'api_private', + 'redirect': 'redirect'} + display_mode = type_map[opts['type'].getValue()] + InvenioSearchPlugin.settings.set('display_mode', display_mode) + db.session.commit() diff --git a/search_invenio/setup.py b/search_invenio/setup.py index f60e340..613d8bb 100644 --- a/search_invenio/setup.py +++ b/search_invenio/setup.py @@ -14,6 +14,8 @@ # You should have received a copy of the GNU General Public License # along with Indico; if not, see . +from __future__ import unicode_literals + from setuptools import setup, find_packages @@ -38,5 +40,6 @@ setup( 'License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)', 'Programming Language :: Python :: 2.7' ], - entry_points={'indico.plugins': {'search_invenio = indico_search_invenio.plugin:InvenioSearchPlugin'}} + entry_points={'indico.plugins': {'search_invenio = indico_search_invenio.plugin:InvenioSearchPlugin'}, + 'indico.zodb_importers': {'search_invenio = indico_search_invenio.zodbimport:InvenioSearchImporter'}} )