← Back to team overview

openlp-core team mailing list archive

[Merge] lp:~smpettit/openlp/import-settings into lp:openlp

 

Stevan Pettit has proposed merging lp:~smpettit/openlp/import-settings into lp:openlp.

Requested reviews:
  Raoul Snyman (raoul-snyman)
  Tim Bentley (trb143)
Related bugs:
  Bug #838831 in OpenLP: "Import/Export Settings not working correctly for "shortcuts""
  https://bugs.launchpad.net/openlp/+bug/838831

For more details, see:
https://code.launchpad.net/~smpettit/openlp/import-settings/+merge/74095

Bug #838831

Fixed problem with "shortcuts" section causing "The file you selected does appear to be a valid OpenLP...." error to be reported.

Added code to remove "@Invalid()" entries in the export file.

Changed all local variable names.

Changed string search.

Cleaned up some code.  Changed some local variable names to better reflect file types.
-- 
https://code.launchpad.net/~smpettit/openlp/import-settings/+merge/74095
Your team OpenLP Core is subscribed to branch lp:openlp.
=== modified file 'openlp/core/ui/mainwindow.py'
--- openlp/core/ui/mainwindow.py	2011-08-29 16:54:09 +0000
+++ openlp/core/ui/mainwindow.py	2011-09-05 13:11:51 +0000
@@ -540,6 +540,7 @@
         self.uiSettingsSection = u'user interface'
         self.generalSettingsSection = u'general'
         self.advancedlSettingsSection = u'advanced'
+        self.shortcutsSettingsSection = u'shortcuts'
         self.servicemanagerSettingsSection = u'servicemanager'
         self.songsSettingsSection = u'songs'
         self.themesSettingsSection = u'themes'
@@ -913,42 +914,43 @@
             QtGui.QMessageBox.No)
         if answer == QtGui.QMessageBox.No:
             return
