GEPS008: Move fix_encoding function
svn: r19922
This commit is contained in:
parent
a072c989b2
commit
6f04233439
21
src/Utils.py
21
src/Utils.py
@ -56,27 +56,6 @@ def history_broken():
|
|||||||
global _history_brokenFlag
|
global _history_brokenFlag
|
||||||
_history_brokenFlag = 1
|
_history_brokenFlag = 1
|
||||||
|
|
||||||
def fix_encoding(value, errors='strict'):
|
|
||||||
# The errors argument specifies the response when the input string can't be
|
|
||||||
# converted according to the encoding's rules. Legal values for this
|
|
||||||
# argument are 'strict' (raise a UnicodeDecodeError exception), 'replace'
|
|
||||||
# (add U+FFFD, 'REPLACEMENT CHARACTER'), or 'ignore' (just leave the
|
|
||||||
# character out of the Unicode result).
|
|
||||||
if not isinstance(value, unicode):
|
|
||||||
try:
|
|
||||||
return unicode(value)
|
|
||||||
except:
|
|
||||||
try:
|
|
||||||
if mac():
|
|
||||||
codeset = locale.getlocale()[1]
|
|
||||||
else:
|
|
||||||
codeset = locale.getpreferredencoding()
|
|
||||||
except:
|
|
||||||
codeset = "UTF-8"
|
|
||||||
return unicode(value, codeset, errors)
|
|
||||||
else:
|
|
||||||
return value
|
|
||||||
|
|
||||||
def xml_lang():
|
def xml_lang():
|
||||||
loc = locale.getlocale()
|
loc = locale.getlocale()
|
||||||
if loc[0] is None:
|
if loc[0] is None:
|
||||||
|
@ -43,7 +43,7 @@ LOG = logging.getLogger(".gen.utils.file")
|
|||||||
# Gramps modules
|
# Gramps modules
|
||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
from gen.constfunc import win
|
from gen.constfunc import win, mac
|
||||||
from const import TEMP_DIR, USER_HOME
|
from const import TEMP_DIR, USER_HOME
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
@ -279,3 +279,24 @@ def search_for(name):
|
|||||||
if os.access(fname, os.X_OK) and not os.path.isdir(fname):
|
if os.access(fname, os.X_OK) and not os.path.isdir(fname):
|
||||||
return 1
|
return 1
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
def fix_encoding(value, errors='strict'):
|
||||||
|
# The errors argument specifies the response when the input string can't be
|
||||||
|
# converted according to the encoding's rules. Legal values for this
|
||||||
|
# argument are 'strict' (raise a UnicodeDecodeError exception), 'replace'
|
||||||
|
# (add U+FFFD, 'REPLACEMENT CHARACTER'), or 'ignore' (just leave the
|
||||||
|
# character out of the Unicode result).
|
||||||
|
if not isinstance(value, unicode):
|
||||||
|
try:
|
||||||
|
return unicode(value)
|
||||||
|
except:
|
||||||
|
try:
|
||||||
|
if mac():
|
||||||
|
codeset = locale.getlocale()[1]
|
||||||
|
else:
|
||||||
|
codeset = locale.getpreferredencoding()
|
||||||
|
except:
|
||||||
|
codeset = "UTF-8"
|
||||||
|
return unicode(value, codeset, errors)
|
||||||
|
else:
|
||||||
|
return value
|
||||||
|
@ -52,8 +52,8 @@ from gui.dbguielement import DbGUIElement
|
|||||||
from gui.selectors import SelectorFactory
|
from gui.selectors import SelectorFactory
|
||||||
import gen.lib
|
import gen.lib
|
||||||
from gen.db import DbTxn
|
from gen.db import DbTxn
|
||||||
import Utils
|
from gen.utils.file import (media_path_full, media_path, relative_path,
|
||||||
from gen.utils.file import media_path_full, media_path, relative_path
|
fix_encoding)
|
||||||
from gui.thumbnails import get_thumbnail_image
|
from gui.thumbnails import get_thumbnail_image
|
||||||
from gen.errors import WindowActiveError
|
from gen.errors import WindowActiveError
|
||||||
import gen.mime
|
import gen.mime
|
||||||
@ -493,10 +493,10 @@ class GalleryTab(ButtonTab, DbGUIElement):
|
|||||||
else:
|
else:
|
||||||
files = sel_data.get_uris()
|
files = sel_data.get_uris()
|
||||||
for file in files:
|
for file in files:
|
||||||
d = Utils.fix_encoding(file.replace('\0',' ').strip())
|
d = fix_encoding(file.replace('\0',' ').strip())
|
||||||
protocol, site, mfile, j, k, l = urlparse.urlparse(d)
|
protocol, site, mfile, j, k, l = urlparse.urlparse(d)
|
||||||
if protocol == "file":
|
if protocol == "file":
|
||||||
name = Utils.fix_encoding(mfile)
|
name = fix_encoding(mfile)
|
||||||
name = unicode(urllib.url2pathname(
|
name = unicode(urllib.url2pathname(
|
||||||
name.encode(sys.getfilesystemencoding())))
|
name.encode(sys.getfilesystemencoding())))
|
||||||
mime = gen.mime.get_type(name)
|
mime = gen.mime.get_type(name)
|
||||||
|
@ -65,13 +65,11 @@ import gtk
|
|||||||
import gen.lib
|
import gen.lib
|
||||||
from gen.db import DbTxn
|
from gen.db import DbTxn
|
||||||
from gen.config import config
|
from gen.config import config
|
||||||
import Utils
|
|
||||||
from gen.utils.id import create_id
|
from gen.utils.id import create_id
|
||||||
from gen.utils.name import family_name
|
from gen.utils.name import family_name
|
||||||
from gen.utils.unknown import make_unknown
|
from gen.utils.unknown import make_unknown
|
||||||
from gen.utils.file import (get_unicode_path_from_file_chooser,
|
from gen.utils.file import (media_path_full, find_file, fix_encoding,
|
||||||
media_path_full,
|
get_unicode_path_from_file_chooser)
|
||||||
find_file)
|
|
||||||
from gui.utils import ProgressMeter
|
from gui.utils import ProgressMeter
|
||||||
from gui.managedwindow import ManagedWindow
|
from gui.managedwindow import ManagedWindow
|
||||||
|
|
||||||
@ -338,8 +336,8 @@ class CheckIntegrity(object):
|
|||||||
data = self.db.media_map[handle]
|
data = self.db.media_map[handle]
|
||||||
if not isinstance(data[2], unicode) or not isinstance(data[4], unicode):
|
if not isinstance(data[2], unicode) or not isinstance(data[4], unicode):
|
||||||
obj = self.db.get_object_from_handle(handle)
|
obj = self.db.get_object_from_handle(handle)
|
||||||
obj.path = Utils.fix_encoding( obj.path, errors='ignore')
|
obj.path = fix_encoding( obj.path, errors='ignore')
|
||||||
obj.desc = Utils.fix_encoding( obj.desc, errors='ignore')
|
obj.desc = fix_encoding( obj.desc, errors='ignore')
|
||||||
self.db.commit_media_object(obj, self.trans)
|
self.db.commit_media_object(obj, self.trans)
|
||||||
if not isinstance(data[2], unicode):
|
if not isinstance(data[2], unicode):
|
||||||
LOG(' FAIL: encoding error on media object "%s"'
|
LOG(' FAIL: encoding error on media object "%s"'
|
||||||
|
@ -55,8 +55,8 @@ from gui.views.treemodels import MediaModel
|
|||||||
import const
|
import const
|
||||||
from gen.constfunc import win
|
from gen.constfunc import win
|
||||||
from gen.config import config
|
from gen.config import config
|
||||||
import Utils
|
from gen.utils.file import (media_path, relative_path, media_path_full,
|
||||||
from gen.utils.file import media_path, relative_path, media_path_full
|
fix_encoding)
|
||||||
from gen.utils.referent import get_media_referents
|
from gen.utils.referent import get_media_referents
|
||||||
from gui.views.bookmarks import MediaBookmarks
|
from gui.views.bookmarks import MediaBookmarks
|
||||||
import gen.mime
|
import gen.mime
|
||||||
@ -181,7 +181,7 @@ class MediaView(ListView):
|
|||||||
else:
|
else:
|
||||||
files = sel_data.get_uris()
|
files = sel_data.get_uris()
|
||||||
for file in files:
|
for file in files:
|
||||||
clean_string = Utils.fix_encoding(
|
clean_string = fix_encoding(
|
||||||
file.replace('\0',' ').replace("\r", " ").strip())
|
file.replace('\0',' ').replace("\r", " ").strip())
|
||||||
protocol, site, mfile, j, k, l = urlparse.urlparse(clean_string)
|
protocol, site, mfile, j, k, l = urlparse.urlparse(clean_string)
|
||||||
if protocol == "file":
|
if protocol == "file":
|
||||||
|
Loading…
Reference in New Issue
Block a user