openlp-core team mailing list archive
-
openlp-core team
-
Mailing list archive
-
Message #00595
[Merge] lp:~j-corwin/openlp/migration into lp:openlp
Jonathan Corwin has proposed merging lp:~j-corwin/openlp/migration into lp:openlp.
Requested reviews:
Martin Thompson (mjthompson)
Tim Bentley (trb143)
--
https://code.launchpad.net/~j-corwin/openlp/migration/+merge/13543
Your team OpenLP Core is subscribed to branch lp:openlp.
=== removed file 'cnvdb.py'
--- cnvdb.py 2009-09-25 00:43:42 +0000
+++ cnvdb.py 1970-01-01 00:00:00 +0000
@@ -1,61 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4
-
-###############################################################################
-# OpenLP - Open Source Lyrics Projection #
-# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2009 Raoul Snyman #
-# Portions copyright (c) 2008-2009 Martin Thompson, Tim Bentley, Carsten #
-# Tinggaard, Jon Tibble, Jonathan Corwin, Maikel Stuivenberg, Scott Guerrieri #
-# --------------------------------------------------------------------------- #
-# This program 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; version 2 of the License. #
-# #
-# 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 General Public License for #
-# more details. #
-# #
-# You should have received a copy of the GNU General Public License along #
-# with this program; if not, write to the Free Software Foundation, Inc., 59 #
-# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
-###############################################################################
-
-import codecs
-import sys
-
-def convert_file(inname, outname):
- """
- Convert a file from another encoding into UTF-8.
-
- ``inname``
- The name of the file to be opened and converted.
-
- ``outname``
- The output file name.
- """
- infile = codecs.open(inname, 'r', encoding='CP1252')
- writefile = codecs.open(outname, 'w', encoding='utf-8')
- for line in infile:
- #replace the quotes with quotes
- #TODO fix double quotes
- #line = line.replace(u'\'\'', u'@')
- writefile.write(line)
- infile.close()
- writefile.close()
-
-if __name__ == '__main__':
- """
- Run the conversion script.
- """
- if len(sys.argv) < 2:
- print 'No action specified.'
- sys.exit()
- print 'Uncode conversion:'
- print 'Input file = ', sys.argv[1]
- print 'Output file = ', sys.argv[2]
- print 'Converting...'
- convert_file(sys.argv[1], sys.argv[2])
- print 'Done.'
=== modified file 'openlp/migration/migratesongs.py'
--- openlp/migration/migratesongs.py 2009-09-25 23:06:54 +0000
+++ openlp/migration/migratesongs.py 2009-10-18 21:10:22 +0000
@@ -170,12 +170,12 @@
else:
author = self.session.query(Author).get(bb[0])
song.authors.append(author)
- try:
- self.session.add(song)
- self.session.commit()
- except:
- self.session.rollback()
- print u'Errow thrown = ', sys.exc_info()[1]
+ try:
+ self.session.add(song)
+ self.session.commit()
+ except:
+ self.session.rollback()
+ print u'Error thrown = ', sys.exc_info()[1]
def _v1_9_0_cleanup(self, database):
self.display.sub_output(u'Update Internal Data ' + database)
=== modified file 'openlpcnv.pyw'
--- openlpcnv.pyw 2009-09-25 00:43:42 +0000
+++ openlpcnv.pyw 2009-10-18 21:10:22 +0000
@@ -26,17 +26,31 @@
import os
import logging
import time
+import subprocess
+import codecs
+import sys
+from datetime import date
+if os.name == u'nt':
+ import win32api
+ import win32con
+ from win32com.client import Dispatch
from openlp.migration.display import *
from openlp.migration.migratefiles import *
from openlp.migration.migratebibles import *
from openlp.migration.migratesongs import *
+###############################################################################
+# For Windows, requires SQLite ODBC Driver to be installed
+# (uses sqlite.exe and sqlite3.exe)
+# http://www.ch-werner.de/sqliteodbc/
+###############################################################################
+
logging.basicConfig(level=logging.DEBUG,
- format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
- datefmt='%m-%d %H:%M',
- filename='openlp-migration.log',
- filemode='w')
+ format=u'%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
+ datefmt=u'%m-%d %H:%M',
+ filename=u'openlp-migration.log',
+ filemode=u'w')
class Migration(object):
"""
@@ -62,15 +76,74 @@
"""
Move the log file to a new location.
"""
- fname = 'openlp-migration.log'
+ fname = u'openlp-migration.log'
c = os.path.splitext(fname)
b = (c[0]+'-'+ unicode(self.stime) + c[1])
- self.display.output(u'Logfile " +b + " generated')
+ self.display.output(u'Logfile ' + b + u' generated')
self.display.output(u'Migration Utility Finished ')
os.rename(fname, b)
-
-if __name__ == '__main__':
+ def convert_file(self, inname, outname):
+ """
+ Convert a file from another encoding into UTF-8.
+
+ ``inname``
+ The name of the file to be opened and converted.
+
+ ``outname``
+ The output file name.
+ """
+ infile = codecs.open(inname, u'r', encoding=u'CP1252')
+ writefile = codecs.open(outname, u'w', encoding=u'utf-8')
+ for line in infile:
+ writefile.write(line)
+ infile.close()
+ writefile.close()
+
+ def convert_sqlite2_to_3(self, olddb, newdb):
+ if os.name == u'nt':
+ hKey = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE, u'SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\SQLite ODBC Driver')
+ value, type = win32api.RegQueryValueEx (hKey, u'UninstallString')
+ sqlitepath, temp = os.path.split(value)
+ sqliteexe = os.path.join(sqlitepath, u'sqlite.exe')
+ else:
+ sqliteexe = u'sqlite'
+ cmd = u'%s "%s" .dump' % (sqliteexe, olddb)
+ if os.name == u'nt':
+ subprocess.call(cmd, stdout=open(u'./sqlite.dmp', u'w'))
+ else:
+ subprocess.call(cmd, stdout=open(u'./sqlite.dmp', u'w'), shell=True)
+ self.convert_file(u'sqlite.dmp', u'sqlite3.dmp')
+ if os.name == u'nt':
+ sqlite3exe = os.path.join(sqlitepath, u'sqlite3.exe')
+ else:
+ sqlite3exe = u'sqlite3'
+ if os.path.isfile(newdb):
+ saveddb = newdb + self.stime
+ os.rename(newdb, saveddb)
+ cmd = '%s "%s"' % (sqlite3exe, newdb)
+ if os.name == u'nt':
+ subprocess.call(cmd, stdin=open(u'sqlite3.dmp', u'r'))
+ else:
+ subprocess.call(cmd, stdin=open(u'sqlite3.dmp', u'r'), shell=True)
+ os.remove(u'sqlite.dmp')
+ os.remove(u'sqlite3.dmp')
+
+if __name__ == u'__main__':
mig = Migration()
+ config = PluginConfig(u'Songs')
+ newpath = config.get_data_path()
+ if os.name == u'nt':
+ if not os.path.isdir(newpath):
+ os.makedirs(newpath)
+ ALL_USERS_APPLICATION_DATA = 35
+ shell = Dispatch(u'Shell.Application')
+ folder = shell.Namespace(ALL_USERS_APPLICATION_DATA)
+ folderitem = folder.Self
+ olddb = os.path.join(folderitem.path, u'openlp.org', u'Data', u'songs.olp')
+ else:
+ olddb = os.path.join(newpath, u'songs.olp')
+ newdb = os.path.join(newpath, u'songs.sqlite')
+ mig.convert_sqlite2_to_3(olddb, newdb)
mig.process()
#mig.move_log_file()
=== removed file 'songcnv.sh'
--- songcnv.sh 2009-07-19 06:31:08 +0000
+++ songcnv.sh 1970-01-01 00:00:00 +0000
@@ -1,5 +0,0 @@
-/usr/bin/sqlite ~/.local/share/openlp/songs/songs.olp .dump > ~/.local/share/openlp/songs/songs.dmp
-./cnvdb.py ~/.local/share/openlp/songs/songs.dmp ~/.local/share/openlp/songs/songs.dmp2
-rm ~/.local/share/openlp/songs/songs.sqlite
-sqlite3 ~/.local/share/openlp/songs/songs.sqlite < ~/.local/share/openlp/songs/songs.dmp2
-./openlpcnv.pyw
Follow ups