0008347: GEDCOM import of embedded notes attached to media does not work

This commit is contained in:
kulath 2015-02-16 17:27:17 +00:00
parent b37438204f
commit 71d22c61aa

View File

@ -5104,14 +5104,44 @@ class GedcomParser(UpdateCallback):
"""
+1 <<NOTE_STRUCTURE>> {0:M}
TODO: Fix this for full reference
@param line: The current line in GedLine format
@type line: GedLine
@param state: The current state
@type state: CurrentState
"""
state.note = line.data
# This code pretty much duplicates the code in __parse_note. In
# __parse_note, we already know the object to which the note is to be
# attached, so we can directly add the note to the object. however, in
# the case of a media object, the media object is not constructed till
# the end of processing, so we just remember the handle of the note.
if line.token == TOKEN_RNOTE:
# reference to a named note defined elsewhere
#NOTE_STRUCTURE: =
# n NOTE @<XREF:NOTE>@ {1:1}
# +1 SOUR @<XREF:SOUR>@ {0:M}
state.note = self.__find_note_handle(self.nid_map[line.data])
else:
# Embedded note
#NOTE_STRUCTURE: =
# n NOTE [<SUBMITTER_TEXT> | <NULL>] {1:1}
# +1 [ CONC | CONT ] <SUBMITTER_TEXT> {0:M}
# +1 SOUR @<XREF:SOUR>@ {0:M}
if not line.data:
self.__add_msg(_("Empty note ignored"), line, state)
self.__skip_subordinate_levels(level+1, state)
else:
new_note = Note(line.data)
new_note.set_gramps_id(self.nid_map[""])
new_note.set_handle(create_id())
sub_state = CurrentState(level=state.level+1)
sub_state.note = new_note
self.__parse_level(sub_state, self.note_parse_tbl,
self.__undefined)
state.msg += sub_state.msg
self.dbase.commit_note(new_note, self.trans, new_note.change)
state.note = new_note.get_handle()
def __family_adopt(self, line, state):
"""
@ -7320,8 +7350,7 @@ class GedcomParser(UpdateCallback):
oref = MediaRef()
oref.set_reference_handle(photo.handle)
if note:
gramps_id = self.nid_map[note]
oref.add_note(self.__find_note_handle(gramps_id))
oref.add_note(note)
obj.add_media_reference(oref)
def __build_event_pair(self, state, event_type, event_map, description):