]> Nutra Git (v2) - gamesguru/getmyancestors.git/commitdiff
fix sources issues
authorlinek <benoitfontaine.ba@gmail.com>
Fri, 14 Jul 2017 21:00:44 +0000 (23:00 +0200)
committerlinek <benoitfontaine.ba@gmail.com>
Fri, 14 Jul 2017 21:00:44 +0000 (23:00 +0200)
getmyancestors.py
mergemyancestors.py

index 9a83ed106484497141cb373555ef373c0042de3e..debeeded352cd2f63e3174b311bbd4aec26e3a95 100755 (executable)
@@ -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')
 
 
index dd4e476d71a3d1f9acca228926189905d2f94c49..ffe12b1abc6d595d99fa459f1e5fcc824017e4b3 100755 (executable)
@@ -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()