← Back to team overview

openlp-core team mailing list archive

[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