Fix bug #1216044: Lyrics were being deleted when saving songs.

bzr-revno: 2166
Fixes: https://launchpad.net/bugs/1216044
This commit is contained in:
Tim Bentley 2013-08-24 02:07:23 +02:00 committed by Raoul Snyman
commit 81cd369bfe

View File

@ -78,16 +78,32 @@ log = logging.getLogger(__name__)
NAMESPACE = u'http://openlyrics.info/namespace/2009/song' NAMESPACE = u'http://openlyrics.info/namespace/2009/song'
NSMAP = '{' + NAMESPACE + '}' + '%s' NSMAP = '{' + NAMESPACE + '}' + '%s'
def valid_XML_char_ordinal(char):
"""
Undertake the filter test.
``char``
The individual character to be checked.
"""
return (
0x20 <= char <= 0xD7FF
or char in (0x9, 0xA, 0xD)
or 0xE000 <= char <= 0xFFFD
or 0x10000 <= char <= 0x10FFFF
)
def clean_xml_string(xml): def clean_xml_string(xml):
""" """
Filter out invalid characters in xml Filter out invalid characters in xml
Source <http://stackoverflow.com/questions/8733233/filtering-out-certain-bytes-in-python> Source <http://stackoverflow.com/questions/8733233/filtering-out-certain-bytes-in-python>
``xml``
The actual text to be checked.
""" """
return ''.join(char for char in xml if return ''.join(char for char in xml if valid_XML_char_ordinal(ord(char)))
0x20 <= char <= 0xD7FF
or char in (0x9, 0xA, 0xD)
or 0xE000 <= char <= 0xFFFD
or 0x10000 <= char <= 0x10FFFF)
class SongXML(object): class SongXML(object):