7258: transcode os.path.join args from the fs enc to prevent a crash
fix plugin registration fix textual, html report etc (except cairo based report) fix web calendar report for python3
This commit is contained in:
parent
adeeec6ab1
commit
aedfc3a673
@ -554,7 +554,14 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
||||
|
||||
def __make_zip_backup(self, dirname):
|
||||
import zipfile
|
||||
if sys.version_info[0] < 3:
|
||||
from string import maketrans
|
||||
title = self.get_dbname()
|
||||
# In Windows resrved characters is "<>:"/\|?*"
|
||||
reserved_char = r':,<>"/\|?* '
|
||||
replace_char = "-__________"
|
||||
trans = title.maketrans(reserved_char, replace_char)
|
||||
title = title.translate(trans)
|
||||
|
||||
if not os.access(dirname, os.W_OK):
|
||||
_LOG.warning("Can't write technical DB backup for %s" % title)
|
||||
|
@ -32,8 +32,8 @@ General option handling, including saving and parsing.
|
||||
# Standard Python modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from __future__ import print_function
|
||||
import os
|
||||
from __future__ import print_function, unicode_literals
|
||||
import os, io
|
||||
import sys
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
@ -208,7 +208,7 @@ class OptionListCollection(object):
|
||||
"""
|
||||
Saves the current OptionListCollection to the associated file.
|
||||
"""
|
||||
f = open(self.filename,"w")
|
||||
f = io.open(self.filename,"w", encoding="utf-8")
|
||||
f.write("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n")
|
||||
f.write('<options>\n')
|
||||
|
||||
|
@ -1104,7 +1104,7 @@ class PluginRegister(object):
|
||||
if sys.version_info[0] < 3:
|
||||
fd = open(full_filename, "r")
|
||||
else:
|
||||
fd = io.open(full_filename, "r")
|
||||
fd = io.open(full_filename, "r", encoding='utf-8')
|
||||
stream = fd.read()
|
||||
fd.close()
|
||||
if os.path.exists(os.path.join(os.path.dirname(full_filename),
|
||||
|
@ -32,6 +32,7 @@ from __future__ import print_function
|
||||
|
||||
from ...const import GRAMPS_LOCALE as glocale
|
||||
_ = glocale.translation.gettext
|
||||
import io
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -159,7 +160,7 @@ class DocBackend(object):
|
||||
% self.filename)
|
||||
self._checkfilename()
|
||||
try:
|
||||
self.__file = open(self.filename, "w")
|
||||
self.__file = io.open(self.filename, "w", encoding="utf-8")
|
||||
except IOError as msg:
|
||||
errmsg = "%s\n%s" % (_("Could not create %s") % self.filename, msg)
|
||||
raise DocBackendError(errmsg)
|
||||
|
@ -33,7 +33,8 @@ Report option handling, including saving and parsing.
|
||||
# Standard Python modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
import os
|
||||
from __future__ import unicode_literals
|
||||
import os, io
|
||||
import copy
|
||||
from xml.sax.saxutils import escape
|
||||
|
||||
@ -505,7 +506,7 @@ class OptionListCollection(_options.OptionListCollection):
|
||||
if os.path.isfile(self.filename):
|
||||
p = make_parser()
|
||||
p.setContentHandler(OptionParser(self))
|
||||
the_file = open(self.filename)
|
||||
the_file = io.open(self.filename, encoding="utf-8")
|
||||
p.parse(the_file)
|
||||
the_file.close()
|
||||
except (IOError, OSError, SAXParseException):
|
||||
@ -1001,7 +1002,7 @@ class DocOptionListCollection(_options.OptionListCollection):
|
||||
if os.path.isfile(self.filename):
|
||||
p = make_parser()
|
||||
p.setContentHandler(DocOptionParser(self))
|
||||
the_file = open(self.filename)
|
||||
the_file = io.open(self.filename, encoding="utf-8")
|
||||
p.parse(the_file)
|
||||
the_file.close()
|
||||
except (IOError, OSError, SAXParseException):
|
||||
|
@ -155,7 +155,7 @@ class GraphvizReportDialog(ReportDialog):
|
||||
yoptions=Gtk.AttachOptions.SHRINK)
|
||||
self.row += 1
|
||||
|
||||
self.open_with_app = Gtk.CheckButton(build=_("Open with default viewer"))
|
||||
self.open_with_app = Gtk.CheckButton(_("Open with default viewer"))
|
||||
self.open_with_app.set_active(
|
||||
config.get('interface.open-with-default-viewer'))
|
||||
self.tbl.attach(self.open_with_app, 2, 4, self.row, self.row+1,
|
||||
|
@ -579,7 +579,7 @@ class WebCalReport(Report):
|
||||
elif url_fname == 'fullyearlinked':
|
||||
myTitle = _('Full year at a Glance')
|
||||
else:
|
||||
myTitle = _(url_fname)
|
||||
myTitle = _(url_fname)
|
||||
hyper = Html("a", nav_text, href = url, name = url_fname, title = myTitle)
|
||||
|
||||
if check_cs:
|
||||
@ -1728,7 +1728,10 @@ def get_day_list(event_date, holiday_list, bday_anniv_list):
|
||||
|
||||
# sort them based on number of years
|
||||
# holidays will always be on top of event list
|
||||
day_list.sort()
|
||||
if sys.version_info[0] < 3:
|
||||
day_list.sort()
|
||||
else:
|
||||
day_list= sorted(day_list, key=lambda x: (isinstance(x[0], str), x[0]))
|
||||
|
||||
# return to its caller calendar_build()
|
||||
return day_list
|
||||
|
Loading…
Reference in New Issue
Block a user