This seems to fix

819271, web NIV download from Bibleserver crash.
No crash (257) and performance jump and reduced memory usage on loading services with huge files.
Fixed filename comparison on drag and drop.

bzr-revno: 1734
This commit is contained in:
Mattias Põldaru 2011-08-30 19:06:45 +01:00 committed by Tim Bentley
commit af10011c0c
7 changed files with 23 additions and 18 deletions

View File

@ -377,7 +377,7 @@ class MediaManagerItem(QtGui.QWidget):
""" """
names = [] names = []
for count in range(0, self.listView.count()): for count in range(0, self.listView.count()):
names.append(self.listView.item(count).text()) names.append(unicode(self.listView.item(count).text()))
newFiles = [] newFiles = []
duplicatesFound = False duplicatesFound = False
for file in files: for file in files:
@ -396,7 +396,7 @@ class MediaManagerItem(QtGui.QWidget):
critical_error_message_box( critical_error_message_box(
UiStrings().Duplicate, UiStrings().Duplicate,
unicode(translate('OpenLP.MediaManagerItem', unicode(translate('OpenLP.MediaManagerItem',
'Duplicate files found on import and ignored.'))) 'Duplicate files were found on import and were ignored.')))
def contextMenu(self, point): def contextMenu(self, point):
item = self.listView.itemAt(point) item = self.listView.itemAt(point)

View File

@ -586,8 +586,8 @@ class ServiceManager(QtGui.QWidget):
fileTo = None fileTo = None
try: try:
zip = zipfile.ZipFile(fileName) zip = zipfile.ZipFile(fileName)
for file in zip.namelist(): for zipinfo in zip.infolist():
ucsfile = file_is_unicode(file) ucsfile = file_is_unicode(zipinfo.filename)
if not ucsfile: if not ucsfile:
critical_error_message_box( critical_error_message_box(
message=translate('OpenLP.ServiceManager', message=translate('OpenLP.ServiceManager',
@ -595,14 +595,11 @@ class ServiceManager(QtGui.QWidget):
'The content encoding is not UTF-8.')) 'The content encoding is not UTF-8.'))
continue continue
osfile = unicode(QtCore.QDir.toNativeSeparators(ucsfile)) osfile = unicode(QtCore.QDir.toNativeSeparators(ucsfile))
filePath = os.path.join(self.servicePath, filename_only = os.path.split(osfile)[1]
os.path.split(osfile)[1]) zipinfo.filename = filename_only
fileTo = open(filePath, u'wb') zip.extract(zipinfo, self.servicePath)
fileTo.write(zip.read(file)) if filename_only.endswith(u'osd'):
fileTo.flush() p_file = os.path.join(self.servicePath, filename_only)
fileTo.close()
if filePath.endswith(u'osd'):
p_file = filePath
if 'p_file' in locals(): if 'p_file' in locals():
Receiver.send_message(u'cursor_busy') Receiver.send_message(u'cursor_busy')
fileTo = open(p_file, u'r') fileTo = open(p_file, u'r')

View File

@ -218,7 +218,7 @@ class BSExtract(object):
send_error_message(u'parse') send_error_message(u'parse')
return None return None
content = content.find(u'div').findAll(u'div') content = content.find(u'div').findAll(u'div')
verse_number = re.compile(r'v(\d{1,2})(\d{3})(\d{3}) verse') verse_number = re.compile(r'v(\d{1,2})(\d{3})(\d{3}) verse.*')
verses = {} verses = {}
for verse in content: for verse in content:
Receiver.send_message(u'openlp_process_events') Receiver.send_message(u'openlp_process_events')

View File

@ -184,10 +184,11 @@ class VerseType(object):
verse_index = VerseType.from_translated_string(verse_name) verse_index = VerseType.from_translated_string(verse_name)
if verse_index is None: if verse_index is None:
verse_index = VerseType.from_string(verse_name) verse_index = VerseType.from_string(verse_name)
if verse_index is None: elif len(verse_name) == 1:
verse_index = VerseType.from_translated_tag(verse_name) if verse_index is None:
if verse_index is None: verse_index = VerseType.from_translated_tag(verse_name)
verse_index = VerseType.from_tag(verse_name) if verse_index is None:
verse_index = VerseType.from_tag(verse_name)
return verse_index return verse_index
def retrieve_windows_encoding(recommendation=None): def retrieve_windows_encoding(recommendation=None):

View File

@ -190,7 +190,10 @@ class OpenSongImport(SongImport):
# the verse tag # the verse tag
verse_tag = content verse_tag = content
verse_num = u'1' verse_num = u'1'
verse_index = VerseType.from_loose_input(verse_tag) if len(verse_tag) == 0:
verse_index = 0
else:
verse_index = VerseType.from_loose_input(verse_tag)
verse_tag = VerseType.Tags[verse_index] verse_tag = VerseType.Tags[verse_index]
inst = 1 inst = 1
if [verse_tag, verse_num, inst] in our_verse_order \ if [verse_tag, verse_num, inst] in our_verse_order \

View File

@ -103,6 +103,8 @@ class SongShowPlusImport(SongImport):
return return
self.import_wizard.progressBar.setMaximum(len(self.import_source)) self.import_wizard.progressBar.setMaximum(len(self.import_source))
for file in self.import_source: for file in self.import_source:
if self.stop_import_flag:
return
self.sspVerseOrderList = [] self.sspVerseOrderList = []
otherCount = 0 otherCount = 0
otherList = {} otherList = {}

View File

@ -105,6 +105,8 @@ class WowImport(SongImport):
if isinstance(self.import_source, list): if isinstance(self.import_source, list):
self.import_wizard.progressBar.setMaximum(len(self.import_source)) self.import_wizard.progressBar.setMaximum(len(self.import_source))
for file in self.import_source: for file in self.import_source:
if self.stop_import_flag:
return
file_name = os.path.split(file)[1] file_name = os.path.split(file)[1]
# Get the song title # Get the song title
self.title = file_name.rpartition(u'.')[0] self.title = file_name.rpartition(u'.')[0]