From 7a61396025691e0b23bad96eece4d0826656980c Mon Sep 17 00:00:00 2001 From: Alex Roitman Date: Thu, 13 Apr 2006 03:15:22 +0000 Subject: [PATCH] Add ChildRef class, reorganize RelLib. svn: r6320 --- ChangeLog | 1 + src/DataViews/_FamilyView.py | 5 +- src/DataViews/_PedigreeView.py | 4 +- src/Editors/_EditFamily.py | 20 ++-- src/GenericFilter.py | 4 +- src/GrampsDb/_ConstXML.py | 14 +-- src/GrampsDb/_DbUtils.py | 8 +- src/GrampsDb/_ReadGedcom.py | 46 ++++----- src/GrampsDb/_WriteGedcom.py | 10 +- src/GrampsDb/_WriteXML.py | 4 +- src/RelLib/Makefile.am | 5 +- src/RelLib/_Address.py | 20 ++-- src/RelLib/_Attribute.py | 24 +++-- src/RelLib/_ChildRef.py | 147 +++++++++++++++++++++++++++++ src/RelLib/_Event.py | 16 ++-- src/RelLib/_EventRef.py | 33 +++---- src/RelLib/_Family.py | 21 +++-- src/RelLib/_LdsOrd.py | 16 ++-- src/RelLib/_MediaObject.py | 16 ++-- src/RelLib/_MediaRef.py | 37 +++++--- src/RelLib/_Name.py | 30 ++++-- src/RelLib/_Person.py | 146 ++++++++--------------------- src/RelLib/_PersonRef.py | 35 ++++--- src/RelLib/_Place.py | 16 ++-- src/RelLib/_PrimaryObject.py | 8 +- src/RelLib/_PrivacyBase.py | 7 ++ src/RelLib/_PrivateSourceNote.py | 31 +------ src/RelLib/_RefBase.py | 66 +++++++++++++ src/RelLib/_RepoRef.py | 22 ++--- src/RelLib/_SourceBase.py | 155 +++++++++++++++++++++++++++++++ src/RelLib/_SourceNote.py | 136 +-------------------------- src/RelLib/_SourceRef.py | 22 +++-- src/RelLib/__init__.py | 1 + src/Utils.py | 18 ++-- src/plugins/GraphViz.py | 4 +- src/plugins/ImportGeneWeb.py | 5 +- src/plugins/NavWebPage.py | 2 +- src/plugins/TestcaseGenerator.py | 10 +- 38 files changed, 696 insertions(+), 469 deletions(-) create mode 100644 src/RelLib/_ChildRef.py create mode 100644 src/RelLib/_RefBase.py create mode 100644 src/RelLib/_SourceBase.py diff --git a/ChangeLog b/ChangeLog index 95bd30a17..2288147dd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,7 @@ * src/plugins/GraphViz.py: Add graph preview based on mime (Bug 1449796) 2006-04-12 Alex Roitman + * various: Add ChildRef class, reorganize RelLib. * src/plugins/Check.py (Check.__init__): Typo. 2006-04-11 Alex Roitman diff --git a/src/DataViews/_FamilyView.py b/src/DataViews/_FamilyView.py index 07245018b..c1623abb8 100644 --- a/src/DataViews/_FamilyView.py +++ b/src/DataViews/_FamilyView.py @@ -699,8 +699,9 @@ class FamilyView(PageView.PersonNavView): if family: person = self.dbstate.db.get_person_from_handle(self.dbstate.active.handle) - GrampsDb.add_child_to_family(family, child, (RelLib.Person.CHILD_BIRTH,'') - (RelLib.Person.CHILD_BIRTH,'')) + GrampsDb.add_child_to_family(family, child, + (RelLib.ChildRef.CHILD_BIRTH,'') + (RelLib.ChildRef.CHILD_BIRTH,'')) def add_parent_family(self, obj, event, handle): if event.type == gtk.gdk.BUTTON_PRESS and event.button == 1: diff --git a/src/DataViews/_PedigreeView.py b/src/DataViews/_PedigreeView.py index 634a1c3fd..e6eabf802 100644 --- a/src/DataViews/_PedigreeView.py +++ b/src/DataViews/_PedigreeView.py @@ -1121,8 +1121,8 @@ class PedigreeView(PageView.PersonNavView): else: return if family_handle: - mrel = m != RelLib.Person.CHILD_BIRTH - frel = f != RelLib.Person.CHILD_BIRTH + mrel = m != RelLib.ChildRef.CHILD_BIRTH + frel = f != RelLib.ChildRef.CHILD_BIRTH family = self.db.get_family_from_handle(family_handle) if family != None: diff --git a/src/Editors/_EditFamily.py b/src/Editors/_EditFamily.py index 70fcff20e..807fc5451 100644 --- a/src/Editors/_EditFamily.py +++ b/src/Editors/_EditFamily.py @@ -1,7 +1,7 @@ # # Gramps - a GTK+/GNOME based genealogy program # -# Copyright (C) 2000-2005 Donald N. Allingham +# Copyright (C) 2000-2006 Donald N. Allingham # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -799,10 +799,11 @@ class EditFamily(EditPrimary): for handle in self.obj.get_child_handle_list(): child = self.db.get_person_from_handle(handle) # fix - relationships need to be extracted from the list - child.add_parent_family_handle(self.obj.handle, - (RelLib.Person.CHILD_BIRTH,''), - (RelLib.Person.CHILD_BIRTH,''), - ) + child.add_parent_family_handle( + self.obj.handle, + (RelLib.ChildRef.CHILD_BIRTH,''), + (RelLib.ChildRef.CHILD_BIRTH,''), + ) self.db.commit_person(child,trans) self.db.add_family(self.obj,trans) @@ -838,10 +839,11 @@ class EditFamily(EditPrimary): # add the family from children which have been addedna for handle in new_set.difference(orig_set): person = self.db.get_person_from_handle(handle) - person.add_parent_family_handle(self.obj.handle, - (RelLib.Person.CHILD_BIRTH,''), - (RelLib.Person.CHILD_BIRTH,''), - ) + person.add_parent_family_handle( + self.obj.handle, + (RelLib.ChildRef.CHILD_BIRTH,''), + (RelLib.ChildRef.CHILD_BIRTH,''), + ) self.db.commit_person(person,trans) if self.object_is_empty(): diff --git a/src/GenericFilter.py b/src/GenericFilter.py index c38dbee4e..6e497b7a6 100644 --- a/src/GenericFilter.py +++ b/src/GenericFilter.py @@ -1448,8 +1448,8 @@ class HaveAltFamilies(Rule): def apply(self,db,person): for (fam,rel1,rel2) in person.get_parent_family_handle_list(): - if rel1 == RelLib.Person.CHILD_ADOPTED \ - or rel2 == RelLib.Person.CHILD_ADOPTED: + if rel1 == RelLib.ChildRef.CHILD_ADOPTED \ + or rel2 == RelLib.ChildRef.CHILD_ADOPTED: return True return False diff --git a/src/GrampsDb/_ConstXML.py b/src/GrampsDb/_ConstXML.py index abb358366..119a13163 100644 --- a/src/GrampsDb/_ConstXML.py +++ b/src/GrampsDb/_ConstXML.py @@ -33,12 +33,12 @@ import RelLib # #------------------------------------------------------------------------- child_relations = ( - (RelLib.Person.CHILD_BIRTH , "Birth"), - (RelLib.Person.CHILD_ADOPTED , "Adopted"), - (RelLib.Person.CHILD_STEPCHILD , "Stepchild"), - (RelLib.Person.CHILD_SPONSORED , "Sponsored"), - (RelLib.Person.CHILD_FOSTER , "Foster"), - (RelLib.Person.CHILD_UNKNOWN , "Unknown"), + (RelLib.ChildRef.CHILD_BIRTH , "Birth"), + (RelLib.ChildRef.CHILD_ADOPTED , "Adopted"), + (RelLib.ChildRef.CHILD_STEPCHILD , "Stepchild"), + (RelLib.ChildRef.CHILD_SPONSORED , "Sponsored"), + (RelLib.ChildRef.CHILD_FOSTER , "Foster"), + (RelLib.ChildRef.CHILD_UNKNOWN , "Unknown"), ) events = ( @@ -175,7 +175,7 @@ url_types = ( # mapping from the tuple collection to the appropriate CUSTOM integer custom_types = { - child_relations : RelLib.Person.CHILD_CUSTOM, + child_relations : RelLib.ChildRef.CHILD_CUSTOM, events : RelLib.Event.CUSTOM, attributes : RelLib.Attribute.CUSTOM, family_relations : RelLib.Family.CUSTOM, diff --git a/src/GrampsDb/_DbUtils.py b/src/GrampsDb/_DbUtils.py index 727ef2ad1..f044f6856 100644 --- a/src/GrampsDb/_DbUtils.py +++ b/src/GrampsDb/_DbUtils.py @@ -1,7 +1,7 @@ # # Gramps - a GTK+/GNOME based genealogy program # -# Copyright (C) 2004-2005 Donald N. Allingham +# Copyright (C) 2004-2006 Donald N. Allingham # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -118,8 +118,10 @@ def remove_child_from_family(db, person_handle, family_handle, trans=None): db.transaction_commit(trans,_("Remove child from family")) -def add_child_to_family(db, family, child, mrel=(RelLib.Person.CHILD_BIRTH,''), - frel=(RelLib.Person.CHILD_BIRTH,''), trans=None): +def add_child_to_family(db, family, child, + mrel=(RelLib.ChildRef.CHILD_BIRTH,''), + frel=(RelLib.ChildRef.CHILD_BIRTH,''), + trans=None): family.add_child_handle(child.handle) child.add_parent_family_handle(family.handle, mrel, frel ) diff --git a/src/GrampsDb/_ReadGedcom.py b/src/GrampsDb/_ReadGedcom.py index 5eb4e629b..375482602 100644 --- a/src/GrampsDb/_ReadGedcom.py +++ b/src/GrampsDb/_ReadGedcom.py @@ -128,16 +128,16 @@ file_systems = { "SMBFS" : _('Networked Windows file system') } -rel_types = ((RelLib.Person.CHILD_BIRTH,''), - (RelLib.Person.CHILD_UNKNOWN,''), - (RelLib.Person.CHILD_NONE,'')) +rel_types = ((RelLib.ChildRef.CHILD_BIRTH,''), + (RelLib.ChildRef.CHILD_UNKNOWN,''), + (RelLib.ChildRef.CHILD_NONE,'')) pedi_type = { - 'birth' : (RelLib.Person.CHILD_BIRTH,''), - 'natural': (RelLib.Person.CHILD_BIRTH,''), - 'step' : (RelLib.Person.CHILD_ADOPTED,''), - 'adopted': (RelLib.Person.CHILD_ADOPTED,''), - 'foster' : (RelLib.Person.CHILD_FOSTER,''), + 'birth' : (RelLib.ChildRef.CHILD_BIRTH,''), + 'natural': (RelLib.ChildRef.CHILD_BIRTH,''), + 'step' : (RelLib.ChildRef.CHILD_ADOPTED,''), + 'adopted': (RelLib.ChildRef.CHILD_ADOPTED,''), + 'foster' : (RelLib.ChildRef.CHILD_FOSTER,''), } lds_status = { @@ -1045,8 +1045,8 @@ class GedcomParser: self.barf(level+1) def parse_ftw_relations(self,level): - mrel = (RelLib.Person.CHILD_BIRTH,'') - frel = (RelLib.Person.CHILD_BIRTH,'') + mrel = (RelLib.ChildRef.CHILD_BIRTH,'') + frel = (RelLib.ChildRef.CHILD_BIRTH,'') while True: matches = self.get_next() @@ -1055,17 +1055,17 @@ class GedcomParser: return (mrel,frel) # FTW elif matches[1] == TOKEN__FREL: - frel = pedi_type.get(matches[2].lower(),(RelLib.Person.CHILD_BIRTH,'')) + frel = pedi_type.get(matches[2].lower(),(RelLib.ChildRef.CHILD_BIRTH,'')) # FTW elif matches[1] == TOKEN__MREL: - mrel = pedi_type.get(matches[2].lower(),(RelLib.Person.CHILD_BIRTH,'')) + mrel = pedi_type.get(matches[2].lower(),(RelLib.ChildRef.CHILD_BIRTH,'')) elif matches[1] == TOKEN_ADOP: - mrel = (RelLib.Person.CHILD_ADOPTED,'') - frel = (RelLib.Person.CHILD_ADOPTED,'') + mrel = (RelLib.ChildRef.CHILD_ADOPTED,'') + frel = (RelLib.ChildRef.CHILD_ADOPTED,'') # Legacy elif matches[1] == TOKEN__STAT: - mrel = (RelLib.Person.CHILD_BIRTH,'') - frel = (RelLib.Person.CHILD_BIRTH,'') + mrel = (RelLib.ChildRef.CHILD_BIRTH,'') + frel = (RelLib.ChildRef.CHILD_BIRTH,'') # Legacy _PREF elif matches[1][0] == TOKEN_UNKNOWN: pass @@ -1239,7 +1239,7 @@ class GedcomParser: return None def parse_famc_type(self,level,person): - ftype = (RelLib.Person.CHILD_BIRTH,'') + ftype = (RelLib.ChildRef.CHILD_BIRTH,'') note = "" while True: matches = self.get_next() @@ -1566,8 +1566,8 @@ class GedcomParser: self.barf(level+1) def parse_adopt_famc(self,level): - mrel = RelLib.Person.CHILD_ADOPTED - frel = RelLib.Person.CHILD_ADOPTED + mrel = RelLib.ChildRef.CHILD_ADOPTED + frel = RelLib.ChildRef.CHILD_ADOPTED while True: matches = self.get_next() if int(matches[0]) < level: @@ -1575,9 +1575,9 @@ class GedcomParser: return (mrel,frel) elif matches[1] == TOKEN_ADOP: if matches[2] == "HUSB": - mrel = RelLib.Person.CHILD_BIRTH + mrel = RelLib.ChildRef.CHILD_BIRTH elif matches[2] == "WIFE": - frel = RelLib.Person.CHILD_BIRTH + frel = RelLib.ChildRef.CHILD_BIRTH else: self.barf(level+1) return None @@ -2104,8 +2104,8 @@ class GedcomParser: else: if ftype in rel_types: state.person.add_parent_family_handle( - handle, (RelLib.Person.CHILD_BIRTH,''), - (RelLib.Person.CHILD_BIRTH,'')) + handle, (RelLib.ChildRef.CHILD_BIRTH,''), + (RelLib.ChildRef.CHILD_BIRTH,'')) else: if state.person.get_main_parents_family_handle() == handle: state.person.set_main_parent_family_handle(None) diff --git a/src/GrampsDb/_WriteGedcom.py b/src/GrampsDb/_WriteGedcom.py index 6427e621f..9cad08616 100644 --- a/src/GrampsDb/_WriteGedcom.py +++ b/src/GrampsDb/_WriteGedcom.py @@ -932,8 +932,8 @@ class GedcomWriter: for f in person.get_parent_family_handle_list(): mrel = f[1] frel = f[2] - if (mrel == RelLib.Person.CHILD_ADOPTED or - frel == RelLib.Person.CHILD_ADOPTED): + if (mrel == RelLib.ChildRef.CHILD_ADOPTED or + frel == RelLib.ChildRef.CHILD_ADOPTED): fam = f[0] break if fam: @@ -976,8 +976,8 @@ class GedcomWriter: for f in person.get_parent_family_handle_list(): mrel = f[1] frel = f[2] - if (mrel == RelLib.Person.CHILD_ADOPTED or - frel == RelLib.Person.CHILD_ADOPTED): + if (mrel == RelLib.ChildRef.CHILD_ADOPTED or + frel == RelLib.ChildRef.CHILD_ADOPTED): fam = f[0] break if fam: @@ -1061,7 +1061,7 @@ class GedcomWriter: if self.flist.has_key(family[0]): self.writeln("1 FAMC @%s@" % self.fid(family[0])) if self.adopt == GedcomInfo.ADOPT_PEDI: - if family[1] == RelLib.Person.CHILD_ADOPTED: + if family[1] == RelLib.ChildRef.CHILD_ADOPTED: self.writeln("2 PEDI Adopted") for family_handle in person.get_family_handle_list(): diff --git a/src/GrampsDb/_WriteXML.py b/src/GrampsDb/_WriteXML.py index e69d4ec9a..bf02db837 100644 --- a/src/GrampsDb/_WriteXML.py +++ b/src/GrampsDb/_WriteXML.py @@ -414,12 +414,12 @@ class XmlWriter: self.write_url_list(person.get_url_list(),index+1) for alt in person.get_parent_family_handle_list(): - if alt[1][0] != RelLib.Person.CHILD_BIRTH: + if alt[1][0] != RelLib.ChildRef.CHILD_BIRTH: mrel=' mrel="%s"' % _ConstXML.str_for_xml( _ConstXML.child_relations,alt[1]) else: mrel='' - if alt[2][0] != RelLib.Person.CHILD_BIRTH: + if alt[2][0] != RelLib.ChildRef.CHILD_BIRTH: frel=' frel="%s"' % _ConstXML.str_for_xml( _ConstXML.child_relations,alt[2]) else: diff --git a/src/RelLib/Makefile.am b/src/RelLib/Makefile.am index c46b1dad8..e6dcda216 100644 --- a/src/RelLib/Makefile.am +++ b/src/RelLib/Makefile.am @@ -44,7 +44,10 @@ pkgdata_PYTHON = \ _SourceRef.py\ _UrlBase.py\ _Url.py\ - _Witness.py + _Witness.py\ + _SourceBase.py\ + _RefBase.py\ + _ChildRef.py pkgpyexecdir = @pkgpyexecdir@/RelLib pkgpythondir = @pkgpythondir@/RelLib diff --git a/src/RelLib/_Address.py b/src/RelLib/_Address.py index d240bc9d2..075f55842 100644 --- a/src/RelLib/_Address.py +++ b/src/RelLib/_Address.py @@ -29,7 +29,9 @@ Address class for GRAMPS # GRAMPS modules # #------------------------------------------------------------------------- -from _PrivateSourceNote import PrivateSourceNote +from _PrivacyBase import PrivacyBase +from _SourceBase import SourceBase +from _NoteBase import NoteBase from _DateBase import DateBase from _LocationBase import LocationBase @@ -38,13 +40,15 @@ from _LocationBase import LocationBase # Address for Person/Repository # #------------------------------------------------------------------------- -class Address(PrivateSourceNote,DateBase,LocationBase): +class Address(PrivacyBase,SourceBase,NoteBase,DateBase,LocationBase): """Provides address information.""" def __init__(self,source=None): """Creates a new Address instance, copying from the source if provided""" - PrivateSourceNote.__init__(self,source) + PrivacyBase.__init__(self,source) + SourceBase.__init__(self,source) + NoteBase.__init__(self,source) DateBase.__init__(self,source) LocationBase.__init__(self,source) @@ -54,15 +58,19 @@ class Address(PrivateSourceNote,DateBase,LocationBase): self.street = "" def serialize(self): - return (PrivateSourceNote.serialize(self), + return (PrivacyBase.serialize(self), + SourceBase.serialize(self), + NoteBase.serialize(self), DateBase.serialize(self), self.city,self.state, self.country,self.postal,self.phone,self.street) def unserialize(self,data): - (psn,date,self.city,self.state, + (privacy,source_list,note,date,self.city,self.state, self.country,self.postal,self.phone,self.street) = data - PrivateSourceNote.unserialize(self,psn) + PrivacyBase.unserialize(self,privacy) + SourceBase.unserialize(self,source_list) + NoteBase.unserialize(self,note) DateBase.unserialize(self,date) return self diff --git a/src/RelLib/_Attribute.py b/src/RelLib/_Attribute.py index 09bee153f..30caec942 100644 --- a/src/RelLib/_Attribute.py +++ b/src/RelLib/_Attribute.py @@ -36,14 +36,16 @@ from warnings import warn # GRAMPS modules # #------------------------------------------------------------------------- -from _PrivateSourceNote import PrivateSourceNote +from _PrivacyBase import PrivacyBase +from _SourceBase import SourceBase +from _NoteBase import NoteBase #------------------------------------------------------------------------- # # Attribute for Person/Family/MediaObject/MediaRef # #------------------------------------------------------------------------- -class Attribute(PrivateSourceNote): +class Attribute(PrivacyBase,SourceBase,NoteBase): """Provides a simple key/value pair for describing properties. Used by the Person and Family objects to store descriptive information.""" @@ -57,8 +59,12 @@ class Attribute(PrivateSourceNote): SSN = 6 def __init__(self,source=None): - """creates a new Attribute object, copying from the source if provided""" - PrivateSourceNote.__init__(self,source) + """ + Creates a new Attribute object, copying from the source if provided. + """ + PrivacyBase.__init__(self,source) + SourceBase.__init__(self,source) + NoteBase.__init__(self,source) if source: self.type = source.type @@ -68,12 +74,16 @@ class Attribute(PrivateSourceNote): self.value = "" def serialize(self): - return (PrivateSourceNote.serialize(self), + return (PrivacyBase.serialize(self), + SourceBase.serialize(self), + NoteBase.serialize(self), self.type,self.value) def unserialize(self,data): - (psn,self.type,self.value) = data - PrivateSourceNote.unserialize(self,psn) + (privacy,source_list,note,self.type,self.value) = data + PrivateBase.unserialize(self,privacy) + SourceBase.unserialize(self,source_list) + NoteBase.unserialize(self,note) return self def get_text_data_list(self): diff --git a/src/RelLib/_ChildRef.py b/src/RelLib/_ChildRef.py new file mode 100644 index 000000000..7a7325498 --- /dev/null +++ b/src/RelLib/_ChildRef.py @@ -0,0 +1,147 @@ +# +# Gramps - a GTK+/GNOME based genealogy program +# +# Copyright (C) 2006 Donald N. Allingham +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# + +# $Id: _EventRef.py 6194 2006-03-22 23:03:57Z dallingham $ + +""" +Child Reference class for GRAMPS. +""" + +#------------------------------------------------------------------------- +# +# GRAMPS modules +# +#------------------------------------------------------------------------- +from _BaseObject import BaseObject +from _PrivacyBase import PrivacyBase +from _SourceBase import SourceBase +from _NoteBase import NoteBase +from _RefBase import RefBase + +#------------------------------------------------------------------------- +# +# Person References for Person/Family +# +#------------------------------------------------------------------------- +class ChildRef(BaseObject,PrivacyBase,SourceBase,NoteBase,RefBase): + """ + Person reference class. + + This class is for keeping information about how the person relates + to another person from the database, if not through family. + Examples would be: godparent, friend, etc. + """ + + CHILD_NONE = 0 + CHILD_BIRTH = 1 + CHILD_ADOPTED = 2 + CHILD_STEPCHILD = 3 + CHILD_SPONSORED = 4 + CHILD_FOSTER = 5 + CHILD_UNKNOWN = 6 + CHILD_CUSTOM = 7 + + def __init__(self,source=None): + BaseObject.__init__(self) + PrivacyBase.__init__(self,source) + SourceBase.__init__(self,source) + NoteBase.__init__(self,source) + RefBase.__init__(self) + if source: + self.frel = source.frel + self.mrel = source.mrel + else: + self.frel = (ChildRef.CHILD_BIRTH,'') + self.mrel = (ChildRef.CHILD_BIRTH,'') + + def serialize(self): + return (PrivacyBase.serialize(self), + SourceBase.serialize(self), + NoteBase.serialize(self), + RefBase.__init__(self), + self.frel,self.mrel) + + def unserialize(self,data): + (privacy,source_list,note,ref,self.frel,self.mrel) = data + PrivateBase.unserialize(self,privacy) + SourceBase.unserialize(self,source_list) + NoteBase.unserialize(self,note) + RefBase.unserialize(self,ref) + return self + + def get_text_data_list(self): + """ + Returns the list of all textual attributes of the object. + + @return: Returns the list of all textual attributes of the object. + @rtype: list + """ + return [self.rel] + + def get_text_data_child_list(self): + """ + Returns the list of child objects that may carry textual data. + + @return: Returns the list of child objects that may carry textual data. + @rtype: list + """ + check_list = self.source_list + if self.note: + check_list.append(self.note) + return check_list + + def get_referenced_handles(self): + """ + Returns the list of (classname,handle) tuples for all directly + referenced primary objects. + + @return: Returns the list of (classname,handle) tuples for referenced objects. + @rtype: list + """ + if self.ref: + return [('Person',self.ref)] + else: + return [] + + def get_handle_referents(self): + """ + Returns the list of child objects which may, directly or through + their children, reference primary objects.. + + @return: Returns the list of objects refereincing primary objects. + @rtype: list + """ + return self.source_list + + def set_mother_relation(self,rel): + """Sets relation between the person and mother""" + self.mrel = rel + + def get_mother_relation(self): + """Returns the relation between the person and mother""" + return self.mrel + + def set_father_relation(self,frel): + """Sets relation between the person and father""" + self.fmrel = rel + + def get_father_relation(self): + """Returns the relation between the person and father""" + return self.frel diff --git a/src/RelLib/_Event.py b/src/RelLib/_Event.py index 8a1aa4a6e..1eecbbfe5 100644 --- a/src/RelLib/_Event.py +++ b/src/RelLib/_Event.py @@ -37,7 +37,8 @@ from warnings import warn # #------------------------------------------------------------------------- from _PrimaryObject import PrimaryObject -from _SourceNote import SourceNote +from _SourceBase import SourceBase +from _NoteBase import NoteBase from _MediaBase import MediaBase from _DateBase import DateBase from _PlaceBase import PlaceBase @@ -47,7 +48,7 @@ from _PlaceBase import PlaceBase # Event class # #------------------------------------------------------------------------- -class Event(PrimaryObject,SourceNote,MediaBase,DateBase,PlaceBase): +class Event(PrimaryObject,SourceBase,NoteBase,MediaBase,DateBase,PlaceBase): """ Introduction ============ @@ -112,7 +113,8 @@ class Event(PrimaryObject,SourceNote,MediaBase,DateBase,PlaceBase): """ PrimaryObject.__init__(self,source) - SourceNote.__init__(self,source) + SourceBase.__init__(self,source) + NoteBase.__init__(self,source) MediaBase.__init__(self,source) DateBase.__init__(self,source) PlaceBase.__init__(self,source) @@ -145,7 +147,8 @@ class Event(PrimaryObject,SourceNote,MediaBase,DateBase,PlaceBase): return (self.handle, self.gramps_id, self.type, DateBase.serialize(self), self.description, self.place, self.cause, - SourceNote.serialize(self), + SourceBase.serialize(self), + NoteBase.serialize(self), MediaBase.serialize(self), self.change, self.marker, self.private) @@ -159,12 +162,13 @@ class Event(PrimaryObject,SourceNote,MediaBase,DateBase,PlaceBase): @type data: tuple """ (self.handle, self.gramps_id, self.type, date, - self.description, self.place, self.cause, sn, + self.description, self.place, self.cause, source_list, note, media_list, self.change, self.marker, self.private) = data DateBase.unserialize(self,date) MediaBase.unserialize(self,media_list) - SourceNote.unserialize(self,sn) + SourceBase.unserialize(self,source_list) + Note.unserialize(self,note) def _has_handle_reference(self,classname,handle): if classname == 'Place': diff --git a/src/RelLib/_EventRef.py b/src/RelLib/_EventRef.py index 22f94a859..5b5ff58c2 100644 --- a/src/RelLib/_EventRef.py +++ b/src/RelLib/_EventRef.py @@ -39,13 +39,14 @@ from warnings import warn from _BaseObject import BaseObject from _PrivacyBase import PrivacyBase from _NoteBase import NoteBase +from _RefBase import RefBase #------------------------------------------------------------------------- # # Event References for Person/Family # #------------------------------------------------------------------------- -class EventRef(BaseObject,PrivacyBase,NoteBase): +class EventRef(BaseObject,PrivacyBase,NoteBase,RefBase): """ Event reference class. @@ -71,19 +72,25 @@ class EventRef(BaseObject,PrivacyBase,NoteBase): BaseObject.__init__(self) PrivacyBase.__init__(self) NoteBase.__init__(self) + RefBase.__init__(self) if source: - self.ref = source.ref - self.role = source.role_int + self.role = source.role else: - self.ref = None self.role = (EventRef.CUSTOM,"") def serialize(self): - return (self.private,NoteBase.serialize(self),self.ref,self.role) + return ( + PrivacyBase.serialize(self), + NoteBase.serialize(self), + Refbase.serialize(self), + self.role + ) def unserialize(self,data): - (self.private,nb,self.ref,self.role) = data - NoteBase.unserialize(self,nb) + (privacy,note,ref,self.role) = data + PrivacyBase.unserialize(self,privacy) + NoteBase.unserialize(self,note) + RefBase.unserialize(self,ref) return self def get_text_data_list(self): @@ -119,18 +126,6 @@ class EventRef(BaseObject,PrivacyBase,NoteBase): else: return [] - def get_reference_handle(self): - """ - Returns the handle of the referred Event object. - """ - return self.ref - - def set_reference_handle(self,handle): - """ - Sets the handle of the referred Event object. - """ - self.ref = handle - def get_role(self): """ Returns the tuple corresponding to the preset role. diff --git a/src/RelLib/_Family.py b/src/RelLib/_Family.py index 6d8e0b718..f8dfeb87d 100644 --- a/src/RelLib/_Family.py +++ b/src/RelLib/_Family.py @@ -37,7 +37,8 @@ from warnings import warn # #------------------------------------------------------------------------- from _PrimaryObject import PrimaryObject -from _SourceNote import SourceNote +from _SourceBase import SourceBase +from _NoteBase import NoteBase from _MediaBase import MediaBase from _AttributeBase import AttributeBase from _EventRef import EventRef @@ -48,7 +49,8 @@ from _LdsOrdBase import LdsOrdBase # Family class # #------------------------------------------------------------------------- -class Family(PrimaryObject,SourceNote,MediaBase,AttributeBase,LdsOrdBase): +class Family(PrimaryObject,SourceBase,NoteBase,MediaBase,AttributeBase, + LdsOrdBase): """ Introduction ============ @@ -83,7 +85,8 @@ class Family(PrimaryObject,SourceNote,MediaBase,AttributeBase,LdsOrdBase): handle. """ PrimaryObject.__init__(self) - SourceNote.__init__(self) + SourceBase.__init__(self) + NoteBase.__init__(self) MediaBase.__init__(self) AttributeBase.__init__(self) LdsOrdBase.__init__(self) @@ -121,7 +124,8 @@ class Family(PrimaryObject,SourceNote,MediaBase,AttributeBase,LdsOrdBase): MediaBase.serialize(self), AttributeBase.serialize(self), LdsOrdBase.serialize(self), - SourceNote.serialize(self), + SourceBase.serialize(self), + NoteBase.serialize(self), self.change, self.marker, self.private) def unserialize(self, data): @@ -130,15 +134,16 @@ class Family(PrimaryObject,SourceNote,MediaBase,AttributeBase,LdsOrdBase): back into the data in a Family structure. """ (self.handle, self.gramps_id, self.father_handle, self.mother_handle, - self.child_list, self.type, - event_ref_list, media_list, attribute_list, lds_seal_list, sn, - self.change,self.marker, self.private) = data + self.child_list, self.type, event_ref_list, media_list, + attribute_list, lds_seal_list, source_list, note, + self.change, self.marker, self.private) = data self.event_ref_list = [EventRef().unserialize(er) for er in event_ref_list] MediaBase.unserialize(self,media_list) AttributeBase.unserialize(self,attribute_list) - SourceNote.unserialize(self,sn) + SourceBase.unserialize(self,source_list) + NoteBase.unserialize(self,note) LdsOrdBase.unserialize(self,lds_seal_list) def _has_handle_reference(self,classname,handle): diff --git a/src/RelLib/_LdsOrd.py b/src/RelLib/_LdsOrd.py index 4f0a3c5fe..b60456bc8 100644 --- a/src/RelLib/_LdsOrd.py +++ b/src/RelLib/_LdsOrd.py @@ -29,7 +29,8 @@ LDS Ordinance class for GRAMPS # GRAMPS modules # #------------------------------------------------------------------------- -from _SourceNote import SourceNote +from _SourceBase import SourceBase +from _NoteBase import NoteBase from _DateBase import DateBase from _PlaceBase import PlaceBase from _PrivacyBase import PrivacyBase @@ -39,7 +40,7 @@ from _PrivacyBase import PrivacyBase # LDS Ordinance class # #------------------------------------------------------------------------- -class LdsOrd(SourceNote,DateBase,PlaceBase,PrivacyBase): +class LdsOrd(SourceBase,NoteBase,DateBase,PlaceBase,PrivacyBase): """ Class that contains information about LDS Ordinances. LDS ordinances are similar to events, but have very specific additional @@ -70,7 +71,8 @@ class LdsOrd(SourceNote,DateBase,PlaceBase,PrivacyBase): def __init__(self,source=None): """Creates a LDS Ordinance instance""" - SourceNote.__init__(self,source) + SourceBase.__init__(self,source) + NoteBase.__init__(self,source) DateBase.__init__(self,source) PlaceBase.__init__(self,source) PrivacyBase.__init__(self,source) @@ -87,15 +89,17 @@ class LdsOrd(SourceNote,DateBase,PlaceBase,PrivacyBase): self.status = 0 def serialize(self): - return (SourceNote.serialize(self), + return (SourceBase.serialize(self), + NoteBase.serialize(self), DateBase.serialize(self), self.type,self.place, self.famc,self.temple,self.status) def unserialize(self,data): - (sn,date,self.type,self.place, + (source_list,note,date,self.type,self.place, self.famc,self.temple,self.status) = data - SourceNote.unserialize(self,sn) + SourceBase.unserialize(self,source_list) + NoteBase.unserialize(self,note) DateBase.unserialize(self,date) return self diff --git a/src/RelLib/_MediaObject.py b/src/RelLib/_MediaObject.py index 3a649250b..607413fac 100644 --- a/src/RelLib/_MediaObject.py +++ b/src/RelLib/_MediaObject.py @@ -37,7 +37,8 @@ import os # #------------------------------------------------------------------------- from _PrimaryObject import PrimaryObject -from _SourceNote import SourceNote +from _SourceBase import SourceBase +from _NoteBase import NoteBase from _DateBase import DateBase from _AttributeBase import AttributeBase @@ -46,7 +47,7 @@ from _AttributeBase import AttributeBase # MediaObject class # #------------------------------------------------------------------------- -class MediaObject(PrimaryObject,SourceNote,DateBase,AttributeBase): +class MediaObject(PrimaryObject,SourceBase,NoteBase,DateBase,AttributeBase): """ Containter for information about an image file, including location, description and privacy @@ -61,7 +62,8 @@ class MediaObject(PrimaryObject,SourceNote,DateBase,AttributeBase): @type source: MediaObject """ PrimaryObject.__init__(self,source) - SourceNote.__init__(self,source) + SourceBase.__init__(self,source) + NoteBase.__init__(self,source) DateBase.__init__(self,source) AttributeBase.__init__(self,source) @@ -96,7 +98,8 @@ class MediaObject(PrimaryObject,SourceNote,DateBase,AttributeBase): """ return (self.handle, self.gramps_id, self.path, self.mime, self.desc, AttributeBase.serialize(self), - SourceNote.serialize(self), + SourceBase.serialize(self), + NoteBase.serialize(self), self.change, DateBase.serialize(self), self.marker, self.private) @@ -109,11 +112,12 @@ class MediaObject(PrimaryObject,SourceNote,DateBase,AttributeBase): @type data: tuple """ (self.handle, self.gramps_id, self.path, self.mime, self.desc, - attribute_list, sn, self.change, + attribute_list, source_list, note, self.change, date, self.marker, self.private) = data AttributeBase.unserialize(self,attribute_list) - SourceNote.unserialize(self,sn) + SourceBase.unserialize(self,source_list) + NoteBase.unserialize(self,note) DateBase.unserialize(self,date) def get_text_data_list(self): diff --git a/src/RelLib/_MediaRef.py b/src/RelLib/_MediaRef.py index 3729bf0e4..25922e8ca 100644 --- a/src/RelLib/_MediaRef.py +++ b/src/RelLib/_MediaRef.py @@ -29,7 +29,11 @@ Media Reference class for GRAMPS # GRAMPS modules # #------------------------------------------------------------------------- -from _PrivateSourceNote import PrivateSourceNote +from _BaseObject import BaseObject +from _PrivacyBase import PrivacyBase +from _SourceBase import SourceBase +from _NoteBase import NoteBase +from _RefBase import RefBase from _AttributeBase import AttributeBase #------------------------------------------------------------------------- @@ -37,29 +41,38 @@ from _AttributeBase import AttributeBase # MediaObject References for Person/Place/Source # #------------------------------------------------------------------------- -class MediaRef(PrivateSourceNote,AttributeBase): +class MediaRef(BaseObject,PrivacyBase,SourceBase,NoteBase,RefBase, + AttributeBase): """Media reference class""" def __init__(self,source=None): - PrivateSourceNote.__init__(self,source) + BaseObject.__init__(self) + PrivacyBase.__init__(self,source) + SourceBase.__init__(self,source) + NoteBase.__init__(self,source) + RefBase.__init__(self) AttributeBase.__init__(self,source) if source: - self.ref = source.ref self.rect = source.rect else: - self.ref = None self.rect = None def serialize(self): - return (PrivateSourceNote.serialize(self), + return (PrivacyBase.serialize(self), + SourceBase.serialize(self), + NoteBase.serialize(self), AttributeBase.serialize(self), - self.ref,self.rect) + Refbase.serialize(self), + self.rect) def unserialize(self,data): - (psn,attribute_list,self.ref,self.rect) = data - PrivateSourceNote.unserialize(self,psn) + (privacy,source_list,note,attribute_list,ref,self.rect) = data + PrivateBase.unserialize(self,privacy) + SourceBase.unserialize(self,source_list) + NoteBase.unserialize(self,note) AttributeBase.unserialize(self,attribute_list) + RefBase.unserialize(self,ref) return self def get_text_data_child_list(self): @@ -113,9 +126,3 @@ class MediaRef(PrivateSourceNote,AttributeBase): def get_rectangle(self): """Returns the subsection of an image""" return self.rect - - def set_reference_handle(self,obj_id): - self.ref = obj_id - - def get_reference_handle(self): - return self.ref diff --git a/src/RelLib/_Name.py b/src/RelLib/_Name.py index 8951eab97..8d95cdb5e 100644 --- a/src/RelLib/_Name.py +++ b/src/RelLib/_Name.py @@ -36,7 +36,9 @@ from warnings import warn # GRAMPS modules # #------------------------------------------------------------------------- -from _PrivateSourceNote import PrivateSourceNote +from _PrivacyBase import PrivacyBase +from _SourceBase import SourceBase +from _NoteBase import NoteBase from _DateBase import DateBase #------------------------------------------------------------------------- @@ -44,7 +46,7 @@ from _DateBase import DateBase # Personal Name # #------------------------------------------------------------------------- -class Name(PrivateSourceNote,DateBase): +class Name(PrivacyBase,SourceBase,NoteBase,DateBase): """ Provides name information about a person. @@ -66,12 +68,18 @@ class Name(PrivateSourceNote,DateBase): def __init__(self,source=None,data=None): """creates a new Name instance, copying from the source if provided""" if data: - (psn,date, + (privacy,source_list,note,date, self.first_name,self.surname,self.suffix,self.title, self.type,self.prefix,self.patronymic,self.sname, self.group_as,self.sort_as,self.display_as) = data + PrivateBase.unserialize(self,privacy) + SourceBase.unserialize(self,source_list) + NoteBase.unserialize(self,note) + DateBase.unserialize(self,date) elif source: - PrivateSourceNote.__init__(self,source) + PrivacyBase.__init__(self,source) + SourceBase.__init__(self,source) + NoteBase.__init__(self,source) DateBase.__init__(self,source) self.first_name = source.first_name self.surname = source.surname @@ -85,7 +93,9 @@ class Name(PrivateSourceNote,DateBase): self.sort_as = source.sort_as self.display_as = source.display_as else: - PrivateSourceNote.__init__(self,source) + PrivacyBase.__init__(self,source) + SourceBase.__init__(self,source) + NoteBase.__init__(self,source) DateBase.__init__(self,source) self.first_name = "" self.surname = "" @@ -100,18 +110,22 @@ class Name(PrivateSourceNote,DateBase): self.display_as = self.DEF def serialize(self): - return (PrivateSourceNote.serialize(self), + return (PrivacyBase.serialize(self), + SourceBase.serialize(self), + NoteBase.serialize(self), DateBase.serialize(self), self.first_name,self.surname,self.suffix,self.title, self.type,self.prefix,self.patronymic,self.sname, self.group_as,self.sort_as,self.display_as) def unserialize(self,data): - (psn,date, + (privacy,source_list,note,date, self.first_name,self.surname,self.suffix,self.title, self.type,self.prefix,self.patronymic,self.sname, self.group_as,self.sort_as,self.display_as) = data - PrivateSourceNote.unserialize(self,psn) + PrivateBase.unserialize(self,privacy) + SourceBase.unserialize(self,source_list) + NoteBase.unserialize(self,note) DateBase.unserialize(self,date) return self diff --git a/src/RelLib/_Person.py b/src/RelLib/_Person.py index cc419dc46..a88c60bad 100644 --- a/src/RelLib/_Person.py +++ b/src/RelLib/_Person.py @@ -37,7 +37,8 @@ from warnings import warn # #------------------------------------------------------------------------- from _PrimaryObject import PrimaryObject -from _SourceNote import SourceNote +from _SourceBase import SourceBase +from _NoteBase import NoteBase from _MediaBase import MediaBase from _AttributeBase import AttributeBase from _AddressBase import AddressBase @@ -52,8 +53,8 @@ from _PersonRef import PersonRef # Person class # #------------------------------------------------------------------------- -class Person(PrimaryObject, SourceNote, - MediaBase, AttributeBase, AddressBase, UrlBase, LdsOrdBase): +class Person(PrimaryObject,SourceBase,NoteBase,MediaBase, + AttributeBase,AddressBase,UrlBase,LdsOrdBase): """ Introduction ============ @@ -81,15 +82,6 @@ class Person(PrimaryObject, SourceNote, MALE = 1 FEMALE = 0 - CHILD_NONE = 0 - CHILD_BIRTH = 1 - CHILD_ADOPTED = 2 - CHILD_STEPCHILD = 3 - CHILD_SPONSORED = 4 - CHILD_FOSTER = 5 - CHILD_UNKNOWN = 6 - CHILD_CUSTOM = 7 - def __init__(self, data=None): """ Creates a new Person instance. After initialization, most @@ -97,7 +89,8 @@ class Person(PrimaryObject, SourceNote, handle. """ PrimaryObject.__init__(self) - SourceNote.__init__(self) + SourceBase.__init__(self) + NoteBase.__init__(self) MediaBase.__init__(self) AttributeBase.__init__(self) AddressBase.__init__(self) @@ -163,11 +156,12 @@ class Person(PrimaryObject, SourceNote, AttributeBase.serialize(self), # 13 UrlBase.serialize(self), # 14 LdsOrdBase.serialize(self), # 15 - SourceNote.serialize(self), # 16 - self.change, # 17 - self.marker, # 18 - self.private, # 19 - [pr.serialize() for pr in self.person_ref_list] # 20 + SourceBase.serialize(self), # 16 + NoteBase.serialize(self), # 17 + self.change, # 18 + self.marker, # 19 + self.private, # 20 + [pr.serialize() for pr in self.person_ref_list] # 21 ) def unserialize(self, data): @@ -196,11 +190,12 @@ class Person(PrimaryObject, SourceNote, attribute_list, # 13 urls, # 14 lds_ord_list, # 15 - sn, # 16 - self.change, # 17 - self.marker, # 18 - self.private, # 19 - person_ref_list, # 20 + source_list, # 16 + note, # 17 + self.change, # 18 + self.marker, # 19 + self.private, # 20 + person_ref_list, # 21 ) = data self.primary_name.unserialize(primary_name) @@ -219,7 +214,8 @@ class Person(PrimaryObject, SourceNote, AddressBase.unserialize(self, address_list) AttributeBase.unserialize(self, attribute_list) UrlBase.unserialize(self, urls) - SourceNote.unserialize(self, sn) + SourceBase.unserialize(self, source_list) + NoteBase.unserialize(self, note) def _has_handle_reference(self, classname, handle): if classname == 'Event': @@ -230,8 +226,7 @@ class Person(PrimaryObject, SourceNote, elif classname == 'Person': return handle in [ref.ref for ref in self.person_ref_list] elif classname == 'Family': - return handle in self.family_list + \ - [item[0] for item in self.parent_family_list ] + return handle in (self.family_list + self.parent_family_list) elif classname == 'Place': return handle in self.lds_ord_list return False @@ -253,8 +248,8 @@ class Person(PrimaryObject, SourceNote, new_list = [ handle for handle in self.family_list \ if handle not in handle_list ] self.family_list = new_list - new_list = [ item for item in self.parent_family_list \ - if item[0] not in handle_list ] + new_list = [ handle for handle in self.parent_family_list \ + if handle not in handle_list ] self.parent_family_list = new_list elif classname == 'Place': for ordinance in self.lds_ord_list: @@ -283,13 +278,9 @@ class Person(PrimaryObject, SourceNote, ix = self.family_list.index(old_handle) self.family_list[ix] = new_handle - new_list = [] - for item in self.parent_family_list: - if item[0] == old_handle: - new_list.append((new_handle, item[1], item[2])) - else: - new_list.append(item) - self.parent_family_list = new_list + while old_handle in self.parent_family_list: + ix = self.parent_family_list.index(old_handle) + self.parent_family_list[ix] = new_handle elif classname == 'Place': for ordinance in self.lds_ord_list: if ordinance.place == old_handle: @@ -338,8 +329,8 @@ class Person(PrimaryObject, SourceNote, @return: Returns the list of (classname, handle) tuples for referenced objects. @rtype: list """ - return [('Family', handle) for handle in self.family_list - + [item[0] for item in self.parent_family_list]] + return [('Family', handle) for handle in + (self.family_list + self.parent_family_list)] def get_handle_referents(self): """ @@ -684,7 +675,7 @@ class Person(PrimaryObject, SourceNote, """ return self.parent_family_list - def add_parent_family_handle(self, family_handle, mrel, frel): + def add_parent_family_handle(self, family_handle): """ Adds the L{Family} handle to the Person instance's list of families in which it is a child. This is accomplished by @@ -698,29 +689,7 @@ class Person(PrimaryObject, SourceNote, @param family_handle: handle of the L{Family} to be added to the Person's L{Family} list. @type family_handle: str - @param mrel: relationship between the Person and its mother - @type mrel: tuple - @param frel: relationship between the Person and its father - @type frel: tuple """ - if not type(mrel) == tuple: - if mrel in range(0, 8): - warn( "add_parent_family_handle now takes a tuple", - DeprecationWarning, 2) - # Wrapper for old API - # remove when transitition done. - mrel = (mrel, '') - else: - assert type(mrel) == tuple - if not type(frel) == tuple: - if frel in range(0, 8): - warn( "add_parent_family_handle now takes a tuple", - DeprecationWarning, 2) - # Wrapper for old API - # remove when transitition done. - frel = (frel, '') - else: - assert type(frel) == tuple self.parent_family_list.append((family_handle, mrel, frel)) def clear_parent_family_handle_list(self): @@ -744,52 +713,11 @@ class Person(PrimaryObject, SourceNote, list. @rtype: tuple """ - for f in self.parent_family_list[:]: - if f[0] == family_handle: - self.parent_family_list.remove(f) - return f + if family_handle in self.parent_family_list: + self.parent_family_list.remove(family_handle) + return True else: - return None - - def change_parent_family_handle(self, family_handle, mrel, frel): - """ - Changes the relationships of the L{Family} handle in the Person - instance's list of families in which it is a child. The handle - is assumed to already be in the list. - - @param family_handle: handle of the L{Family} to be added to the - Person's L{Family} list. - @type family_handle: str - @param mrel: relationship between the Person and its mother - @type mrel: tuple - @param frel: relationship between the Person and its father - @type frel: tuple - """ - index=0 - for f in self.parent_family_list[:]: - if f[0] == family_handle: - self.parent_family_list[index] = (family_handle, mrel, frel) - return True - index += 1 - return False - - def get_parent_family(self, family_handle): - """ - Finds the L{Family} and relationships associated with passed - family_handle. - - @param family_handle: L{Family} handle used to search the parent - family list. - @type family_handle: str - @return: Returns a tuple consisting of the L{Family} handle, the - mother relationship, and father relationship - @rtype: tuple - """ - for f in self.parent_family_list: - if f[0] == family_handle: - return f - else: - return None + return False def set_main_parent_family_handle(self, family_handle): """ @@ -805,9 +733,9 @@ class Person(PrimaryObject, SourceNote, @return: Returns True if the assignment has successful @rtype: bool """ - f = self.remove_parent_family_handle(family_handle) - if f: - self.parent_family_list = [f] + self.parent_family_list + if family_handle in self.parent_family_list: + self.parent_family_list.remove(family_handle) + self.parent_family_list = [family_handle] + self.parent_family_list return True else: return False @@ -824,7 +752,7 @@ class Person(PrimaryObject, SourceNote, if len(self.parent_family_list) == 0: return None else: - return self.parent_family_list[0][0] + return self.parent_family_list[0] def add_person_ref(self,person_ref): """ diff --git a/src/RelLib/_PersonRef.py b/src/RelLib/_PersonRef.py index 8cb302dd2..4cc160ed8 100644 --- a/src/RelLib/_PersonRef.py +++ b/src/RelLib/_PersonRef.py @@ -29,14 +29,18 @@ Person Reference class for GRAMPS. # GRAMPS modules # #------------------------------------------------------------------------- -from _PrivateSourceNote import PrivateSourceNote +from _BaseObject import BaseObject +from _PrivacyBase import PrivacyBase +from _SourceBase import SourceBase +from _NoteBase import NoteBase +from _RefBase import RefBase #------------------------------------------------------------------------- # # Person References for Person/Family # #------------------------------------------------------------------------- -class PersonRef(PrivateSourceNote): +class PersonRef(BaseObject,PrivacyBase,SourceBase,NoteBase,RefBase): """ Person reference class. @@ -46,20 +50,29 @@ class PersonRef(PrivateSourceNote): """ def __init__(self,source=None): - PrivateSourceNote.__init__(self,source) + BaseObject.__init__(self) + PrivacyBase.__init__(self,source) + SourceBase.__init__(self,source) + NoteBase.__init__(self,source) + RefBase.__init__(self) if source: - self.ref = source.ref self.rel = source.rel else: - self.ref = None self.rel = '' def serialize(self): - return (PrivateSourceNote.serialize(self),self.ref,self.rel) + return (PrivacyBase.serialize(self), + SourceBase.serialize(self), + NoteBase.serialize(self), + RefBase.__init__(self), + self.rel) def unserialize(self,data): - (psn,self.ref,self.rel) = data - PrivateSourceNote.unserialize(self,psn) + (privacy,source_list,note,ref,self.rel) = data + PrivateBase.unserialize(self,privacy) + SourceBase.unserialize(self,source_list) + NoteBase.unserialize(self,note) + RefBase.unserialize(self,ref) return self def get_text_data_list(self): @@ -113,9 +126,3 @@ class PersonRef(PrivateSourceNote): def get_relation(self): """Returns the relation to a person""" return self.rel - - def set_reference_handle(self,obj_id): - self.ref = obj_id - - def get_reference_handle(self): - return self.ref diff --git a/src/RelLib/_Place.py b/src/RelLib/_Place.py index b89bcf989..bee7b7e10 100644 --- a/src/RelLib/_Place.py +++ b/src/RelLib/_Place.py @@ -30,7 +30,8 @@ Place object for GRAMPS # #------------------------------------------------------------------------- from _PrimaryObject import PrimaryObject -from _SourceNote import SourceNote +from _SourceBase import SourceBase +from _NoteBase import NoteBase from _MediaBase import MediaBase from _UrlBase import UrlBase from _Location import Location @@ -40,7 +41,7 @@ from _Location import Location # Place class # #------------------------------------------------------------------------- -class Place(PrimaryObject,SourceNote,MediaBase,UrlBase): +class Place(PrimaryObject,SourceBase,NoteBase,MediaBase,UrlBase): """ Contains information related to a place, including multiple address information (since place names can change with time), longitude, latitude, @@ -55,7 +56,8 @@ class Place(PrimaryObject,SourceNote,MediaBase,UrlBase): @type source: Place """ PrimaryObject.__init__(self,source) - SourceNote.__init__(self,source) + SourceBase.__init__(self,source) + NoteBase.__init__(self,source) MediaBase.__init__(self,source) UrlBase.__init__(self,source) if source: @@ -96,7 +98,8 @@ class Place(PrimaryObject,SourceNote,MediaBase,UrlBase): main_loc, [al.serialize() for al in self.alt_loc], UrlBase.serialize(self), MediaBase.serialize(self), - SourceNote.serialize(self), + SourceBase.serialize(self), + NoteBase.serialize(self), self.change, self.marker,self.private) def unserialize(self,data): @@ -109,7 +112,7 @@ class Place(PrimaryObject,SourceNote,MediaBase,UrlBase): @type data: tuple """ (self.handle, self.gramps_id, self.title, self.long, self.lat, - main_loc, alt_loc, urls, media_list, sn, + main_loc, alt_loc, urls, media_list, source_list, note, self.change, self.marker, self.private) = data if main_loc == None: @@ -119,7 +122,8 @@ class Place(PrimaryObject,SourceNote,MediaBase,UrlBase): self.alt_loc = [Location().unserialize(al) for al in alt_loc] UrlBase.unserialize(self,urls) MediaBase.unserialize(self,media_list) - SourceNote.unserialize(self,sn) + SourceBase.unserialize(self,source_list) + NoteBase.unserialize(self,note) def get_text_data_list(self): """ diff --git a/src/RelLib/_PrimaryObject.py b/src/RelLib/_PrimaryObject.py index 98d61c5f7..65fe4eb7a 100644 --- a/src/RelLib/_PrimaryObject.py +++ b/src/RelLib/_PrimaryObject.py @@ -39,7 +39,7 @@ import GrampsLocale #------------------------------------------------------------------------- from _BaseObject import BaseObject from _PrivacyBase import PrivacyBase -from _SourceNote import SourceNote +from _SourceBase import SourceBase from _MediaBase import MediaBase #------------------------------------------------------------------------- @@ -163,7 +163,7 @@ class PrimaryObject(BaseObject,PrivacyBase): @return: Returns whether the object has reference to this handle of this object type. @rtype: bool """ - if classname == 'Source' and isinstance(self,SourceNote): + if classname == 'Source' and isinstance(self,SourceBase): return self.has_source_reference(handle) elif classname == 'MediaObject' and isinstance(self,MediaBase): return self.has_media_reference(handle) @@ -179,7 +179,7 @@ class PrimaryObject(BaseObject,PrivacyBase): @param handle_list: The list of handles to be removed. @type handle_list: str """ - if classname == 'Source' and isinstance(self,SourceNote): + if classname == 'Source' and isinstance(self,SourceBase): self.remove_source_references(handle_list) elif classname == 'MediaObject' and isinstance(self,MediaBase): self.remove_media_references(handle_list) @@ -197,7 +197,7 @@ class PrimaryObject(BaseObject,PrivacyBase): @param new_handle: The handle to replace the old one with. @type new_handle: str """ - if classname == 'Source' and isinstance(self,SourceNote): + if classname == 'Source' and isinstance(self,SourceBase): self.replace_source_references(old_handle,new_handle) elif classname == 'MediaObject' and isinstance(self,MediaBase): self.replace_media_references(old_handle,new_handle) diff --git a/src/RelLib/_PrivacyBase.py b/src/RelLib/_PrivacyBase.py index 58a591939..78b8969c2 100644 --- a/src/RelLib/_PrivacyBase.py +++ b/src/RelLib/_PrivacyBase.py @@ -48,6 +48,13 @@ class PrivacyBase: else: self.private = False + def serialize(self): + return self.private + + def unserialize(self,data): + self.private = data + return self + def set_privacy(self,val): """ Sets or clears the privacy flag of the data diff --git a/src/RelLib/_PrivateSourceNote.py b/src/RelLib/_PrivateSourceNote.py index eb3f1ac70..fabcbaf2f 100644 --- a/src/RelLib/_PrivateSourceNote.py +++ b/src/RelLib/_PrivateSourceNote.py @@ -24,37 +24,12 @@ PrivateSourceNote class for GRAMPS """ -#------------------------------------------------------------------------- -# -# GRAMPS modules -# -#------------------------------------------------------------------------- -from _SourceNote import SourceNote -from _PrivacyBase import PrivacyBase - #------------------------------------------------------------------------- # # PrivateSourceNote class # #------------------------------------------------------------------------- class PrivateSourceNote(SourceNote,PrivacyBase): - """ - Same as SourceNote, plus the privacy capabilities. - """ - def __init__(self,source=None): - """ - Initialize a PrivateSourceNote. If the source is not None, then object - is initialized from values of the source object. - - @param source: Object used to initialize the new object - @type source: PrivateSourceNote - """ - SourceNote.__init__(self,source) - PrivacyBase.__init__(self,source) - - def serialize(self): - return (self.private,SourceNote.serialize(self)) - - def unserialize(self,data): - (self.private,sn) = data - SourceNote.unserialize(self,sn) + # FIXME: this class is only present to enable db upgrade + def __init__(self): + pass diff --git a/src/RelLib/_RefBase.py b/src/RelLib/_RefBase.py new file mode 100644 index 000000000..c0d8f6a03 --- /dev/null +++ b/src/RelLib/_RefBase.py @@ -0,0 +1,66 @@ +# +# Gramps - a GTK+/GNOME based genealogy program +# +# Copyright (C) 2006 Donald N. Allingham +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# + +# $Id: _EventRef.py 6194 2006-03-22 23:03:57Z dallingham $ + +""" +Base Reference class for GRAMPS. +""" + +#------------------------------------------------------------------------- +# +# RefBase class +# +#------------------------------------------------------------------------- +class RefBase: + """ + Base reference class to manage references to other objects. + + Any *Ref class should derive from this class. + """ + + def __init__(self,source=None): + if source: + self.ref = source.ref + else: + self.ref = None + + def serialize(self): + return self.ref + + def unserialize(self,data): + self.ref = str(data) + return self + + def get_referenced_handles(self): + """ + Returns the list of (classname,handle) tuples for all directly + referenced primary objects. + + @return: Returns the list of (classname,handle) tuples for referenced objects. + @rtype: list + """ + assert False, "Must be overridden in the derived class" + + def set_reference_handle(self,val): + self.ref = val + + def get_reference_handle(self): + return self.ref diff --git a/src/RelLib/_RepoRef.py b/src/RelLib/_RepoRef.py index 8d1499979..2733834a6 100644 --- a/src/RelLib/_RepoRef.py +++ b/src/RelLib/_RepoRef.py @@ -31,13 +31,14 @@ Repository Reference class for GRAMPS #------------------------------------------------------------------------- from _BaseObject import BaseObject from _NoteBase import NoteBase +from _RefBase import RefBase #------------------------------------------------------------------------- # # Repository Reference for Sources # #------------------------------------------------------------------------- -class RepoRef(BaseObject,NoteBase): +class RepoRef(BaseObject,NoteBase,RefBase): """ Repository reference class. """ @@ -59,23 +60,26 @@ class RepoRef(BaseObject,NoteBase): VIDEO = 13 def __init__(self,source=None): + BaseObject.__init__(self) NoteBase.__init__(self) + RefBase.__init__(self) if source: - self.ref = source.ref self.call_number = source.call_number self.media_type = source.media_type else: - self.ref = None self.call_number = "" self.media_type = (RepoRef.CUSTOM,"") def serialize(self): - return (NoteBase.serialize(self), - self.ref,self.call_number,self.media_type) + return ( + NoteBase.serialize(self), + Refbase.serialize(self), + self.call_number,self.media_type) def unserialize(self,data): - (note,self.ref,self.call_number,self.media_type) = data + (note,ref,self.call_number,self.media_type) = data NoteBase.unserialize(self,note) + RefBase.unserialize(self,ref) return self def get_text_data_list(self): @@ -111,12 +115,6 @@ class RepoRef(BaseObject,NoteBase): else: return [] - def set_reference_handle(self,ref): - self.ref = ref - - def get_reference_handle(self): - return self.ref - def set_call_number(self,number): self.call_number = number diff --git a/src/RelLib/_SourceBase.py b/src/RelLib/_SourceBase.py new file mode 100644 index 000000000..bfde995cf --- /dev/null +++ b/src/RelLib/_SourceBase.py @@ -0,0 +1,155 @@ +# +# Gramps - a GTK+/GNOME based genealogy program +# +# Copyright (C) 2006 Donald N. Allingham +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# + +# $Id: _SourceNote.py 5875 2006-02-03 22:03:53Z rshura $ + +""" +SourceBase class for GRAMPS +""" + +#------------------------------------------------------------------------- +# +# GRAMPS modules +# +#------------------------------------------------------------------------- +from _SourceRef import SourceRef + +#------------------------------------------------------------------------- +# +# SourceBase classes +# +#------------------------------------------------------------------------- +class SourceBase: + """ + Base class for storing source references + """ + + def __init__(self,source=None): + """ + Create a new SourceBase, copying from source if not None + + @param source: Object used to initialize the new object + @type source: SourceBase + """ + if source: + self.source_list = [SourceRef(sref) for sref in source.source_list] + else: + self.source_list = [] + + def serialize(self): + return [sref.serialize() for sref in self.source_list] + + def unserialize(self,data): + self.source_list = [SourceRef().unserialize(item) for item in data] + + def add_source_reference(self,src_ref) : + """ + Adds a source reference to this object. + + @param src_ref: The source reference to be added to the + SourceNote's list of source references. + @type src_ref: L{SourceRef} + """ + self.source_list.append(src_ref) + + def get_source_references(self) : + """ + Returns the list of source references associated with the object. + + @return: Returns the list of L{SourceRef} objects assocated with + the object. + @rtype: list + """ + return self.source_list + + def get_sourcref_child_list(self): + """ + Returns the list of child secondary objects that may refer sources. + + @return: Returns the list of child secondary child objects that may refer sources. + @rtype: list + """ + return [] + + def has_source_reference(self,src_handle) : + """ + Returns True if the object or any of it's child objects has reference + to this source handle. + + @param src_handle: The source handle to be checked. + @type src_handle: str + @return: Returns whether the object or any of it's child objects has reference to this source handle. + @rtype: bool + """ + for src_ref in self.source_list: + # Using direct access here, not the getter method -- efficiency! + if src_ref.ref == src_handle: + return True + + for item in self.get_sourcref_child_list(): + if item.has_source_reference(src_handle): + return True + + return False + + def remove_source_references(self,src_handle_list): + """ + Removes references to all source handles in the list + in this object and all child objects. + + @param src_handle_list: The list of source handles to be removed. + @type src_handle_list: list + """ + new_source_list = [ src_ref for src_ref in self.source_list \ + if src_ref.ref not in src_handle_list ] + self.source_list = new_source_list + + for item in self.get_sourcref_child_list(): + item.remove_source_references(src_handle_list) + + def replace_source_references(self,old_handle,new_handle): + """ + Replaces references to source handles in the list + in this object and all child objects. + + @param old_handle: The source handle to be replaced. + @type old_handle: str + @param new_handle: The source handle to replace the old one with. + @type new_handle: str + """ + refs_list = [ src_ref.ref for src_ref in self.source_list ] + n_replace = refs_list.count(old_handle) + for ix_replace in xrange(n_replace): + ix = refs_list.index(old_handle) + self.source_list[ix].ref = new_handle + refs_list[ix] = new_handle + + for item in self.get_sourcref_child_list(): + item.replace_source_references(old_handle,new_handle) + + def set_source_reference_list(self,src_ref_list) : + """ + Assigns the passed list to the object's list of source references. + + @param src_ref_list: List of source references to ba associated + with the object + @type src_ref_list: list of L{SourceRef} instances + """ + self.source_list = src_ref_list diff --git a/src/RelLib/_SourceNote.py b/src/RelLib/_SourceNote.py index 4970ed5a8..46707c09e 100644 --- a/src/RelLib/_SourceNote.py +++ b/src/RelLib/_SourceNote.py @@ -24,140 +24,12 @@ SourceNote class for GRAMPS """ -#------------------------------------------------------------------------- -# -# GRAMPS modules -# -#------------------------------------------------------------------------- -from _BaseObject import BaseObject -from _NoteBase import NoteBase -from _SourceRef import SourceRef - #------------------------------------------------------------------------- # # SourceNote classes # #------------------------------------------------------------------------- -class SourceNote(BaseObject,NoteBase): - """ - Base class for storing source references and notes - """ - - def __init__(self,source=None): - """ - Create a new SourceNote, copying from source if not None - - @param source: Object used to initialize the new object - @type source: SourceNote - """ - BaseObject.__init__(self) - NoteBase.__init__(self,source) - if source: - self.source_list = [SourceRef(sref) for sref in source.source_list] - else: - self.source_list = [] - - def serialize(self): - return (NoteBase.serialize(self), - [sref.serialize() for sref in self.source_list]) - - def unserialize(self,data): - (note,source_list) = data - NoteBase.unserialize(self,note) - self.source_list = [SourceRef().unserialize(item) - for item in source_list] - - def add_source_reference(self,src_ref) : - """ - Adds a source reference to this object. - - @param src_ref: The source reference to be added to the - SourceNote's list of source references. - @type src_ref: L{SourceRef} - """ - self.source_list.append(src_ref) - - def get_source_references(self) : - """ - Returns the list of source references associated with the object. - - @return: Returns the list of L{SourceRef} objects assocated with - the object. - @rtype: list - """ - return self.source_list - - def get_sourcref_child_list(self): - """ - Returns the list of child secondary objects that may refer sources. - - @return: Returns the list of child secondary child objects that may refer sources. - @rtype: list - """ - return [] - - def has_source_reference(self,src_handle) : - """ - Returns True if the object or any of it's child objects has reference - to this source handle. - - @param src_handle: The source handle to be checked. - @type src_handle: str - @return: Returns whether the object or any of it's child objects has reference to this source handle. - @rtype: bool - """ - for src_ref in self.source_list: - # Using direct access here, not the getter method -- efficiency! - if src_ref.ref == src_handle: - return True - - for item in self.get_sourcref_child_list(): - if item.has_source_reference(src_handle): - return True - - return False - - def remove_source_references(self,src_handle_list): - """ - Removes references to all source handles in the list - in this object and all child objects. - - @param src_handle_list: The list of source handles to be removed. - @type src_handle_list: list - """ - new_source_list = [ src_ref for src_ref in self.source_list \ - if src_ref.ref not in src_handle_list ] - self.source_list = new_source_list - - for item in self.get_sourcref_child_list(): - item.remove_source_references(src_handle_list) - - def replace_source_references(self,old_handle,new_handle): - """ - Replaces references to source handles in the list - in this object and all child objects. - - @param old_handle: The source handle to be replaced. - @type old_handle: str - @param new_handle: The source handle to replace the old one with. - @type new_handle: str - """ - refs_list = [ src_ref.ref for src_ref in self.source_list ] - n_replace = refs_list.count(old_handle) - for ix_replace in xrange(n_replace): - ix = refs_list.index(old_handle) - self.source_list[ix].ref = new_handle - refs_list[ix] = new_handle - - for item in self.get_sourcref_child_list(): - item.replace_source_references(old_handle,new_handle) - - def set_source_reference_list(self,src_ref_list) : - """ - Assigns the passed list to the object's list of source references. - - @param src_ref_list: List of source references to ba associated - with the object - @type src_ref_list: list of L{SourceRef} instances - """ - self.source_list = src_ref_list +class SourceNote: + # FIXME: this class is only present to enable db upgrade + def __init__(self): + pass diff --git a/src/RelLib/_SourceRef.py b/src/RelLib/_SourceRef.py index aa8b2bbd5..e42f8fa29 100644 --- a/src/RelLib/_SourceRef.py +++ b/src/RelLib/_SourceRef.py @@ -33,6 +33,7 @@ from _BaseObject import BaseObject from _DateBase import DateBase from _PrivacyBase import PrivacyBase from _NoteBase import NoteBase +from _RefBase import RefBase from _Note import Note #------------------------------------------------------------------------- @@ -40,7 +41,7 @@ from _Note import Note # Source References for all primary objects # #------------------------------------------------------------------------- -class SourceRef(BaseObject,DateBase,PrivacyBase,NoteBase): +class SourceRef(BaseObject,DateBase,PrivacyBase,NoteBase,RefBase): """Source reference, containing detailed information about how a referenced source relates to it""" @@ -56,28 +57,31 @@ class SourceRef(BaseObject,DateBase,PrivacyBase,NoteBase): DateBase.__init__(self,source) PrivacyBase.__init__(self,source) NoteBase.__init__(self,source) + RefBase.__init__(self) if source: self.confidence = source.confidence - self.ref = source.ref self.page = source.page self.text = source.text else: self.confidence = SourceRef.CONF_NORMAL - self.ref = None self.page = "" - self.note = Note() self.text = "" def serialize(self): - return (DateBase.serialize(self),self.private, + return (DateBase.serialize(self), + PrivacyBase.serialize(self), NoteBase.serialize(self), - self.confidence,self.ref,self.page,self.text) + self.confidence, + Refbase.serialize(self), + self.page,self.text) def unserialize(self,data): - (date,self.private,nb, - self.confidence,self.ref,self.page,self.text) = data + (date,privacy,note, + self.confidence,ref,self.page,self.text) = data DateBase.unserialize(self,date) - NoteBase.unserialize(self,nb) + PrivacyBase.unserialize(self,privacy) + NoteBase.unserialize(self,note) + RefBase.unserialize(self,ref) return self def get_text_data_list(self): diff --git a/src/RelLib/__init__.py b/src/RelLib/__init__.py index 2a705b33b..a303a2b13 100644 --- a/src/RelLib/__init__.py +++ b/src/RelLib/__init__.py @@ -41,6 +41,7 @@ from _RepoRef import RepoRef from _SourceRef import SourceRef from _Url import Url from _Witness import Witness +from _ChildRef import ChildRef # Primary objects from _PrimaryObject import PrimaryObject diff --git a/src/Utils.py b/src/Utils.py index 9fdaf9ea6..b3b06b5cf 100644 --- a/src/Utils.py +++ b/src/Utils.py @@ -72,17 +72,17 @@ def format_gender( type): return gender.get(type[0],_("Invalid")) child_relations = { - RelLib.Person.CHILD_NONE : _("None"), - RelLib.Person.CHILD_BIRTH : _("Birth"), - RelLib.Person.CHILD_ADOPTED : _("Adopted"), - RelLib.Person.CHILD_STEPCHILD : _("Stepchild"), - RelLib.Person.CHILD_SPONSORED : _("Sponsored"), - RelLib.Person.CHILD_FOSTER : _("Foster"), - RelLib.Person.CHILD_UNKNOWN : _("Unknown"), - RelLib.Person.CHILD_CUSTOM : _("Custom"), + RelLib.ChildRef.CHILD_NONE : _("None"), + RelLib.ChildRef.CHILD_BIRTH : _("Birth"), + RelLib.ChildRef.CHILD_ADOPTED : _("Adopted"), + RelLib.ChildRef.CHILD_STEPCHILD : _("Stepchild"), + RelLib.ChildRef.CHILD_SPONSORED : _("Sponsored"), + RelLib.ChildRef.CHILD_FOSTER : _("Foster"), + RelLib.ChildRef.CHILD_UNKNOWN : _("Unknown"), + RelLib.ChildRef.CHILD_CUSTOM : _("Custom"), } def format_child_relation( type): - if type[0] == RelLib.Person.CHILD_CUSTOM: + if type[0] == RelLib.ChildRef.CHILD_CUSTOM: return type[1] return child_relations.get(type[0],_("Invalid id %d ('%s')")%type) diff --git a/src/plugins/GraphViz.py b/src/plugins/GraphViz.py index bc7faf635..dba49de78 100644 --- a/src/plugins/GraphViz.py +++ b/src/plugins/GraphViz.py @@ -248,8 +248,8 @@ class GraphViz: family = self.database.get_family_from_handle(family_handle) father_handle = family.get_father_handle() mother_handle = family.get_mother_handle() - fadopted = frel != RelLib.Person.CHILD_BIRTH - madopted = mrel != RelLib.Person.CHILD_BIRTH + fadopted = frel != RelLib.ChildRef.CHILD_BIRTH + madopted = mrel != RelLib.ChildRef.CHILD_BIRTH famid = family.get_gramps_id().replace('-','_') if (self.show_families and (father_handle and person_dict.has_key(father_handle) or diff --git a/src/plugins/ImportGeneWeb.py b/src/plugins/ImportGeneWeb.py index 27665d37c..43b8800f9 100644 --- a/src/plugins/ImportGeneWeb.py +++ b/src/plugins/ImportGeneWeb.py @@ -263,7 +263,10 @@ class GeneWebParser: if child: self.current_family.add_child_handle(child.get_handle()) self.db.commit_family(self.current_family,self.trans) - child.add_parent_family_handle(self.current_family.get_handle(),RelLib.Person.CHILD_REL_BIRTH,RelLib.Person.CHILD_REL_BIRTH) + child.add_parent_family_handle( + self.current_family.get_handle(), + RelLib.ChildRef.CHILD_REL_BIRTH, + RelLib.ChildRef.CHILD_REL_BIRTH) if self.current_child_birthplace_handle: birth_handle = child.get_birth_handle() birth = self.db.get_event_from_handle(birth_handle) diff --git a/src/plugins/NavWebPage.py b/src/plugins/NavWebPage.py index 405b4cd7a..f76501eb8 100644 --- a/src/plugins/NavWebPage.py +++ b/src/plugins/NavWebPage.py @@ -1764,7 +1764,7 @@ class IndividualPage(BasePage): val) else: of.write(nameof(person,self.exclude_private)) - if rel != RelLib.Person.CHILD_BIRTH: + if rel != RelLib.ChildRef.CHILD_BIRTH: of.write('   (%s)' % Utils.format_child_relation(rel)) of.write('\n') diff --git a/src/plugins/TestcaseGenerator.py b/src/plugins/TestcaseGenerator.py index 411c3ebf5..6e265a165 100644 --- a/src/plugins/TestcaseGenerator.py +++ b/src/plugins/TestcaseGenerator.py @@ -520,7 +520,7 @@ class TestcaseGenerator(Tool.Tool): person2.add_family_handle(fam_h) self.db.commit_person(person2,self.trans) child = self.db.get_person_from_handle(child_h) - child.add_parent_family_handle(fam_h,(RelLib.Person.CHILD_BIRTH,''),(RelLib.Person.CHILD_BIRTH,'')) + child.add_parent_family_handle(fam_h,(RelLib.ChildRef.CHILD_BIRTH,''),(RelLib.ChildRef.CHILD_BIRTH,'')) self.db.commit_person(child,self.trans) self.commit_transaction() # COMMIT TRANSACTION STEP @@ -901,10 +901,10 @@ class TestcaseGenerator(Tool.Tool): fam.add_child_handle(child_h) self.db.commit_family(fam,self.trans) child = self.db.get_person_from_handle(child_h) - rel1 = (RelLib.Person.CHILD_BIRTH,'') + rel1 = (RelLib.ChildRef.CHILD_BIRTH,'') if randint(0,2) == 1: rel1 = self.rand_type(Utils.child_relations) - rel2 = (RelLib.Person.CHILD_BIRTH,'') + rel2 = (RelLib.ChildRef.CHILD_BIRTH,'') if randint(0,2) == 1: rel2 = self.rand_type(Utils.child_relations) child.add_parent_family_handle(fam_h, rel1, rel2) @@ -952,10 +952,10 @@ class TestcaseGenerator(Tool.Tool): person2 = self.db.get_person_from_handle(person2_h) person2.add_family_handle(fam_h) self.db.commit_person(person2,self.trans) - rel1 = (RelLib.Person.CHILD_BIRTH,'') + rel1 = (RelLib.ChildRef.CHILD_BIRTH,'') if randint(0,2) == 1: rel1 = self.rand_type(Utils.child_relations) - rel2 = (RelLib.Person.CHILD_BIRTH,'') + rel2 = (RelLib.ChildRef.CHILD_BIRTH,'') if randint(0,2) == 1: rel2 = self.rand_type(Utils.child_relations) child.add_parent_family_handle(fam_h, rel1, rel2)