Merge pull request #150 from prculley/bug9425m

Bug 9425 GEDCOM import some Place Names & Titles are blank
This commit is contained in:
Sam Manzi 2016-05-13 09:07:01 +10:00
commit 84e89b35ee

View File

@ -3328,15 +3328,19 @@ class GedcomParser(UpdateCallback):
If just ADR1, ADR2, CITY, STAE, POST or CTRY are provided (this is not If just ADR1, ADR2, CITY, STAE, POST or CTRY are provided (this is not
actually legal GEDCOM symtax, but may be possible by GEDCOM extensions) actually legal GEDCOM symtax, but may be possible by GEDCOM extensions)
then just the structrued address is used. then just the structrued address is used.
The routine returns a string suitable for a title.
""" """
title = ''
free_form_address = free_form_address.replace('\n', ', ')
if not (addr.get_street() or addr.get_locality() or if not (addr.get_street() or addr.get_locality() or
addr.get_city() or addr.get_state() or addr.get_city() or addr.get_state() or
addr.get_postal_code()): addr.get_postal_code()):
addr.set_street(free_form_address) addr.set_street(free_form_address)
return free_form_address
else: else:
# structured address provided # structured address provided
addr_list = free_form_address.split("\n") addr_list = free_form_address.split(",")
str_list = [] str_list = []
for func in (addr.get_street(), addr.get_locality(), for func in (addr.get_street(), addr.get_locality(),
addr.get_city(), addr.get_state(), addr.get_city(), addr.get_state(),
@ -3350,6 +3354,13 @@ class GedcomParser(UpdateCallback):
self.__add_msg(_("ADDR element ignored '%s'" self.__add_msg(_("ADDR element ignored '%s'"
% elmn), line, state) % elmn), line, state)
# The free-form address ADDR is discarded # The free-form address ADDR is discarded
# Assemble a title out of structured address
for elmn in str_list:
if elmn:
if title != '':
title += ', '
title += elmn
return title
def __parse_trailer(self): def __parse_trailer(self):
""" """
@ -5404,7 +5415,7 @@ class GedcomParser(UpdateCallback):
place = state.place place = state.place
if place: if place:
# We encounter a PLAC, having previously encountered an ADDR # We encounter a PLAC, having previously encountered an ADDR
if place.get_title() and place.get_title() != "": if state.place.place_type.string != _("Address"):
# We have previously found a PLAC # We have previously found a PLAC
self.__add_msg(_("A second PLAC ignored"), line, state) self.__add_msg(_("A second PLAC ignored"), line, state)
# ignore this second PLAC, and use the old one # ignore this second PLAC, and use the old one
@ -5532,7 +5543,7 @@ class GedcomParser(UpdateCallback):
self.__parse_level(sub_state, self.parse_loc_tbl, self.__undefined) self.__parse_level(sub_state, self.parse_loc_tbl, self.__undefined)
state.msg += sub_state.msg state.msg += sub_state.msg
self.__merge_address(free_form, sub_state.location, line, state) title = self.__merge_address(free_form, sub_state.location, line, state)
location = sub_state.location location = sub_state.location
@ -5579,6 +5590,9 @@ class GedcomParser(UpdateCallback):
state.place = Place() state.place = Place()
place = state.place place = state.place
place.add_alternate_locations(location) place.add_alternate_locations(location)
place.set_name(PlaceName(value=title))
place.set_title(title)
place.set_type((PlaceType.CUSTOM, _("Address")))
# merge notes etc into place # merge notes etc into place
place.merge(sub_state.place) place.merge(sub_state.place)