Skip to content

Commit 47245a9

Browse files
committed
Change the output of ADDR tags in the Gedcom export
* Only output the ADDR structure for addresses, not places. * Remove empty lines from the ADDR structure.
1 parent 07e4f4e commit 47245a9

File tree

3 files changed

+25
-78
lines changed

3 files changed

+25
-78
lines changed

data/tests/exp_sample_ged.ged

+1-32
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,6 @@
7575
2 TYPE Christening of Amber Marie Smith
7676
2 DATE 26 APR 1998
7777
2 PLAC Community Presbyterian Church, Danville, CA
78-
2 ADDR
79-
3 ADR2 Community Presbyterian Church, Danville, CA
8078
1 FAMC @F0013@
8179
2 PEDI birth
8280
1 CHAN
@@ -131,8 +129,6 @@
131129
2 TYPE Christening of Mason Michael Smith
132130
2 DATE 10 JUL 1996
133131
2 PLAC Community Presbyterian Church, Danville, CA
134-
2 ADDR
135-
3 ADR2 Community Presbyterian Church, Danville, CA
136132
1 FAMC @F0013@
137133
2 PEDI birth
138134
1 CHAN
@@ -626,10 +622,6 @@
626622
3 MAP
627623
4 LATI N39.7392
628624
4 LONG W104.9903
629-
2 ADDR
630-
3 CITY Denver, Denver Co., CO
631-
3 STAE Colorado
632-
3 CTRY USA
633625
1 DEAT
634626
2 TYPE Death of Marjorie Ohman
635627
2 DATE 22 JUN 1980
@@ -648,8 +640,6 @@
648640
2 TYPE Birth of Darcy Horne
649641
2 DATE 2 JUL 1966
650642
2 PLAC Sacramento, Sacramento Co., CA
651-
2 ADDR
652-
3 CITY Sacramento, Sacramento Co., CA
653643
1 FAMS @F0010@
654644
1 CHAN
655645
2 DATE 21 DEC 2007
@@ -858,12 +848,6 @@
858848
1 BIRT
859849
2 DATE 29 DEC 1954
860850
2 PLAC 123 High St, Cleveland, Cuyahoga, Ohio, USA
861-
2 ADDR 123 High St
862-
3 ADR1 123 High St
863-
3 CITY Cleveland
864-
3 STAE Ohio
865-
3 POST 44140
866-
3 CTRY USA
867851
2 PHON 440-871-3400
868852
2 PHON 800-871-3400
869853
2 EMAIL thetester@@gmail.com
@@ -884,8 +868,7 @@
884868
1 SOUR @S0005@
885869
1 RESI
886870
2 DATE 27 OCT 2017
887-
2 ADDR
888-
3 CONT test village
871+
2 ADDR test village
889872
3 CONT Akron
890873
3 CONT OH
891874
3 CONT 44177
@@ -946,10 +929,6 @@
946929
3 MAP
947930
4 LATI N39.7392
948931
4 LONG W104.9903
949-
2 ADDR
950-
3 CITY Denver, Denver Co., CO
951-
3 STAE Colorado
952-
3 CTRY USA
953932
2 PHON 440-871-3402
954933
2 EMAIL tomtester@@gmail.com
955934
2 FAX 440-321-4569
@@ -965,10 +944,6 @@
965944
3 MAP
966945
4 LATI N39.7392
967946
4 LONG W104.9903
968-
2 ADDR
969-
3 CITY Denver, Denver Co., CO
970-
3 STAE Colorado
971-
3 CTRY USA
972947
1 FAMC @F0016@
973948
2 PEDI birth
974949
1 SOUR @S0005@
@@ -1023,10 +998,6 @@
1023998
3 MAP
1024999
4 LATI N39.7392
10251000
4 LONG W104.9903
1026-
2 ADDR
1027-
3 CITY Denver, Denver Co., CO
1028-
3 STAE Colorado
1029-
3 CTRY USA
10301001
2 STAT QUALIFIED
10311002
1 FAMC @F0016@
10321003
2 _FREL Adopted
@@ -1278,8 +1249,6 @@
12781249
2 DATE 22 FEB 2000
12791250
2 TEMP DENVE
12801251
2 PLAC Community Presbyterian Church, Danville, CA
1281-
2 ADDR
1282-
3 ADR2 Community Presbyterian Church, Danville, CA
12831252
2 STAT CLEARED
12841253
1 MARR
12851254
2 HUSB

