diff --git a/piwik/indico_piwik/zodbimport.py b/piwik/indico_piwik/zodbimport.py new file mode 100644 index 0000000..fc765de --- /dev/null +++ b/piwik/indico_piwik/zodbimport.py @@ -0,0 +1,50 @@ +# 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_piwik import PiwikPlugin + + +class PiwikImporter(Importer): + plugins = {'piwik'} + + def migrate(self): + self.migrate_settings() + + def migrate_settings(self): + print cformat('%{white!}migrating settings') + PiwikPlugin.settings.delete_all() + type_opts = self.zodb_root['plugins']['statistics']._PluginBase__options + settings_map = {'cacheEnabled': 'cache_enabled', + 'cacheTTL': 'cache_ttl'} + for old, new in settings_map.iteritems(): + PiwikPlugin.settings.set(new, type_opts[old].getValue()) + opts = self.zodb_root['plugins']['statistics']._PluginType__plugins['piwik']._PluginBase__options + settings_map = {'serverAPIUrl': 'server_api_url', + 'serverUrl': 'server_url', + 'serverSiteID': 'site_id_general', + 'serverTok': 'server_token', + 'useOnlyServerURL': 'use_only_server_url', + 'jsHookEnabled': 'enabled_for_events', + 'downloadTrackingEnabled': 'enabled_for_downloads'} + for old, new in settings_map.iteritems(): + PiwikPlugin.settings.set(new, opts[old].getValue()) + db.session.commit() diff --git a/piwik/setup.py b/piwik/setup.py index 97b6b1b..0bd9839 100644 --- a/piwik/setup.py +++ b/piwik/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 @@ -37,5 +39,6 @@ setup( 'License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)', 'Programming Language :: Python :: 2.7' ], - entry_points={'indico.plugins': {'piwik = indico_piwik:PiwikPlugin'}} + entry_points={'indico.plugins': {'piwik = indico_piwik:PiwikPlugin'}, + 'indico.zodb_importers': {'piwik = indico_piwik.zodbimport:PiwikImporter'}} )