SaveAs lite validation

This commit is contained in:
Tim Bentley 2012-11-01 16:36:45 +00:00
parent 1145d661a5
commit b01fd0b293
1 changed files with 16 additions and 12 deletions

View File

@ -630,7 +630,6 @@ class ServiceManager(QtGui.QWidget):
self.mainwindow.serviceManagerSettingsSection, self.mainwindow.serviceManagerSettingsSection,
path) path)
service = [] service = []
total_size = 0
Receiver.send_message(u'cursor_busy') Receiver.send_message(u'cursor_busy')
# Number of items + 1 to zip it # Number of items + 1 to zip it
self.mainwindow.displayProgressBar(len(self.serviceItems) + 1) self.mainwindow.displayProgressBar(len(self.serviceItems) + 1)
@ -638,18 +637,16 @@ class ServiceManager(QtGui.QWidget):
self.mainwindow.incrementProgressBar() self.mainwindow.incrementProgressBar()
service_item = item[u'service_item']. \ service_item = item[u'service_item']. \
get_service_repr(self._saveLite) get_service_repr(self._saveLite)
#@todo check for file item on save.
service.append({u'serviceitem': service_item}) service.append({u'serviceitem': service_item})
self.mainwindow.incrementProgressBar()
service_content = cPickle.dumps(service) service_content = cPickle.dumps(service)
# Usual Zip file cannot exceed 2GiB, file with Zip64 cannot be
# extracted using unzip in UNIX.
allow_zip_64 = (total_size > 2147483648 + len(service_content))
log.debug(u'ServiceManager.saveFile - allowZip64 is %s' % allow_zip_64)
zip = None zip = None
success = True success = True
self.mainwindow.incrementProgressBar() self.mainwindow.incrementProgressBar()
try: try:
zip = zipfile.ZipFile(temp_file_name, 'w', zipfile.ZIP_STORED, zip = zipfile.ZipFile(temp_file_name, 'w', zipfile.ZIP_STORED,
allow_zip_64) True)
# First we add service contents. # First we add service contents.
zip.writestr(service_file_name.encode(u'utf-8'), service_content) zip.writestr(service_file_name.encode(u'utf-8'), service_content)
except IOError: except IOError:
@ -712,11 +709,17 @@ class ServiceManager(QtGui.QWidget):
directory = unicode(SettingsManager.get_last_dir( directory = unicode(SettingsManager.get_last_dir(
self.mainwindow.serviceManagerSettingsSection)) self.mainwindow.serviceManagerSettingsSection))
path = os.path.join(directory, default_filename) path = os.path.join(directory, default_filename)
fileName = unicode(QtGui.QFileDialog.getSaveFileName(self.mainwindow, if self._fileName.endswith(u'oszl'):
UiStrings().SaveService, path, fileName = unicode(QtGui.QFileDialog.getSaveFileName(
translate('OpenLP.ServiceManager', self.mainwindow, UiStrings().SaveService, path,
'OpenLP Service Files (*.osz);;' translate('OpenLP.ServiceManager',
'OpenLP Service Files - lite (*.oszl)'))) 'OpenLP Service Files (*.osz);;'
'OpenLP Service Files - lite (*.oszl)')))
else:
fileName = unicode(QtGui.QFileDialog.getSaveFileName(
self.mainwindow, UiStrings().SaveService, path,
translate('OpenLP.ServiceManager',
'OpenLP Service Files (*.osz);;')))
if not fileName: if not fileName:
return False return False
if os.path.splitext(fileName)[1] == u'': if os.path.splitext(fileName)[1] == u'':
@ -733,7 +736,6 @@ class ServiceManager(QtGui.QWidget):
""" """
if not self.fileName(): if not self.fileName():
return self.saveFileAs() return self.saveFileAs()
print "decideSaveMethod",self._saveLite
if self._saveLite: if self._saveLite:
return self.saveLocalFile() return self.saveLocalFile()
else: else:
@ -1214,10 +1216,12 @@ class ServiceManager(QtGui.QWidget):
Validates the service item and if the suffix matches an accepted Validates the service item and if the suffix matches an accepted
one it allows the item to be displayed. one it allows the item to be displayed.
""" """
#@todo check file items exist
if serviceItem.is_command(): if serviceItem.is_command():
type = serviceItem._raw_frames[0][u'title'].split(u'.')[-1] type = serviceItem._raw_frames[0][u'title'].split(u'.')[-1]
if type.lower() not in self.suffixes: if type.lower() not in self.suffixes:
serviceItem.is_valid = False serviceItem.is_valid = False
#@todo check file items exist
def cleanUp(self): def cleanUp(self):
""" """