From a030c202100595b56ca50acceec80f2d7e468d2b Mon Sep 17 00:00:00 2001 From: John Ralls Date: Sat, 15 Mar 2014 14:32:14 -0700 Subject: [PATCH] 7519: GRAMPs unable to handle ... Path with accented characters This replaces commit 8cbb3ef014d6dd0d91c2eafba298bdc41ead750b with removing the incorrect encoding of paths with the system filesystem encoding. Python is mostly smart enough to do that itself. Thanks to Paul Franklin and Josip Pisoj for their help with sorting this out. --- gramps/cli/clidbman.py | 2 -- gramps/gen/plug/docgen/graphdoc.py | 8 ++------ gramps/gen/utils/configmanager.py | 20 ++++---------------- gramps/gui/viewmanager.py | 2 -- 4 files changed, 6 insertions(+), 26 deletions(-) diff --git a/gramps/cli/clidbman.py b/gramps/cli/clidbman.py index 6ac6a5b2d..28ee0594b 100644 --- a/gramps/cli/clidbman.py +++ b/gramps/cli/clidbman.py @@ -480,8 +480,6 @@ def find_next_db_dir(): while True: base = "%x" % int(time.time()) dbdir = os.path.expanduser(config.get('behavior.database-path')) - if sys.version_info[0] < 3: - dbdir = dbdir.encode(glocale.getfilesystemencoding()) new_path = os.path.join(dbdir, base) if not os.path.isdir(new_path): break diff --git a/gramps/gen/plug/docgen/graphdoc.py b/gramps/gen/plug/docgen/graphdoc.py index c81255647..f14543c1b 100644 --- a/gramps/gen/plug/docgen/graphdoc.py +++ b/gramps/gen/plug/docgen/graphdoc.py @@ -936,12 +936,8 @@ class GVPdfGvDoc(GVDocBase): dotfile = os.fdopen(handle, "wb") dotfile.write(self._dot.getvalue()) dotfile.close() - # Convert filename to str using file system encoding. - if sys.version_info[0] < 3: - fname = self._filename.encode(glocale.getfilesystemencoding()) - else: - fname = self._filename - + fname = self._filename + # Generate the PDF file. os.system( 'dot -Tpdf -o"%s" "%s"' % (fname, tmp_dot) ) diff --git a/gramps/gen/utils/configmanager.py b/gramps/gen/utils/configmanager.py index 4296a242f..b81874e16 100644 --- a/gramps/gen/utils/configmanager.py +++ b/gramps/gen/utils/configmanager.py @@ -50,11 +50,7 @@ _ = glocale.translation.gettext def safe_eval(exp): # restrict eval to empty environment - try: - return eval(exp, {}) - except SyntaxError: - logging.warning ("Invalid command string: %s", exp) - return exp + return eval(exp, {}) ##try: ## from ast import literal_eval as safe_eval @@ -372,17 +368,9 @@ class ConfigManager(object): default = "" if isinstance(value, int): value = int(value) - # repr() in Py2 effectively runs "encode(val, - # ascii, backslashreplace)" on its argument, - # and there's no way to reconstruct the - # string, so we special-case handling writing - # to ensure the unicode is preserved. - if isinstance(value, str) or isinstance(value, unicode): - key_file.write(("%s%s=u'%s'\n") % (default, key, - value)) - else: - key_file.write(("%s%s=%s\n")% (default, key, - repr(value))) + key_file.write(("%s%s=%s\n")% (default, + key, + repr(value))) key_file.write("\n") key_file.close() # else, no filename given; nothing to save so do nothing quietly diff --git a/gramps/gui/viewmanager.py b/gramps/gui/viewmanager.py index 0b5f04fe3..2905ca8c4 100644 --- a/gramps/gui/viewmanager.py +++ b/gramps/gui/viewmanager.py @@ -1100,8 +1100,6 @@ class ViewManager(CLIManager): value = dialog.run() if value: (filename, title) = value - if sys.version_info[0] < 3: - filename = filename.encode(glocale.getfilesystemencoding()) self.db_loader.read_file(filename) self._post_load_newdb(filename, 'x-directory/normal', title)