gramps/gen/lib/locationbase.py

+19
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,25 @@ def get_text_data_list(self):
107107
self.phone,
108108
]
109109

110+
def get_address_lines(self):
111+
"""
112+
Return a list of non-empty address lines for the Location suitable for
113+
producing a formatted address.
114+
115+
:returns: A list of address lines for the Location.
116+
:rtype: list
117+
"""
118+
addr_lines = [
119+
self.street,
120+
self.locality,
121+
self.city,
122+
self.county,
123+
self.state,
124+
self.postal,
125+
self.country,
126+
]
127+
return [line for line in addr_lines if line]
128+
110129
def set_street(self, val):
111130
"""Set the street portion of the Location."""
112131
self.street = val

gramps/plugins/export/exportgedcom.py

+5-46
Original file line numberDiff line numberDiff line change
@@ -1598,33 +1598,6 @@ def _place(self, place, dateobj, level):
15981598
self._writeln(level + 1, "MAP")
15991599
self._writeln(level + 2, "LATI", latitude)
16001600
self._writeln(level + 2, "LONG", longitude)
1601-
1602-
# The Gedcom standard shows that an optional address structure can
1603-
# be written out in the event detail.
1604-
# http://homepages.rootsweb.com/~pmcbride/gedcom/55gcch2.htm#EVENT_DETAIL
1605-
location = get_main_location(self.dbase, place)
1606-
street = location.get(PlaceType.STREET)
1607-
locality = location.get(PlaceType.LOCALITY)
1608-
city = location.get(PlaceType.CITY)
1609-
state = location.get(PlaceType.STATE)
1610-
country = location.get(PlaceType.COUNTRY)
1611-
postal_code = place.get_code()
1612-
1613-
if street or locality or city or state or postal_code or country:
1614-
self._writeln(level, "ADDR", street)
1615-
if street:
1616-
self._writeln(level + 1, "ADR1", street)
1617-
if locality:
1618-
self._writeln(level + 1, "ADR2", locality)
1619-
if city:
1620-
self._writeln(level + 1, "CITY", city)
1621-
if state:
1622-
self._writeln(level + 1, "STAE", state)
1623-
if postal_code:
1624-
self._writeln(level + 1, "POST", postal_code)
1625-
if country:
1626-
self._writeln(level + 1, "CTRY", country)
1627-
16281601
self._note_references(place.get_note_list(), level + 1)
16291602

16301603
def __write_addr(self, level, addr):
@@ -1652,25 +1625,11 @@ def __write_addr(self, level, addr):
16521625
@param addr: The location or address
16531626
@type addr: [a super-type of] LocationBase
16541627
"""
1655-
if (
1656-
addr.get_street()
1657-
or addr.get_locality()
1658-
or addr.get_city()
1659-
or addr.get_state()
1660-
or addr.get_postal_code()
1661-
or addr.get_country()
1662-
):
1663-
self._writeln(level, "ADDR", addr.get_street())
1664-
if addr.get_locality():
1665-
self._writeln(level + 1, "CONT", addr.get_locality())
1666-
if addr.get_city():
1667-
self._writeln(level + 1, "CONT", addr.get_city())
1668-
if addr.get_state():
1669-
self._writeln(level + 1, "CONT", addr.get_state())
1670-
if addr.get_postal_code():
1671-
self._writeln(level + 1, "CONT", addr.get_postal_code())
1672-
if addr.get_country():
1673-
self._writeln(level + 1, "CONT", addr.get_country())
1628+
addr_lines = addr.get_address_lines()
1629+
if addr_lines:
1630+
self._writeln(level, "ADDR", addr_lines[0])
1631+
for line in addr_lines[1:]:
1632+
self._writeln(level + 1, "CONT", line)
16741633

16751634
if addr.get_street():
16761635
self._writeln(level + 1, "ADR1", addr.get_street())

0 commit comments

Comments
 (0)