diff --git a/ChangeLog b/ChangeLog index d845b0558..472181332 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2007-11-23 Benny Malengier + * src/plugins/rel_nl.py: new half sibling types + * src/plugins/rel_it.py: new half sibling types + * src/Relationship.py: change the sibling type to distinguish + side of relation. Correct bug in sibling type determination. + 2007-11-23 Benny Malengier * src/DataViews/_RelationView.py: tooltip cleanup, see also #256 diff --git a/src/Relationship.py b/src/Relationship.py index 613697571..51ffa4c86 100644 --- a/src/Relationship.py +++ b/src/Relationship.py @@ -356,10 +356,11 @@ class RelationshipCalculator: REL_FAM_INLAW_PREFIX = 'L' # going to the partner. #sibling types - NORM_SIB = 0 - HALF_SIB = 1 - STEP_SIB = 2 - UNKNOWN_SIB = 3 + NORM_SIB = 0 # same birth parents + HALF_SIB_MOTHER = 1 # same mother, father known to be different + HALF_SIB_FATHER = 2 # same father, mother known to be different + STEP_SIB = 3 # birth parents known to be different + UNKNOWN_SIB = 4 # insufficient data to draw conclusion #sibling strings STEP= 'step' @@ -545,9 +546,11 @@ class RelationshipCalculator: if fatherorig and motherorig and fatherother and motherother: if fatherother == fatherorig and motherother == motherorig: return self.NORM_SIB - elif fatherother == fatherorig or motherother == motherorig: - #all birth parents are known, one - return self.HALF_SIB + elif fatherother == fatherorig: + #all birth parents are known, one + return self.HALF_SIB_FATHER + elif motherother == motherorig: + return self.HALF_SIB_MOTHER else : return self.STEP_SIB else: @@ -556,17 +559,29 @@ class RelationshipCalculator: orig_nb_par = self._get_nonbirth_parent_list(db, orig) if fatherother and fatherother in orig_nb_par: #the birth parent of other is non-birth of orig - return self.STEP_SIB + if motherother and motherother == motherorig: + return self.HALF_SIB_MOTHER + else: + return self.STEP_SIB if motherother and motherother in orig_nb_par: #the birth parent of other is non-birth of orig - return self.STEP_SIB + if fatherother and fatherother == fatherorig: + return self.HALF_SIB_FATHER + else: + return self.STEP_SIB other_nb_par = self._get_nonbirth_parent_list(db, other) if fatherorig and fatherorig in other_nb_par: #the one birth parent of other is non-birth of orig - return self.STEP_SIB + if motherorig and motherother == motherorig: + return self.HALF_SIB_MOTHER + else: + return self.STEP_SIB if motherorig and motherorig in other_nb_par: #the one birth parent of other is non-birth of orig - return self.STEP_SIB + if fatherother and fatherother == fatherorig: + return self.HALF_SIB_FATHER + else: + return self.STEP_SIB #there is an unknown birth parent, it could be that this is the # birth parent of the other person return self.UNKNOWN_SIB @@ -1606,7 +1621,8 @@ class RelationshipCalculator: """ if sib_type == self.NORM_SIB or sib_type == self.UNKNOWN_SIB: typestr = '' - elif sib_type == self.HALF_SIB: + elif sib_type == self.HALF_SIB_MOTHER \ + or sib_type == self.HALF_SIB_FATHER: typestr = self.HALF elif sib_type == self.STEP_SIB: typestr = self.STEP @@ -2059,7 +2075,9 @@ def _test(rc, onlybirth, inlawa, inlawb, printrelstr): print rel def _testsibling(rc): - vals = [(rc.NORM_SIB, 'sibling'), (rc.HALF_SIB, 'half sib'), + vals = [(rc.NORM_SIB, 'sibling'), + (rc.HALF_SIB_MOTHER, 'half sib mother side'), + (rc.HALF_SIB_FATHER, 'half sib father side'), (rc.STEP_SIB, 'step sib'), (rc.UNKNOWN_SIB, 'undetermined sib')] FMT = '%+50s' for gendr, strgen in [(gen.lib.Person.MALE, 'male'), diff --git a/src/plugins/rel_it.py b/src/plugins/rel_it.py index 9d2aee6a7..d73aff578 100644 --- a/src/plugins/rel_it.py +++ b/src/plugins/rel_it.py @@ -484,7 +484,9 @@ class RelationshipCalculator(Relationship.RelationshipCalculator): rel_str = 'la cognata' else: rel_str = 'il cognato/a' - elif sib_type == self.HALF_SIB or sib_type == self.STEP_SIB: + elif sib_type == self.HALF_SIB_FATHER \ + or sib_type == self.HALF_SIB_MOTHER \ + or sib_type == self.STEP_SIB: #Italian has no difference between half and step sibling! if not inlaw: if gender_b == gen.lib.Person.MALE: diff --git a/src/plugins/rel_nl.py b/src/plugins/rel_nl.py index ab8524cb8..5a5d2943c 100644 --- a/src/plugins/rel_nl.py +++ b/src/plugins/rel_nl.py @@ -514,7 +514,8 @@ class RelationshipCalculator(Relationship.RelationshipCalculator): """ if sib_type == self.NORM_SIB or sib_type == self.UNKNOWN_SIB: typestr = '' - elif sib_type == self.HALF_SIB: + elif sib_type == self.HALF_SIB_FATHER \ + or sib_type == self.HALF_SIB_MOTHER: typestr = self.HALF elif sib_type == self.STEP_SIB: typestr = self.STEP