Fix for kinship report
svn: r9925
This commit is contained in:
parent
77af7ed092
commit
2478b142b3
@ -55,6 +55,13 @@ _cousin_level = [ "", "kusin",
|
||||
"tjugosjumänning","tjugoåttamänning","tjugoniomänning",
|
||||
"trettiomänning" ]
|
||||
|
||||
_children_level = 20
|
||||
|
||||
_level_name = [ "", "första", "andra", "tredje", "fjärde", "femte",
|
||||
"sjätte", "sjunde", "åttonde", "nionde", "tionde",
|
||||
"elfte", "tolfte", "trettonde", "fjortonde", "femtonde",
|
||||
"sextonde", "sjuttonde", "artonde", "nittonde", "tjugonde" ]
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
@ -126,7 +133,7 @@ class RelationshipCalculator(Relationship.RelationshipCalculator):
|
||||
if person_gender == gen.lib.Person.UNKNOWN:
|
||||
result[-1] = 'förälder'
|
||||
if step != '' and len(result)==1:
|
||||
#Preceed with syep prefix of fatrher/mother
|
||||
#Preceed with step prefix of father/mother
|
||||
result[0]=self.STEP + result[0]
|
||||
if inlaw != '':
|
||||
#Preceed with inlaw prefix
|
||||
@ -158,7 +165,7 @@ class RelationshipCalculator(Relationship.RelationshipCalculator):
|
||||
#Preceed with inlaw prefix
|
||||
result[-1]= 'svär' + result[-1]
|
||||
if len(result)>1 and len(result) % 2 == 0 and (person_gender == gen.lib.Person.UNKNOWN or inlaw != ''):
|
||||
# Correct string "-2" with genitive s and add a space to get correctSwedish, if even number in result
|
||||
# Correct string "-2" with genitive s and add a space to get correct Swedish, if even number in result
|
||||
result[-2] = result[-2] + 's '
|
||||
return self.pair_up(result,step)
|
||||
|
||||
@ -267,7 +274,6 @@ class RelationshipCalculator(Relationship.RelationshipCalculator):
|
||||
AND SAME METHODS EXIST (get_uncle, get_aunt, get_sibling)
|
||||
"""
|
||||
|
||||
#print "S:",sib_type,gender_a, gender_b,in_law_a, in_law_b
|
||||
if sib_type == self.NORM_SIB or sib_type == self.UNKNOWN_SIB:
|
||||
typestr = ''
|
||||
elif sib_type == self.HALF_SIB_MOTHER \
|
||||
@ -284,6 +290,101 @@ class RelationshipCalculator(Relationship.RelationshipCalculator):
|
||||
rel_str = "syskon"
|
||||
return typestr + rel_str
|
||||
|
||||
# kinship report
|
||||
|
||||
def _get_cousin_kinship(self,Ga):
|
||||
rel_str = self._get_cousin(Ga-1,False,'')
|
||||
if Ga == 2 :
|
||||
rel_str = rel_str + "er"
|
||||
else:
|
||||
rel_str = rel_str + "ar"
|
||||
return rel_str
|
||||
|
||||
|
||||
def get_plural_relationship_string(self, Ga, Gb):
|
||||
"""
|
||||
Provides a string that describes the relationsip between a person, and
|
||||
a group of people with the same relationship. E.g. "grandparents" or
|
||||
"children".
|
||||
|
||||
Ga and Gb can be used to mathematically calculate the relationship.
|
||||
See the Wikipedia entry for more information:
|
||||
http://en.wikipedia.org/wiki/Cousin#Mathematical_definitions
|
||||
|
||||
@param Ga: The number of generations between the main person and the
|
||||
common ancestor.
|
||||
@type Ga: int
|
||||
@param Gb: The number of generations between the group of people and the
|
||||
common ancestor
|
||||
@type Gb: int
|
||||
@returns: A string describing the relationship between the person and
|
||||
the group.
|
||||
@rtype: str
|
||||
"""
|
||||
|
||||
rel_str = "avlägsna släktingar"
|
||||
if Ga == 0:
|
||||
result=[]
|
||||
# These are descendants
|
||||
if Gb < _children_level:
|
||||
for AntBarn in range(Gb):
|
||||
result.append("barn")
|
||||
rel_str = self.pair_up(result,'')
|
||||
else:
|
||||
rel_str = "avlägsna ättlingar"
|
||||
elif Gb == 0:
|
||||
# These are parents/grand parents
|
||||
if Ga < len(_level_name):
|
||||
if Ga == 1:
|
||||
rel_str = "föräldrar"
|
||||
else:
|
||||
rel_str = "far- och morföräldrar i %s generationen" % _level_name[Ga]
|
||||
else:
|
||||
rel_str = "avlägsna förfäder"
|
||||
elif Gb == 1:
|
||||
# These are siblings/aunts/uncles
|
||||
if Ga < len(_level_name):
|
||||
if Ga == 1:
|
||||
rel_str = "syskon"
|
||||
else:
|
||||
rel_str = "förfäders syskon i %s generationen" % _level_name[Ga-1]
|
||||
else:
|
||||
rel_str = "avlägsna farbröder/morbröder/fastrar/mostrar"
|
||||
elif Ga == 1:
|
||||
# These are nieces/nephews
|
||||
if Gb < len(_level_name):
|
||||
result = []
|
||||
result.append("syskonbarn")
|
||||
for AntBarn in range(Gb-2):
|
||||
result.append("barn")
|
||||
rel_str = self.pair_up(result,'')
|
||||
else:
|
||||
rel_str = "avlägsna brorsöner/systersöner/brorsdöttrar/systerdöttrar"
|
||||
elif Ga > 1 and Ga == Gb:
|
||||
# These are cousins in the same generation
|
||||
rel_str = self._get_cousin_kinship(Ga)
|
||||
elif Ga > 1 and Ga > Gb:
|
||||
# These are cousins in different generations with the second person
|
||||
# being in a higher generation from the common ancestor than the
|
||||
# first person.
|
||||
if Gb <= len(_level_name):
|
||||
rel_str = "förfäders " + self._get_cousin_kinship(Ga) + " i "+ _level_name[Gb] + " generationen"
|
||||
else:
|
||||
rel_str = "avlägsna kusiner"
|
||||
elif Gb > 1 and Gb > Ga:
|
||||
# These are cousins in different generations with the second person
|
||||
# being in a lower generation from the common ancestor than the
|
||||
# first person.
|
||||
if Ga <= len(_level_name):
|
||||
result = []
|
||||
result.append(self._get_cousin(Ga-1,False,''))
|
||||
for AntBarn in range(Gb-Ga):
|
||||
result.append("barn")
|
||||
rel_str = self.pair_up(result,'')
|
||||
else:
|
||||
rel_str = "avlägsna kusiner"
|
||||
return rel_str
|
||||
|
||||
def get_single_relationship_string(self, Ga, Gb, gender_a, gender_b,
|
||||
reltocommon_a, reltocommon_b,
|
||||
only_birth=True,
|
||||
@ -292,7 +393,7 @@ class RelationshipCalculator(Relationship.RelationshipCalculator):
|
||||
Provides a string that describes the relationsip between a person, and
|
||||
another person. E.g. "grandparent" or "child".
|
||||
To be used as: 'person b is the grandparent of a', this will
|
||||
be in translation string :"avlägs %snephews/nieces%s" % (step, inlaw)
|
||||
be in translation string :
|
||||
'person b is the %(relation)s of a'
|
||||
Note that languages with gender should add 'the' inside the
|
||||
translation, so eg in french:
|
||||
@ -366,7 +467,7 @@ class RelationshipCalculator(Relationship.RelationshipCalculator):
|
||||
2/for better determination of siblings, use if Ga=1=Gb
|
||||
get_sibling_relationship_string
|
||||
"""
|
||||
|
||||
|
||||
if only_birth:
|
||||
step = ''
|
||||
else:
|
||||
@ -376,8 +477,6 @@ class RelationshipCalculator(Relationship.RelationshipCalculator):
|
||||
inlaw = self.INLAW
|
||||
else:
|
||||
inlaw = ''
|
||||
#print "N:",Ga,Gb,gender_a, gender_b,only_birth,in_law_a, in_law_b
|
||||
#print "Z:",reltocommon_a, reltocommon_b
|
||||
rel_str = "avlägsen %s-släkting eller %s släkting" % (step,inlaw)
|
||||
if Ga == 0:
|
||||
# b is descendant of a
|
||||
|
Loading…
Reference in New Issue
Block a user