Merge pull request #150 from prculley/bug9425m
Bug 9425 GEDCOM import some Place Names & Titles are blank
This commit is contained in:
commit
84e89b35ee
@ -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)
|
||||||
|
Loading…
Reference in New Issue
Block a user