forked from openlp/openlp
A few fixes after renaming some functions.
This commit is contained in:
parent
a523d127bd
commit
a976d6b59a
|
@ -106,7 +106,7 @@ class CSVBible(BibleDB):
|
||||||
self.wizard.incrementProgressBar(
|
self.wizard.incrementProgressBar(
|
||||||
u'Importing %s %s' % book.name)
|
u'Importing %s %s' % book.name)
|
||||||
self.commit()
|
self.commit()
|
||||||
self.add_verse(book.id, p[1], p[2], p3)
|
self.create_verse(book.id, p[1], p[2], p3)
|
||||||
Receiver.send_message(u'process_events')
|
Receiver.send_message(u'process_events')
|
||||||
self.commit()
|
self.commit()
|
||||||
except:
|
except:
|
||||||
|
@ -119,4 +119,5 @@ class CSVBible(BibleDB):
|
||||||
self.wizard.incrementProgressBar(u'Import canceled!')
|
self.wizard.incrementProgressBar(u'Import canceled!')
|
||||||
return False
|
return False
|
||||||
else:
|
else:
|
||||||
return success
|
return success
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import logging
|
import logging
|
||||||
|
import chardet
|
||||||
|
|
||||||
from sqlalchemy import or_
|
from sqlalchemy import or_
|
||||||
from PyQt4 import QtCore
|
from PyQt4 import QtCore
|
||||||
|
@ -84,13 +85,14 @@ class BibleDB():
|
||||||
self.metadata, self.session = init_models(db_url)
|
self.metadata, self.session = init_models(db_url)
|
||||||
self.metadata.create_all(checkfirst=True)
|
self.metadata.create_all(checkfirst=True)
|
||||||
|
|
||||||
def register(self):
|
def register(self, wizard):
|
||||||
"""
|
"""
|
||||||
This method basically just initialialises the database. It is called
|
This method basically just initialialises the database. It is called
|
||||||
from the Bible Manager when a Bible is imported. Descendant classes
|
from the Bible Manager when a Bible is imported. Descendant classes
|
||||||
may want to override this method to supply their own custom
|
may want to override this method to supply their own custom
|
||||||
initialisation as well.
|
initialisation as well.
|
||||||
"""
|
"""
|
||||||
|
self.wizard = wizard
|
||||||
self.create_tables()
|
self.create_tables()
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
|
@ -100,7 +102,7 @@ class BibleDB():
|
||||||
|
|
||||||
def create_tables(self):
|
def create_tables(self):
|
||||||
log.debug(u'createTables')
|
log.debug(u'createTables')
|
||||||
self.save_meta(u'dbversion', u'2')
|
self.create_meta(u'dbversion', u'2')
|
||||||
self.create_testament(u'Old Testament')
|
self.create_testament(u'Old Testament')
|
||||||
self.create_testament(u'New Testament')
|
self.create_testament(u'New Testament')
|
||||||
self.create_testament(u'Apocrypha')
|
self.create_testament(u'Apocrypha')
|
||||||
|
@ -111,7 +113,7 @@ class BibleDB():
|
||||||
self.commit()
|
self.commit()
|
||||||
|
|
||||||
def create_book(self, name, abbrev, testament=1):
|
def create_book(self, name, abbrev, testament=1):
|
||||||
log.debug(u'create_book %s,%s', bookname, bookabbrev)
|
log.debug(u'create_book %s,%s', name, abbrev)
|
||||||
book = Book.populate(name=name, abbreviation=abbrev,
|
book = Book.populate(name=name, abbreviation=abbrev,
|
||||||
testament_id=testament)
|
testament_id=testament)
|
||||||
self.session.add(book)
|
self.session.add(book)
|
||||||
|
@ -132,6 +134,9 @@ class BibleDB():
|
||||||
self.commit()
|
self.commit()
|
||||||
|
|
||||||
def create_verse(self, book_id, chapter, verse, text):
|
def create_verse(self, book_id, chapter, verse, text):
|
||||||
|
if not isinstance(text, unicode):
|
||||||
|
details = chardet.detect(text)
|
||||||
|
text = unicode(text, details[u'encoding'])
|
||||||
verse = Verse.populate(
|
verse = Verse.populate(
|
||||||
book_id=book_id,
|
book_id=book_id,
|
||||||
chapter=chapter,
|
chapter=chapter,
|
||||||
|
|
|
@ -232,4 +232,5 @@ class HTTPBible(BibleDB):
|
||||||
ev = BGExtract(self.proxyurl)
|
ev = BGExtract(self.proxyurl)
|
||||||
return ev.get_bible_chapter(self.bibleid, book, chapter)
|
return ev.get_bible_chapter(self.bibleid, book, chapter)
|
||||||
except:
|
except:
|
||||||
log.exception("Failed to get bible chapter")
|
log.exception("Failed to get bible chapter")
|
||||||
|
|
||||||
|
|
|
@ -61,13 +61,13 @@ class BibleFormat(object):
|
||||||
Return the appropriate imeplementation class.
|
Return the appropriate imeplementation class.
|
||||||
"""
|
"""
|
||||||
if id == BibleFormat.OSIS:
|
if id == BibleFormat.OSIS:
|
||||||
return BibleOSISImpl
|
return OSISBible
|
||||||
elif id == BibleFormat.CSV:
|
elif id == BibleFormat.CSV:
|
||||||
return BibleCSVImpl
|
return CSVBible
|
||||||
elif id == BibleFormat.OpenSong:
|
elif id == BibleFormat.OpenSong:
|
||||||
return BibleOpenSongImpl
|
return OpenSongBible
|
||||||
elif id == BibleFormat.WebDownload:
|
elif id == BibleFormat.WebDownload:
|
||||||
return BibleHTTPImpl
|
return HTTPBible
|
||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
@ -161,10 +161,13 @@ class BibleManager(object):
|
||||||
try:
|
try:
|
||||||
fbibles = open(filepath, u'r')
|
fbibles = open(filepath, u'r')
|
||||||
for line in fbibles:
|
for line in fbibles:
|
||||||
p = line.split(u',')
|
parts = line.split(u',')
|
||||||
self.book_abbreviations[p[0]] = p[1].replace(u'\n', '')
|
self.book_abbreviations[parts[0]] = parts[1].replace(u'\n', '')
|
||||||
self.book_testaments[p[0]] = p[2].replace(u'\n', '')
|
self.book_testaments[parts[0]] = parts[2].replace(u'\n', '')
|
||||||
self.book_chapters.append({u'book':p[0], u'total':p[3].replace(u'\n', '')})
|
self.book_chapters.append({
|
||||||
|
u'book': parts[0],
|
||||||
|
u'total': parts[3].replace(u'\n', '')
|
||||||
|
})
|
||||||
except:
|
except:
|
||||||
log.exception(u'Failed to load bible')
|
log.exception(u'Failed to load bible')
|
||||||
finally:
|
finally:
|
||||||
|
@ -192,10 +195,10 @@ class BibleManager(object):
|
||||||
Keyword arguments to send to the actualy importer class.
|
Keyword arguments to send to the actualy importer class.
|
||||||
"""
|
"""
|
||||||
class_ = BibleFormat.get_class(type)
|
class_ = BibleFormat.get_class(type)
|
||||||
kwargs[u'path'] = self.path
|
kwargs['path'] = self.path
|
||||||
kwargs[u'config'] = self.config
|
kwargs['config'] = self.config
|
||||||
importer = class_(**kwargs)
|
importer = class_(**kwargs)
|
||||||
name = importer.register()
|
name = importer.register(self.import_wizard)
|
||||||
self.db_cache[name] = importer
|
self.db_cache[name] = importer
|
||||||
return importer.do_import()
|
return importer.do_import()
|
||||||
|
|
||||||
|
@ -231,7 +234,7 @@ class BibleManager(object):
|
||||||
nbible = BibleDBImpl(self.bible_path, biblename, self.config)
|
nbible = BibleDBImpl(self.bible_path, biblename, self.config)
|
||||||
# Create Database
|
# Create Database
|
||||||
nbible.create_tables()
|
nbible.create_tables()
|
||||||
self.bible_db_cache[biblename] = nbible
|
self.db_cache[biblename] = nbible
|
||||||
nhttp = BibleHTTPImpl()
|
nhttp = BibleHTTPImpl()
|
||||||
nhttp.set_bible_source(biblesource)
|
nhttp.set_bible_source(biblesource)
|
||||||
self.bible_http_cache[biblename] = nhttp
|
self.bible_http_cache[biblename] = nhttp
|
||||||
|
@ -366,16 +369,16 @@ class BibleManager(object):
|
||||||
log.debug(u'get_book_verse_count %s,%s,%s', bible, book, chapter)
|
log.debug(u'get_book_verse_count %s,%s,%s', bible, book, chapter)
|
||||||
web, bible = self.is_bible_web(bible)
|
web, bible = self.is_bible_web(bible)
|
||||||
if web:
|
if web:
|
||||||
count = self.bible_db_cache[bible].get_max_bible_book_verses(
|
count = self.db_cache[bible].get_max_bible_book_verses(
|
||||||
book, chapter)
|
book, chapter)
|
||||||
if count == 0:
|
if count == 0:
|
||||||
# Make sure the first chapter has been downloaded
|
# Make sure the first chapter has been downloaded
|
||||||
self.get_verse_text(bible, book, chapter, chapter, 1, 1)
|
self.get_verse_text(bible, book, chapter, chapter, 1, 1)
|
||||||
count = self.bible_db_cache[bible].get_max_bible_book_verses(
|
count = self.db_cache[bible].get_max_bible_book_verses(
|
||||||
book, chapter)
|
book, chapter)
|
||||||
return count
|
return count
|
||||||
else:
|
else:
|
||||||
return self.bible_db_cache[bible].get_max_bible_book_verses(
|
return self.db_cache[bible].get_max_bible_book_verses(
|
||||||
book, chapter)
|
book, chapter)
|
||||||
|
|
||||||
def get_verses(self, bible, versetext):
|
def get_verses(self, bible, versetext):
|
||||||
|
@ -386,7 +389,7 @@ class BibleManager(object):
|
||||||
log.debug(u'get_verses_from_text %s,%s', bible, versetext)
|
log.debug(u'get_verses_from_text %s,%s', bible, versetext)
|
||||||
reflist = parse_reference(versetext)
|
reflist = parse_reference(versetext)
|
||||||
web, bible = self.is_bible_web(bible)
|
web, bible = self.is_bible_web(bible)
|
||||||
return self.bible_db_cache[bible].get_verses(reflist)
|
return self.db_cache[bible].get_verses(reflist)
|
||||||
|
|
||||||
def save_meta_data(self, bible, version, copyright, permissions):
|
def save_meta_data(self, bible, version, copyright, permissions):
|
||||||
"""
|
"""
|
||||||
|
@ -394,9 +397,9 @@ class BibleManager(object):
|
||||||
"""
|
"""
|
||||||
log.debug(u'save_meta data %s,%s, %s,%s',
|
log.debug(u'save_meta data %s,%s, %s,%s',
|
||||||
bible, version, copyright, permissions)
|
bible, version, copyright, permissions)
|
||||||
self.bible_db_cache[bible].save_meta(u'Version', version)
|
self.db_cache[bible].create_meta(u'Version', version)
|
||||||
self.bible_db_cache[bible].save_meta(u'Copyright', copyright)
|
self.db_cache[bible].create_meta(u'Copyright', copyright)
|
||||||
self.bible_db_cache[bible].save_meta(u'Permissions', permissions)
|
self.db_cache[bible].create_meta(u'Permissions', permissions)
|
||||||
|
|
||||||
def get_meta_data(self, bible, key):
|
def get_meta_data(self, bible, key):
|
||||||
"""
|
"""
|
||||||
|
@ -404,7 +407,7 @@ class BibleManager(object):
|
||||||
"""
|
"""
|
||||||
log.debug(u'get_meta %s,%s', bible, key)
|
log.debug(u'get_meta %s,%s', bible, key)
|
||||||
web, bible = self.is_bible_web(bible)
|
web, bible = self.is_bible_web(bible)
|
||||||
return self.bible_db_cache[bible].get_meta(key)
|
return self.db_cache[bible].get_meta(key)
|
||||||
|
|
||||||
def get_verse_text(self, bible, bookname, schapter, echapter, sverse,
|
def get_verse_text(self, bible, bookname, schapter, echapter, sverse,
|
||||||
everse=0):
|
everse=0):
|
||||||
|
@ -425,8 +428,8 @@ class BibleManager(object):
|
||||||
# check to see if book/chapter exists fow HTTP bibles and load cache
|
# check to see if book/chapter exists fow HTTP bibles and load cache
|
||||||
# if necessary
|
# if necessary
|
||||||
web, bible = self.is_bible_web(bible)
|
web, bible = self.is_bible_web(bible)
|
||||||
if self.bible_http_cache[bible]:
|
if self.http_cache[bible]:
|
||||||
book = self.bible_db_cache[bible].get_bible_book(bookname)
|
book = self.db_cache[bible].get_bible_book(bookname)
|
||||||
if book is None:
|
if book is None:
|
||||||
log.debug(u'get_verse_text : new book')
|
log.debug(u'get_verse_text : new book')
|
||||||
for chapter in range(schapter, echapter + 1):
|
for chapter in range(schapter, echapter + 1):
|
||||||
|
@ -434,7 +437,7 @@ class BibleManager(object):
|
||||||
unicode(self.media.trUtf8('Downloading %s: %s')) %
|
unicode(self.media.trUtf8('Downloading %s: %s')) %
|
||||||
(bookname, chapter))
|
(bookname, chapter))
|
||||||
search_results = \
|
search_results = \
|
||||||
self.bible_http_cache[bible].get_bible_chapter(
|
self.http_cache[bible].get_bible_chapter(
|
||||||
bible, bookname, chapter)
|
bible, bookname, chapter)
|
||||||
if search_results.has_verselist() :
|
if search_results.has_verselist() :
|
||||||
## We have found a book of the bible lets check to see
|
## We have found a book of the bible lets check to see
|
||||||
|
@ -443,33 +446,33 @@ class BibleManager(object):
|
||||||
## to request ac and get Acts back.
|
## to request ac and get Acts back.
|
||||||
bookname = search_results.get_book()
|
bookname = search_results.get_book()
|
||||||
# check to see if book/chapter exists
|
# check to see if book/chapter exists
|
||||||
book = self.bible_db_cache[bible].get_bible_book(
|
book = self.db_cache[bible].get_bible_book(
|
||||||
bookname)
|
bookname)
|
||||||
if book is None:
|
if book is None:
|
||||||
## Then create book, chapter and text
|
## Then create book, chapter and text
|
||||||
book = self.bible_db_cache[bible].create_book(
|
book = self.db_cache[bible].create_book(
|
||||||
bookname, self.book_abbreviations[bookname],
|
bookname, self.book_abbreviations[bookname],
|
||||||
self.book_testaments[bookname])
|
self.book_testaments[bookname])
|
||||||
log.debug(u'New http book %s, %s, %s',
|
log.debug(u'New http book %s, %s, %s',
|
||||||
book, book.id, book.name)
|
book, book.id, book.name)
|
||||||
self.bible_db_cache[bible].create_chapter(
|
self.db_cache[bible].create_chapter(
|
||||||
book.id, search_results.get_chapter(),
|
book.id, search_results.get_chapter(),
|
||||||
search_results.get_verselist())
|
search_results.get_verselist())
|
||||||
else:
|
else:
|
||||||
## Book exists check chapter and texts only.
|
## Book exists check chapter and texts only.
|
||||||
v = self.bible_db_cache[bible].get_bible_chapter(
|
v = self.db_cache[bible].get_bible_chapter(
|
||||||
book.id, chapter)
|
book.id, chapter)
|
||||||
if v is None:
|
if v is None:
|
||||||
self.media.setQuickMessage(
|
self.media.setQuickMessage(
|
||||||
unicode(self.media.trUtf8('%Downloading %s: %s'))\
|
unicode(self.media.trUtf8('%Downloading %s: %s'))\
|
||||||
% (bookname, chapter))
|
% (bookname, chapter))
|
||||||
self.bible_db_cache[bible].create_chapter(
|
self.db_cache[bible].create_chapter(
|
||||||
book.id, chapter,
|
book.id, chapter,
|
||||||
search_results.get_verselist())
|
search_results.get_verselist())
|
||||||
else:
|
else:
|
||||||
log.debug(u'get_verse_text : old book')
|
log.debug(u'get_verse_text : old book')
|
||||||
for chapter in range(schapter, echapter + 1):
|
for chapter in range(schapter, echapter + 1):
|
||||||
v = self.bible_db_cache[bible].get_bible_chapter(
|
v = self.db_cache[bible].get_bible_chapter(
|
||||||
book.id, chapter)
|
book.id, chapter)
|
||||||
if v is None:
|
if v is None:
|
||||||
try:
|
try:
|
||||||
|
@ -477,17 +480,17 @@ class BibleManager(object):
|
||||||
unicode(self.media.trUtf8('Downloading %s: %s'))
|
unicode(self.media.trUtf8('Downloading %s: %s'))
|
||||||
% (bookname, chapter))
|
% (bookname, chapter))
|
||||||
search_results = \
|
search_results = \
|
||||||
self.bible_http_cache[bible].get_bible_chapter(
|
self.http_cache[bible].get_bible_chapter(
|
||||||
bible, bookname, chapter)
|
bible, bookname, chapter)
|
||||||
if search_results.has_verselist():
|
if search_results.has_verselist():
|
||||||
self.bible_db_cache[bible].create_chapter(
|
self.db_cache[bible].create_chapter(
|
||||||
book.id, search_results.get_chapter(),
|
book.id, search_results.get_chapter(),
|
||||||
search_results.get_verselist())
|
search_results.get_verselist())
|
||||||
except:
|
except:
|
||||||
log.exception(u'Problem getting scripture online')
|
log.exception(u'Problem getting scripture online')
|
||||||
#Now get verses from database
|
#Now get verses from database
|
||||||
if schapter == echapter:
|
if schapter == echapter:
|
||||||
text = self.bible_db_cache[bible].get_bible_text(bookname,
|
text = self.db_cache[bible].get_bible_text(bookname,
|
||||||
schapter, sverse, everse)
|
schapter, sverse, everse)
|
||||||
else:
|
else:
|
||||||
for i in range (schapter, echapter + 1):
|
for i in range (schapter, echapter + 1):
|
||||||
|
@ -501,7 +504,7 @@ class BibleManager(object):
|
||||||
start = 1
|
start = 1
|
||||||
end = self.get_book_verse_count(bible, bookname, i)
|
end = self.get_book_verse_count(bible, bookname, i)
|
||||||
|
|
||||||
txt = self.bible_db_cache[bible].get_bible_text(
|
txt = self.db_cache[bible].get_bible_text(
|
||||||
bookname, i, start, end)
|
bookname, i, start, end)
|
||||||
text.extend(txt)
|
text.extend(txt)
|
||||||
return text
|
return text
|
||||||
|
|
|
@ -49,11 +49,11 @@ class OpenSongBible(BibleDB):
|
||||||
"""
|
"""
|
||||||
log.debug(__name__)
|
log.debug(__name__)
|
||||||
BibleDB.__init__(self, **kwargs)
|
BibleDB.__init__(self, **kwargs)
|
||||||
if u'filename' not in kwargs:
|
if 'filename' not in kwargs:
|
||||||
raise KeyError(u'You have to supply a file name to import from.')
|
raise KeyError(u'You have to supply a file name to import from.')
|
||||||
self.filename = kwargs[u'filename']
|
self.filename = kwargs['filename']
|
||||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
#QtCore.QObject.connect(Receiver.get_receiver(),
|
||||||
QtCore.SIGNAL(u'openlpstopimport'), self.stop_import)
|
# QtCore.SIGNAL(u'openlpstopimport'), self.stop_import)
|
||||||
|
|
||||||
def stop_import(self):
|
def stop_import(self):
|
||||||
"""
|
"""
|
||||||
|
@ -67,10 +67,12 @@ class OpenSongBible(BibleDB):
|
||||||
Loads a Bible from file.
|
Loads a Bible from file.
|
||||||
"""
|
"""
|
||||||
log.debug(u'Starting OpenSong import from "%s"' % self.filename)
|
log.debug(u'Starting OpenSong import from "%s"' % self.filename)
|
||||||
|
self.filename = unicode(self.filename, u'utf-8')
|
||||||
|
self.wizard.incrementProgressBar(u'Preparing for import...')
|
||||||
detect_file = None
|
detect_file = None
|
||||||
try:
|
try:
|
||||||
detect_file = open(self.filename, u'r')
|
detect_file = open(self.filename, u'r')
|
||||||
details = chardet.detect(detect_file.read(3000))
|
details = chardet.detect(detect_file.read())
|
||||||
except:
|
except:
|
||||||
log.exception(u'Failed to detect OpenSong file encoding')
|
log.exception(u'Failed to detect OpenSong file encoding')
|
||||||
return False
|
return False
|
||||||
|
@ -94,11 +96,16 @@ class OpenSongBible(BibleDB):
|
||||||
for verse in chapter.v:
|
for verse in chapter.v:
|
||||||
if self.stop_import:
|
if self.stop_import:
|
||||||
break
|
break
|
||||||
self.add_verse(db_book.id, chapter.attrib[u'n'],
|
self.create_verse(
|
||||||
verse.attrib[u'n'], verse.text)
|
db_book.id,
|
||||||
|
int(chapter.attrib[u'n']),
|
||||||
|
int(verse.attrib[u'n']),
|
||||||
|
verse.text
|
||||||
|
)
|
||||||
Receiver.send_message(u'process_events')
|
Receiver.send_message(u'process_events')
|
||||||
self.wizard.incrementProgressBar(u'Importing %s %s' % \
|
self.wizard.incrementProgressBar(
|
||||||
(dbbook.name, str(chapter.attrib[u'n'])))
|
QtCore.QString('Importing %s %s' % \
|
||||||
|
(db_book.name, chapter.attrib[u'n'])))
|
||||||
self.commit()
|
self.commit()
|
||||||
except:
|
except:
|
||||||
log.exception(u'Loading bible from OpenSong file failed')
|
log.exception(u'Loading bible from OpenSong file failed')
|
||||||
|
|
|
@ -160,7 +160,7 @@ class OSISBible(BibleDB):
|
||||||
.replace(u'</lg>', u'').replace(u'</q>', u'')\
|
.replace(u'</lg>', u'').replace(u'</q>', u'')\
|
||||||
.replace(u'</div>', u'')
|
.replace(u'</div>', u'')
|
||||||
verse_text = self.spaces_regex.sub(u' ', verse_text)
|
verse_text = self.spaces_regex.sub(u' ', verse_text)
|
||||||
self.add_verse(db_book.id, chapter, verse, verse_text)
|
self.create_verse(db_book.id, chapter, verse, verse_text)
|
||||||
Receiver.send_message(u'process_events')
|
Receiver.send_message(u'process_events')
|
||||||
self.commit()
|
self.commit()
|
||||||
self.wizard.incrementProgressBar(u'Finishing import...')
|
self.wizard.incrementProgressBar(u'Finishing import...')
|
||||||
|
@ -174,4 +174,5 @@ class OSISBible(BibleDB):
|
||||||
self.wizard.incrementProgressBar(u'Import canceled!')
|
self.wizard.incrementProgressBar(u'Import canceled!')
|
||||||
return False
|
return False
|
||||||
else:
|
else:
|
||||||
return success
|
return success
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue