From: linek Date: Fri, 14 Jul 2017 21:00:44 +0000 (+0200) Subject: fix sources issues X-Git-Url: https://git.nutra.tk/v1?a=commitdiff_plain;h=412d8f30c8196a210dc47dda20a156a0da569567;p=gamesguru%2Fgetmyancestors.git fix sources issues --- diff --git a/getmyancestors.py b/getmyancestors.py index 9a83ed1..debeede 100755 --- a/getmyancestors.py +++ b/getmyancestors.py @@ -255,12 +255,12 @@ class Source: if data['notes']: for n in data['notes']: if n['text']: - self.notes.add(Note(n['text'], fid=n['id'])) + self.notes.add(Note(n['text'])) def add_source(data=None): if data: for s in list_sources: - if s.fid == data[fid]: + if s.fid == data['id']: return s return Source(data) @@ -274,7 +274,7 @@ class Source: file.write('1 PUBL ' + self.url + '\n') for n in self.notes: n.link(file, 1) - file.write('1 _FSFTID ' + self.fid + '\n') + file.write('1 REFN ' + self.fid + '\n') def link(self, file=sys.stdout, level=1): file.write(str(level) + ' SOUR @S' + str(self.num) + '@\n') @@ -678,20 +678,18 @@ class Tree: self.indi[fid].print(file) for husb, wife in sorted(self.fam, key=lambda x: self.fam.__getitem__(x).num): self.fam[(husb, wife)].print(file) - notes = sorted(list_notes, key=lambda x: x.num) - for i, n in enumerate(notes): - if i > 0: - if n.num == notes[i - 1].num: - continue - n.print(file) - for s in list_sources: - s.print(file) sources = sorted(list_sources, key=lambda x: x.num) for i, s in enumerate(sources): if i > 0: if s.num == sources[i - 1].num: continue s.print(file) + notes = sorted(list_notes, key=lambda x: x.num) + for i, n in enumerate(notes): + if i > 0: + if n.num == notes[i - 1].num: + continue + n.print(file) file.write('0 TRLR\n') diff --git a/mergemyancestors.py b/mergemyancestors.py index dd4e476..ffe12b1 100755 --- a/mergemyancestors.py +++ b/mergemyancestors.py @@ -119,9 +119,7 @@ class Gedcom: self.note[num] = Note(num=num) self.indi[self.num].notes.add(self.note[num]) elif self.tag == 'SOUR': - num = int(self.data[2:len(self.data) - 1]) - self.sour[num] = Source(num=num) - self.indi[self.num].notes.add(self.note[num]) + self.indi[self.num].sources.add(self.get_link_source()) self.flag = True def __get_fam(self): @@ -141,9 +139,7 @@ class Gedcom: self.note[num] = Note(num=num) self.fam[self.num].notes.add(self.note[num]) elif self.tag == 'SOUR': - num = int(self.data[2:len(self.data) - 1]) - self.sour[num] = Source(num=num) - self.fam[self.num].notes.add(self.note[num]) + self.fam[self.num].sources.add(self.get_link_source()) self.flag = True def __get_note(self): @@ -159,15 +155,25 @@ class Gedcom: self.sour[self.num].title = self.data elif self.tag == 'AUTH': self.sour[self.num].citation = self.data - elif self.sour == 'PUBL': - self.url = self.data - elif self.tag == '_FSFTID': - self.fid = self.data + elif self.tag == 'PUBL': + self.sour[self.num].url = self.data + elif self.tag == 'REFN': + self.sour[self.num].fid = self.data elif self.tag == 'NOTE': num = int(self.data[2:len(self.data) - 1]) self.note[num] = Note(num=num) - self.notes.add(self.note[num]) + self.sour[self.num].notes.add(self.note[num]) + self.flag = True + + def get_link_source(self): + num = int(self.data[2:len(self.data) - 1]) + self.sour[num] = Source(num=num) + while self.__get_line() and self.level > 1: + if self.tag == 'PAGE': + self.flag = True + return (self.sour[num], self.data) self.flag = True + return (self.sour[num],) def __get_fact(self): fact = Fact()