bug 9123 GEDCOM import with media files that have no path fails
This commit is contained in:
parent
8acb425674
commit
92659145d0
@ -2977,36 +2977,33 @@ class GedcomParser(UpdateCallback):
|
|||||||
event.set_place_handle(place.get_handle())
|
event.set_place_handle(place.get_handle())
|
||||||
|
|
||||||
def __find_file(self, fullname, altpath):
|
def __find_file(self, fullname, altpath):
|
||||||
tries = []
|
# try to find the media file
|
||||||
fullname = fullname.replace('\\', os.path.sep)
|
fullname = fullname.replace('\\', os.path.sep)
|
||||||
tries.append(fullname)
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if os.path.isfile(fullname):
|
if os.path.isfile(fullname):
|
||||||
return (1, fullname)
|
return (1, fullname)
|
||||||
except UnicodeEncodeError:
|
except UnicodeEncodeError:
|
||||||
# FIXME: problem possibly caused by umlaut/accented character
|
# FIXME: problem possibly caused by umlaut/accented character
|
||||||
# in filename
|
# in filename
|
||||||
return (0, tries)
|
return (0, fullname)
|
||||||
|
# look where we found the '.ged', using the full path in fullname
|
||||||
other = os.path.join(altpath, fullname)
|
other = os.path.join(altpath, fullname)
|
||||||
tries.append(other)
|
|
||||||
if os.path.isfile(other):
|
if os.path.isfile(other):
|
||||||
return (1, other)
|
return (1, other)
|
||||||
|
# lets try reducing to just where we found '.ged'
|
||||||
other = os.path.join(altpath, os.path.basename(fullname))
|
other = os.path.join(altpath, os.path.basename(fullname))
|
||||||
tries.append(other)
|
|
||||||
if os.path.isfile(other):
|
if os.path.isfile(other):
|
||||||
return (1, other)
|
return (1, other)
|
||||||
|
# I don't think the following code does anything because search_paths
|
||||||
|
# is never initialized...
|
||||||
if len(fullname) > 3:
|
if len(fullname) > 3:
|
||||||
if fullname[1] == ':':
|
if fullname[1] == ':':
|
||||||
fullname = fullname[2:]
|
fullname = fullname[2:]
|
||||||
for path in self.search_paths:
|
for path in self.search_paths:
|
||||||
other = os.path.normpath("%s/%s" % (path, fullname))
|
other = os.path.normpath("%s/%s" % (path, fullname))
|
||||||
tries.append(other)
|
|
||||||
if os.path.isfile(other):
|
if os.path.isfile(other):
|
||||||
return (1, other)
|
return (1, other)
|
||||||
return (0, tries)
|
return (0, fullname)
|
||||||
else:
|
|
||||||
return (0, tries)
|
|
||||||
|
|
||||||
def __get_next_line(self):
|
def __get_next_line(self):
|
||||||
"""
|
"""
|
||||||
@ -6556,9 +6553,9 @@ class GedcomParser(UpdateCallback):
|
|||||||
(file_ok, filename) = self.__find_file(line.data, self.dir_path)
|
(file_ok, filename) = self.__find_file(line.data, self.dir_path)
|
||||||
if state.media != "URL":
|
if state.media != "URL":
|
||||||
if not file_ok:
|
if not file_ok:
|
||||||
self.__add_msg(_("Could not import %s") % filename[0], line,
|
self.__add_msg(_("Could not import %s") % filename, line,
|
||||||
state)
|
state)
|
||||||
path = filename[0].replace('\\', os.path.sep)
|
path = filename
|
||||||
else:
|
else:
|
||||||
path = line.data
|
path = line.data
|
||||||
|
|
||||||
@ -6567,6 +6564,7 @@ class GedcomParser(UpdateCallback):
|
|||||||
if not state.media.get_description():
|
if not state.media.get_description():
|
||||||
state.media.set_description(path)
|
state.media.set_description(path)
|
||||||
|
|
||||||
|
|
||||||
def __obje_title(self, line, state):
|
def __obje_title(self, line, state):
|
||||||
"""
|
"""
|
||||||
@param line: The current line in GedLine format
|
@param line: The current line in GedLine format
|
||||||
@ -7558,7 +7556,6 @@ class GedcomParser(UpdateCallback):
|
|||||||
(valid, path) = self.__find_file(filename, self.dir_path)
|
(valid, path) = self.__find_file(filename, self.dir_path)
|
||||||
if not valid:
|
if not valid:
|
||||||
self.__add_msg(_("Could not import %s") % filename)
|
self.__add_msg(_("Could not import %s") % filename)
|
||||||
path = filename.replace('\\', os.path.sep)
|
|
||||||
else:
|
else:
|
||||||
path = filename
|
path = filename
|
||||||
photo_handle = self.media_map.get(path)
|
photo_handle = self.media_map.get(path)
|
||||||
|
Loading…
Reference in New Issue
Block a user