Special char in place's name breaks xdot view

Issue #10174
This commit is contained in:
Paul Franklin 2017-09-24 11:57:35 -07:00
parent e1676aca6d
commit 2b42dd258e
3 changed files with 10 additions and 7 deletions

View File

@ -867,7 +867,8 @@ class FamilyLinesReport(Report):
label += '<TD>' label += '<TD>'
# at the very least, the label must have the person's name # at the very least, the label must have the person's name
label += name name = name.replace('"', '&#34;')
label += name.replace('<', '&#60;').replace('>', '&#62;')
if self.includeid == 1: # same line if self.includeid == 1: # same line
label += " (%s)" % p_id label += " (%s)" % p_id
elif self.includeid == 2: # own line elif self.includeid == 2: # own line
@ -1097,4 +1098,6 @@ class FamilyLinesReport(Report):
place_text = location.get(PlaceType.STATE) place_text = location.get(PlaceType.STATE)
elif location.get(PlaceType.COUNTRY): elif location.get(PlaceType.COUNTRY):
place_text = location.get(PlaceType.COUNTRY) place_text = location.get(PlaceType.COUNTRY)
place_text = place_text.replace('<', '&#60;')
place_text = place_text.replace('>', '&#62;')
return place_text return place_text

View File

@ -211,6 +211,8 @@ class HourGlassReport(Report):
""" """
p_id = person.get_gramps_id() p_id = person.get_gramps_id()
name = self._name_display.display(person) name = self._name_display.display(person)
name = name.replace('"', '&#34;')
name = name.replace('<', '&#60;').replace('>', '&#62;')
birth_evt = get_birth_or_fallback(self.__db, person) birth_evt = get_birth_or_fallback(self.__db, person)
if birth_evt: if birth_evt:

View File

@ -566,11 +566,8 @@ class RelGraphReport(Report):
# at the very least, the label must have the person's name # at the very least, the label must have the person's name
p_name = self._name_display.display(person) p_name = self._name_display.display(person)
if self.use_html_output: p_name = p_name.replace('"', '&#34;')
# avoid < and > in the name, as this is html text label += p_name.replace('<', '&#60;').replace('>', '&#62;')
label += p_name.replace('<', '&#60;').replace('>', '&#62;')
else:
label += p_name
p_id = person.get_gramps_id() p_id = person.get_gramps_id()
if self.includeid == 1: # same line if self.includeid == 1: # same line
label += " (%s)" % p_id label += " (%s)" % p_id
@ -719,7 +716,8 @@ class RelGraphReport(Report):
empty string empty string
""" """
if event and self.event_choice in [2, 3, 5, 6, 7]: if event and self.event_choice in [2, 3, 5, 6, 7]:
return _pd.display_event(self._db, event) place = _pd.display_event(self._db, event)
return place.replace('<', '&#60;').replace('>', '&#62;')
return '' return ''
#------------------------------------------------------------------------ #------------------------------------------------------------------------