* src/PeopleModel.py: sort based of "group as" value

* src/GrampsInMem.py: used "group as" value for surname list
* src/GrampsBSDDB.py: used "group as" value for surname list
* src/GrampsDbBase.py: accept "" and None for empty id values


svn: r3584
This commit is contained in:
Don Allingham
2004-09-29 03:19:01 +00:00
parent 008ef2f5d2
commit 2367107d89
8 changed files with 92 additions and 32 deletions

View File

@ -30,12 +30,13 @@ __version__ = "$Revision$"
# standard python modules
#
#-------------------------------------------------------------------------
from gettext import gettext as _
from re import compile
import os
import os.path
import time
import types
from gettext import gettext as _
#-------------------------------------------------------------------------
#
@ -1855,34 +1856,70 @@ class Name(DataObj):
self.sort_as = self.DEF
self.display_as = self.DEF
def get_group_as(self):
if self.group_as:
return self.group_as
else:
return self.surname
def set_group_as(self,name):
"""
Sets the grouping name for a person. Normally, this is the person's
surname. However, some locales group equivalent names (e.g. Ivanova
and Ivanov in Russian are usually considered equivalent.
"""
if name == self.surname:
self.group_as = ""
else:
self.group_as = name
def get_group_as(self):
"""
Returns the grouping name, which is used to group equivalent surnames.
"""
if self.group_as:
return self.group_as
else:
return self.surname
def set_sort_as(self,value):
"""
Specifies the sorting method for the specified name. Typically the
locale's default should be used. However, there may be names where
a specific sorting structure is desired for a name.
"""
self.sort_as = value
def get_sort_as(self):
"""
Returns the selected sorting method for the name. The options are
DEF (default for the current locale), LNFN (last name, first name),
or FNLN (first name, last name).
"""
return self.sort_as
def set_display_as(self,value):
"""
Specifies the display format for the specified name. Typically the
locale's default should be used. However, there may be names where
a specific display format is desired for a name.
"""
self.display_as = value
def get_display_as(self):
"""
Returns the selected display format for the name. The options are
DEF (default for the current locale), LNFN (last name, first name),
or FNLN (first name, last name).
"""
return self.display_as
def get_surname_prefix(self):
"""
Returns the prefix (or article) of a surname. The prefix is not
used for sorting or grouping.
"""
return self.prefix
def set_surname_prefix(self,val):
"""
Sets the prefix (or article) of a surname. Examples of articles
would be 'de' or 'van'.
"""
self.prefix = val
def set_type(self,type):
@ -1944,60 +1981,76 @@ class Name(DataObj):
def get_name(self):
"""returns a name string built from the components of the Name
instance, in the form of surname, Firstname"""
if self.patronymic:
first = "%s %s" % (self.first_name, self.patronymic)
else:
first = self.first_name
if self.suffix:
if self.prefix:
return "%s %s, %s %s" % (self.prefix, self.surname, self.first_name, self.suffix)
return "%s %s, %s %s" % (self.prefix, self.surname, first, self.suffix)
else:
return "%s, %s %s" % (self.surname, self.first_name, self.suffix)
return "%s, %s %s" % (self.surname, first, self.suffix)
else:
if self.prefix:
return "%s %s, %s" % (self.prefix,self.surname, self.first_name)
return "%s %s, %s" % (self.prefix,self.surname, first)
else:
return "%s, %s" % (self.surname, self.first_name)
return "%s, %s" % (self.surname, first)
def get_upper_name(self):
"""returns a name string built from the components of the Name
instance, in the form of surname, Firstname"""
if self.patronymic:
first = "%s %s" % (self.first_name, self.patronymic)
else:
first = self.first_name
if self.suffix:
if self.prefix:
return "%s %s, %s %s" % (self.prefix.upper(), self.surname.upper(), self.first_name, self.suffix)
return "%s %s, %s %s" % (self.prefix.upper(), self.surname.upper(), first, self.suffix)
else:
return "%s, %s %s" % (self.surname.upper(), self.first_name, self.suffix)
return "%s, %s %s" % (self.surname.upper(), first, self.suffix)
else:
if self.prefix:
return "%s %s, %s" % (self.prefix.upper(), self.surname.upper(), self.first_name)
return "%s %s, %s" % (self.prefix.upper(), self.surname.upper(), first)
else:
return "%s, %s" % (self.surname.upper(), self.first_name)
return "%s, %s" % (self.surname.upper(), first)
def get_regular_name(self):
"""returns a name string built from the components of the Name
instance, in the form of Firstname surname"""
if self.patronymic:
first = "%s %s" % (self.first_name, self.patronymic)
else:
first = self.first_name
if (self.suffix == ""):
if self.prefix:
return "%s %s %s" % (self.first_name, self.prefix, self.surname)
return "%s %s %s" % (first, self.prefix, self.surname)
else:
return "%s %s" % (self.first_name, self.surname)
return "%s %s" % (first, self.surname)
else:
if self.prefix:
return "%s %s %s, %s" % (self.first_name, self.prefix, self.surname, self.suffix)
return "%s %s %s, %s" % (first, self.prefix, self.surname, self.suffix)
else:
return "%s %s, %s" % (self.first_name, self.surname, self.suffix)
return "%s %s, %s" % (first, self.surname, self.suffix)
def get_regular_upper_name(self):
"""returns a name string built from the components of the Name
instance, in the form of Firstname surname"""
if self.patronymic:
first = "%s %s" % (self.first_name, self.patronymic)
else:
first = self.first_name
if (self.suffix == ""):
if self.prefix:
return "%s %s %s" % (self.first_name, self.prefix.upper(), self.surname.upper())
return "%s %s %s" % (first, self.prefix.upper(), self.surname.upper())
else:
return "%s %s" % (self.first_name, self.surname.upper())
return "%s %s" % (first, self.surname.upper())
else:
if self.prefix:
return "%s %s %s, %s" % (self.first_name, self.prefix.upper(), self.surname.upper(), self.suffix)
return "%s %s %s, %s" % (first, self.prefix.upper(), self.surname.upper(), self.suffix)
else:
return "%s %s, %s" % (self.first_name, self.surname.upper(), self.suffix)
return "%s %s, %s" % (first, self.surname.upper(), self.suffix)
def are_equal(self,other):
"""compares to names to see if they are equal, return 0 if they