-        importFileName = unicode(QtGui.QFileDialog.getOpenFileName(self,
+        import_file_name = unicode(QtGui.QFileDialog.getOpenFileName(self,
                 translate('OpenLP.MainWindow', 'Open File'),
                 '',
                 translate('OpenLP.MainWindow',
                 'OpenLP Export Settings Files (*.conf)')))
-        if not importFileName:
+        if not import_file_name:
             return
-        settingSections = []
+        setting_sections = []
         # Add main sections.
-        settingSections.extend([self.generalSettingsSection])
-        settingSections.extend([self.advancedlSettingsSection])
-        settingSections.extend([self.uiSettingsSection])
-        settingSections.extend([self.servicemanagerSettingsSection])
-        settingSections.extend([self.themesSettingsSection])
-        settingSections.extend([self.displayTagsSection])
-        settingSections.extend([self.headerSection])
+        setting_sections.extend([self.generalSettingsSection])
+        setting_sections.extend([self.advancedlSettingsSection])
+        setting_sections.extend([self.uiSettingsSection])
+        setting_sections.extend([self.shortcutsSettingsSection])
+        setting_sections.extend([self.servicemanagerSettingsSection])
+        setting_sections.extend([self.themesSettingsSection])
+        setting_sections.extend([self.displayTagsSection])
+        setting_sections.extend([self.headerSection])
         # Add plugin sections.
         for plugin in self.pluginManager.plugins:
-            settingSections.extend([plugin.name])
+            setting_sections.extend([plugin.name])
         settings = QtCore.QSettings()
-        importSettings = QtCore.QSettings(importFileName,
+        import_settings = QtCore.QSettings(import_file_name,
             QtCore.QSettings.IniFormat)
-        importKeys = importSettings.allKeys()
-        for sectionKey in importKeys:
+        import_keys = import_settings.allKeys()
+        for section_key in import_keys:
             # We need to handle the really bad files.
             try:
-                section, key = sectionKey.split(u'/')
+                section, key = section_key.split(u'/')
             except ValueError:
                 section = u'unknown'
                 key = u''
             # Switch General back to lowercase.
             if section == u'General':
                 section = u'general'
-            sectionKey = section + "/" + key
+                section_key = section + "/" + key
             # Make sure it's a valid section for us.
-            if not section in settingSections:
+            if not section in setting_sections:
                 QtGui.QMessageBox.critical(self,
                     translate('OpenLP.MainWindow', 'Import settings'),
                     translate('OpenLP.MainWindow',
@@ -961,13 +963,13 @@
                     QtGui.QMessageBox.Ok))
                 return
         # We have a good file, import it.
-        for sectionKey in importKeys:
-            value = importSettings.value(sectionKey)
-            settings.setValue(u'%s' % (sectionKey) ,
+        for section_key in import_keys:
+            value = import_settings.value(section_key)
+            settings.setValue(u'%s' % (section_key) ,
                 QtCore.QVariant(value))
         now = datetime.now()
         settings.beginGroup(self.headerSection)
-        settings.setValue( u'file_imported' , QtCore.QVariant(importFileName))
+        settings.setValue( u'file_imported' , QtCore.QVariant(import_file_name))
         settings.setValue(u'file_date_imported',
             now.strftime("%Y-%m-%d %H:%M"))
         settings.endGroup()
@@ -986,78 +988,79 @@
         self.cleanUp()
         QtCore.QCoreApplication.exit()
 
-    def onSettingsExportItemClicked(self, exportFileName=None):
-        """
-        Export settings to an INI file
-        """
-        if not exportFileName:
-            exportFileName = unicode(QtGui.QFileDialog.getSaveFileName(self,
-                translate('OpenLP.MainWindow', 'Export Settings File'), '',
-                translate('OpenLP.MainWindow',
-                    'OpenLP Export Settings File (*.conf)')))
-        if not exportFileName:
+    def onSettingsExportItemClicked(self):
+        """
+        Export settings to a .conf file in INI format
+        """
+        export_file_name = unicode(QtGui.QFileDialog.getSaveFileName(self,
+            translate('OpenLP.MainWindow', 'Export Settings File'), '',
+            translate('OpenLP.MainWindow',
+                'OpenLP Export Settings File (*.conf)')))
+        if not export_file_name:
             return
-        # Make sure it's an .ini file.
-        if not exportFileName.endswith(u'conf'):
-            exportFileName = exportFileName + u'.conf'
+        # Make sure it's a .conf file.
+        if not export_file_name.endswith(u'conf'):
+            export_file_name = export_file_name + u'.conf'
         temp_file = os.path.join(unicode(gettempdir()),
-            u'openlp', u'exportIni.tmp')
+            u'openlp', u'exportConf.tmp')
         self.saveSettings()
-        settingSections = []
+        setting_sections = []
         # Add main sections.
-        settingSections.extend([self.generalSettingsSection])
-        settingSections.extend([self.advancedlSettingsSection])
-        settingSections.extend([self.uiSettingsSection])
-        settingSections.extend([self.servicemanagerSettingsSection])
-        settingSections.extend([self.themesSettingsSection])
-        settingSections.extend([self.displayTagsSection])
+        setting_sections.extend([self.generalSettingsSection])
+        setting_sections.extend([self.advancedlSettingsSection])
+        setting_sections.extend([self.uiSettingsSection])
+        setting_sections.extend([self.shortcutsSettingsSection])
+        setting_sections.extend([self.servicemanagerSettingsSection])
+        setting_sections.extend([self.themesSettingsSection])
+        setting_sections.extend([self.displayTagsSection])
         # Add plugin sections.
         for plugin in self.pluginManager.plugins:
-            settingSections.extend([plugin.name])
+            setting_sections.extend([plugin.name])
         # Delete old files if found.
         if os.path.exists(temp_file):
             os.remove(temp_file)
-        if os.path.exists(exportFileName):
-            os.remove(exportFileName)
+        if os.path.exists(export_file_name):
+            os.remove(export_file_name)
         settings = QtCore.QSettings()
         settings.remove(self.headerSection)
         # Get the settings.
         keys = settings.allKeys()
-        exportSettings = QtCore.QSettings(temp_file,
+        export_settings = QtCore.QSettings(temp_file,
             QtCore.QSettings.IniFormat)
         # Add a header section.
-        # This is to insure it's our ini file for import.
+        # This is to insure it's our conf file for import.
         now = datetime.now()
-        applicationVersion = get_application_version()
+        application_version = get_application_version()
         # Write INI format using Qsettings.
         # Write our header.
-        exportSettings.beginGroup(self.headerSection)
-        exportSettings.setValue(u'Make_Changes', u'At_Own_RISK')
-        exportSettings.setValue(u'type', u'OpenLP_settings_export')
-        exportSettings.setValue(u'file_date_created',
+        export_settings.beginGroup(self.headerSection)
+        export_settings.setValue(u'Make_Changes', u'At_Own_RISK')
+        export_settings.setValue(u'type', u'OpenLP_settings_export')
+        export_settings.setValue(u'file_date_created',
             now.strftime("%Y-%m-%d %H:%M"))
-        exportSettings.setValue(u'version', applicationVersion[u'full'])
-        exportSettings.endGroup()
+        export_settings.setValue(u'version', application_version[u'full'])
+        export_settings.endGroup()
         # Write all the sections and keys.
-        for sectionKey in keys:
-            section, key = sectionKey.split(u'/')
-            keyValue = settings.value(sectionKey)
-            sectionKey = section + u"/" + key
+        for section_key in keys:
+            section, key = section_key.split(u'/')
+            key_value = settings.value(section_key)
             # Change the service section to servicemanager.
             if section == u'service':
-                sectionKey = u'servicemanager/' + key
-            exportSettings.setValue(sectionKey, keyValue)
-        exportSettings.sync()
-        # Temp INI file has been written.  Blanks in keys are now '%20'.
-        # Read the  temp file and output the user's INI file with blanks to
+                section_key = u'servicemanager/' + key
+            export_settings.setValue(section_key, key_value)
+        export_settings.sync()
+        # Temp CONF file has been written.  Blanks in keys are now '%20'.
+        # Read the  temp file and output the user's CONF file with blanks to
         # make it more readable.
-        tempIni = open(temp_file, u'r')
-        exportIni = open(exportFileName,  u'w')
-        for fileRecord in tempIni:
-            fileRecord = fileRecord.replace(u'%20',  u' ')
-            exportIni.write(fileRecord)
-        tempIni.close()
-        exportIni.close()
+        temp_conf = open(temp_file, u'r')
+        export_conf = open(export_file_name,  u'w')
+        for file_record in temp_conf:
+            # Get rid of any invalid entries.
+            if file_record.find(u'@Invalid()') == -1:
+                file_record = file_record.replace(u'%20',  u' ')
+                export_conf.write(file_record)
+        temp_conf.close()
+        export_conf.close()
         os.remove(temp_file)
         return
 


Follow ups