diff --git a/openlp/core/lib/db.py b/openlp/core/lib/db.py index 972d849a3..7c4536ccf 100644 --- a/openlp/core/lib/db.py +++ b/openlp/core/lib/db.py @@ -246,3 +246,10 @@ class Manager(object): self.session.rollback() log.exception(u'Failed to delete %s records', object_class.__name__) return False + + def finalise(self): + """ + VACUUM the database on exit. + """ + engine = create_engine(self.db_url) + engine.execute("vacuum") diff --git a/openlp/plugins/alerts/alertsplugin.py b/openlp/plugins/alerts/alertsplugin.py index b48ff4efd..15b1ed6f9 100644 --- a/openlp/plugins/alerts/alertsplugin.py +++ b/openlp/plugins/alerts/alertsplugin.py @@ -117,3 +117,11 @@ class AlertsPlugin(Plugin): self.textStrings[StringContent.VisibleName] = { u'title': translate('AlertsPlugin', 'Alerts') } + + def finalise(self): + """ + Time to tidy up on exit + """ + log.info(u'Alerts Finalising') + self.manager.finalise() + Plugin.finalise(self) diff --git a/openlp/plugins/bibles/bibleplugin.py b/openlp/plugins/bibles/bibleplugin.py index 5dec63200..946b4ab93 100644 --- a/openlp/plugins/bibles/bibleplugin.py +++ b/openlp/plugins/bibles/bibleplugin.py @@ -133,42 +133,50 @@ class BiblePlugin(Plugin): ## Import Button ## self.textStrings[StringContent.Import] = { u'title': translate('BiblesPlugin', 'Import'), - u'tooltip': translate('BiblesPlugin', + u'tooltip': translate('BiblesPlugin', 'Import a Bible') } ## New Button ## self.textStrings[StringContent.New] = { u'title': translate('BiblesPlugin', 'Add'), - u'tooltip': translate('BiblesPlugin', + u'tooltip': translate('BiblesPlugin', 'Add a new Bible') } ## Edit Button ## self.textStrings[StringContent.Edit] = { u'title': translate('BiblesPlugin', 'Edit'), - u'tooltip': translate('BiblesPlugin', + u'tooltip': translate('BiblesPlugin', 'Edit the selected Bible') } ## Delete Button ## self.textStrings[StringContent.Delete] = { u'title': translate('BiblesPlugin', 'Delete'), - u'tooltip': translate('BiblesPlugin', + u'tooltip': translate('BiblesPlugin', 'Delete the selected Bible') } ## Preview ## self.textStrings[StringContent.Preview] = { u'title': translate('BiblesPlugin', 'Preview'), - u'tooltip': translate('BiblesPlugin', + u'tooltip': translate('BiblesPlugin', 'Preview the selected Bible') } ## Live Button ## self.textStrings[StringContent.Live] = { u'title': translate('BiblesPlugin', 'Live'), - u'tooltip': translate('BiblesPlugin', + u'tooltip': translate('BiblesPlugin', 'Send the selected Bible live') } ## Add to service Button ## self.textStrings[StringContent.Service] = { u'title': translate('BiblesPlugin', 'Service'), - u'tooltip': translate('BiblesPlugin', + u'tooltip': translate('BiblesPlugin', 'Add the selected Bible to the service') - } \ No newline at end of file + } + + def finalise(self): + """ + Time to tidy up on exit + """ + log.info(u'Bible Finalising') + self.manager.finalise() + Plugin.finalise(self) diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index 877331341..d5aa4d72b 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -310,3 +310,11 @@ class BibleManager(object): if bible == name: return True return False + + def finalise(self): + """ + Loop through the databases to VACUUM them. + """ + for bible in self.db_cache: + self.db_cache[bible].finalise + diff --git a/openlp/plugins/custom/customplugin.py b/openlp/plugins/custom/customplugin.py index 7e4b81b16..63bce3f81 100644 --- a/openlp/plugins/custom/customplugin.py +++ b/openlp/plugins/custom/customplugin.py @@ -49,8 +49,8 @@ class CustomPlugin(Plugin): def __init__(self, plugin_helpers): Plugin.__init__(self, u'Custom', u'1.9.3', plugin_helpers) self.weight = -5 - self.custommanager = Manager(u'custom', init_schema) - self.edit_custom_form = EditCustomForm(self.custommanager) + self.manager = Manager(u'custom', init_schema) + self.edit_custom_form = EditCustomForm(self.manager) self.icon_path = u':/plugins/plugin_custom.png' self.icon = build_icon(self.icon_path) @@ -115,48 +115,56 @@ class CustomPlugin(Plugin): ## Import Button ## self.textStrings[StringContent.Import] = { u'title': translate('CustomsPlugin', 'Import'), - u'tooltip': translate('CustomsPlugin', + u'tooltip': translate('CustomsPlugin', 'Import a Custom') } ## Load Button ## self.textStrings[StringContent.Load] = { u'title': translate('CustomsPlugin', 'Load'), - u'tooltip': translate('CustomsPlugin', + u'tooltip': translate('CustomsPlugin', 'Load a new Custom') } ## New Button ## self.textStrings[StringContent.New] = { u'title': translate('CustomsPlugin', 'Add'), - u'tooltip': translate('CustomsPlugin', + u'tooltip': translate('CustomsPlugin', 'Add a new Custom') } ## Edit Button ## self.textStrings[StringContent.Edit] = { u'title': translate('CustomsPlugin', 'Edit'), - u'tooltip': translate('CustomsPlugin', + u'tooltip': translate('CustomsPlugin', 'Edit the selected Custom') } ## Delete Button ## self.textStrings[StringContent.Delete] = { u'title': translate('CustomsPlugin', 'Delete'), - u'tooltip': translate('CustomsPlugin', + u'tooltip': translate('CustomsPlugin', 'Delete the selected Custom') } ## Preview ## self.textStrings[StringContent.Preview] = { u'title': translate('CustomsPlugin', 'Preview'), - u'tooltip': translate('CustomsPlugin', + u'tooltip': translate('CustomsPlugin', 'Preview the selected Custom') } ## Live Button ## self.textStrings[StringContent.Live] = { u'title': translate('CustomsPlugin', 'Live'), - u'tooltip': translate('CustomsPlugin', + u'tooltip': translate('CustomsPlugin', 'Send the selected Custom live') } ## Add to service Button ## self.textStrings[StringContent.Service] = { u'title': translate('CustomsPlugin', 'Service'), - u'tooltip': translate('CustomsPlugin', + u'tooltip': translate('CustomsPlugin', 'Add the selected Custom to the service') - } \ No newline at end of file + } + + def finalise(self): + """ + Time to tidy up on exit + """ + log.info(u'Custom Finalising') + self.manager.finalise() + Plugin.finalise(self) diff --git a/openlp/plugins/custom/forms/editcustomform.py b/openlp/plugins/custom/forms/editcustomform.py index 8ee4d2673..8e5312eac 100644 --- a/openlp/plugins/custom/forms/editcustomform.py +++ b/openlp/plugins/custom/forms/editcustomform.py @@ -41,7 +41,7 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): Class documentation goes here. """ log.info(u'Custom Editor loaded') - def __init__(self, custommanager, parent=None): + def __init__(self, manager, parent=None): """ Constructor """ @@ -74,7 +74,7 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'theme_update_list'), self.loadThemes) # Create other objects and forms. - self.custommanager = custommanager + self.manager = manager self.editSlideForm = EditCustomSlideForm(self) self.initialise() @@ -115,7 +115,7 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): self.customSlide = CustomSlide() self.initialise() if id != 0: - self.customSlide = self.custommanager.get_object(CustomSlide, id) + self.customSlide = self.manager.get_object(CustomSlide, id) self.titleEdit.setText(self.customSlide.title) self.creditEdit.setText(self.customSlide.credits) customXML = CustomXMLParser(self.customSlide.text) @@ -168,7 +168,7 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): u'utf-8') self.customSlide.theme_name = unicode(self.themeComboBox.currentText(), u'utf-8') - return self.custommanager.save_object(self.customSlide) + return self.manager.save_object(self.customSlide) def onUpButtonPressed(self): selectedRow = self.slideListView.currentRow() diff --git a/openlp/plugins/custom/lib/mediaitem.py b/openlp/plugins/custom/lib/mediaitem.py index dd26883e8..3fe8a9b0f 100644 --- a/openlp/plugins/custom/lib/mediaitem.py +++ b/openlp/plugins/custom/lib/mediaitem.py @@ -56,6 +56,7 @@ class CustomMediaItem(MediaManagerItem): # Holds information about whether the edit is remotly triggered and # which Custom is required. self.remoteCustom = -1 + self.manager = parent.manager def addEndHeaderBar(self): QtCore.QObject.connect(Receiver.get_receiver(), @@ -71,7 +72,7 @@ class CustomMediaItem(MediaManagerItem): MediaManagerItem.requiredIcons(self) def initialise(self): - self.loadCustomListView(self.parent.custommanager.get_all_objects( + self.loadCustomListView(self.manager.get_all_objects( CustomSlide, order_by_ref=CustomSlide.title)) #Called to redisplay the song list screen edith from a search #or from the exit of the Song edit dialog. If remote editing is active @@ -106,7 +107,7 @@ class CustomMediaItem(MediaManagerItem): type of display is required. """ fields = customid.split(u':') - valid = self.parent.custommanager.get_object(CustomSlide, fields[1]) + valid = self.manager.get_object(CustomSlide, fields[1]) if valid: self.remoteCustom = fields[1] self.remoteTriggered = fields[0] diff --git a/openlp/plugins/songs/songsplugin.py b/openlp/plugins/songs/songsplugin.py index 47ae72632..dea60cdc0 100644 --- a/openlp/plugins/songs/songsplugin.py +++ b/openlp/plugins/songs/songsplugin.py @@ -166,36 +166,44 @@ class SongsPlugin(Plugin): ## New Button ## self.textStrings[StringContent.New] = { u'title': translate('SongsPlugin', 'Add'), - u'tooltip': translate('SongsPlugin', + u'tooltip': translate('SongsPlugin', 'Add a new Song') } ## Edit Button ## self.textStrings[StringContent.Edit] = { u'title': translate('SongsPlugin', 'Edit'), - u'tooltip': translate('SongsPlugin', + u'tooltip': translate('SongsPlugin', 'Edit the selected Song') } ## Delete Button ## self.textStrings[StringContent.Delete] = { u'title': translate('SongsPlugin', 'Delete'), - u'tooltip': translate('SongsPlugin', + u'tooltip': translate('SongsPlugin', 'Delete the selected Song') } ## Preview ## self.textStrings[StringContent.Preview] = { u'title': translate('SongsPlugin', 'Preview'), - u'tooltip': translate('SongsPlugin', + u'tooltip': translate('SongsPlugin', 'Preview the selected Song') } ## Live Button ## self.textStrings[StringContent.Live] = { u'title': translate('SongsPlugin', 'Live'), - u'tooltip': translate('SongsPlugin', + u'tooltip': translate('SongsPlugin', 'Send the selected Song live') } ## Add to service Button ## self.textStrings[StringContent.Service] = { u'title': translate('SongsPlugin', 'Service'), - u'tooltip': translate('SongsPlugin', + u'tooltip': translate('SongsPlugin', 'Add the selected Song to the service') - } \ No newline at end of file + } + + def finalise(self): + """ + Time to tidy up on exit + """ + log.info(u'Songs Finalising') + self.manager.finalise() + Plugin.finalise(self) diff --git a/openlp/plugins/songusage/songusageplugin.py b/openlp/plugins/songusage/songusageplugin.py index c4eb55adc..8898721c6 100644 --- a/openlp/plugins/songusage/songusageplugin.py +++ b/openlp/plugins/songusage/songusageplugin.py @@ -175,4 +175,12 @@ class SongUsagePlugin(Plugin): ## Name for MediaDockManager, SettingsManager ## self.textStrings[StringContent.VisibleName] = { u'title': translate('SongUsagePlugin', 'SongUsage') - } \ No newline at end of file + } + + def finalise(self): + """ + Time to tidy up on exit + """ + log.info(u'SongUsage Finalising') + self.manager.finalise() + Plugin.finalise(self)