← Back to team overview

openlp-core team mailing list archive

[Merge] lp:~m2j/openlp/smallfix into lp:openlp

 

m2j has proposed merging lp:~m2j/openlp/smallfix into lp:openlp.

Requested reviews:
  OpenLP Core (openlp-core)


locale aware song order and unicode capable song title search
-- 
https://code.launchpad.net/~m2j/openlp/smallfix/+merge/43234
Your team OpenLP Core is requested to review the proposed merge of lp:~m2j/openlp/smallfix into lp:openlp.
=== modified file 'openlp/plugins/songs/lib/mediaitem.py'
--- openlp/plugins/songs/lib/mediaitem.py	2010-12-08 19:21:59 +0000
+++ openlp/plugins/songs/lib/mediaitem.py	2010-12-09 15:56:54 +0000
@@ -25,6 +25,8 @@
 ###############################################################################
 
 import logging
+import locale
+import re
 
 from PyQt4 import QtCore, QtGui
 
@@ -61,6 +63,7 @@
         # which Song is required.
         self.remoteSong = -1
         self.editItem = None
+        self.whitespace = re.compile(r'\W+', re.UNICODE)
 
     def requiredIcons(self):
         MediaManagerItem.requiredIcons(self)
@@ -173,8 +176,8 @@
         if search_type == 0:
             log.debug(u'Titles Search')
             search_results = self.parent.manager.get_all_objects(Song,
-                Song.search_title.like(u'%' + search_keywords.lower() + u'%'),
-                Song.search_title.asc())
+                Song.search_title.like(u'%' + self.whitespace.sub(u' ',
+                search_keywords.lower()) + u'%'), Song.search_title.asc())
             self.displayResultsSong(search_results)
         elif search_type == 1:
             log.debug(u'Lyrics Search')
@@ -213,6 +216,7 @@
     def displayResultsSong(self, searchresults):
         log.debug(u'display results Song')
         self.listView.clear()
+        searchresults.sort(cmp=self.collateSongTitles)
         for song in searchresults:
             author_list = u''
             for author in song.authors:
@@ -437,3 +441,9 @@
             if editId != 0:
                 Receiver.send_message(u'service_item_update',
                     u'%s:%s' %(editId, uuid))
+
+    def collateSongTitles(self, song_1, song_2):
+        """
+        Locale aware collation of song titles
+        """
+        return locale.strcoll(unicode(song_1.title), unicode(song_2.title))

=== modified file 'openlp/plugins/songs/songsplugin.py'
--- openlp/plugins/songs/songsplugin.py	2010-11-18 17:46:47 +0000
+++ openlp/plugins/songs/songsplugin.py	2010-12-09 15:56:54 +0000
@@ -56,7 +56,7 @@
         self.manager = Manager(u'songs', init_schema)
         self.icon_path = u':/plugins/plugin_songs.png'
         self.icon = build_icon(self.icon_path)
-        self.whitespace = re.compile(r'\W+')
+        self.whitespace = re.compile(r'\W+', re.UNICODE)
 
     def getSettingsTab(self):
         visible_name = self.getString(StringContent.VisibleName)


Follow ups