Replace locale.strcoll with locale.strxfmt for performance and Python 3.0 compliance
svn: r12739
This commit is contained in:
88
src/Sort.py
88
src/Sort.py
@@ -76,6 +76,18 @@ class Sort(object):
|
||||
else:
|
||||
return locale.strcoll(fsn, ssn)
|
||||
|
||||
def by_last_name_key(self, first_id):
|
||||
"""Sort routine for comparing two last names. If last names are equal,
|
||||
uses the given name and suffix"""
|
||||
first = self.database.get_person_from_handle(first_id)
|
||||
|
||||
name1 = first.get_primary_name()
|
||||
|
||||
fsn = name1.get_surname()
|
||||
ffn = name1.get_first_name()
|
||||
fsu = name1.get_suffix()
|
||||
return locale.strxfrm(fsn + ffn + fsu)
|
||||
|
||||
def by_sorted_name(self, first_id, second_id):
|
||||
"""
|
||||
Sort routine for comparing two displayed names.
|
||||
@@ -89,6 +101,17 @@ class Sort(object):
|
||||
|
||||
return locale.strcoll(name1, name2)
|
||||
|
||||
def by_sorted_name_key(self, first_id):
|
||||
"""
|
||||
Sort routine for comparing two displayed names.
|
||||
"""
|
||||
|
||||
first = self.database.get_person_from_handle(first_id)
|
||||
|
||||
name1 = _nd.sorted(first)
|
||||
|
||||
return locale.strxfrm(name1)
|
||||
|
||||
def by_birthdate(self, first_id, second_id):
|
||||
"""Sort routine for comparing two people by birth dates. If the birth dates
|
||||
are equal, sorts by name"""
|
||||
@@ -115,6 +138,20 @@ class Sort(object):
|
||||
return self.by_last_name(first_id, second_id)
|
||||
return val
|
||||
|
||||
def by_birthdate_key(self, first_id):
|
||||
"""Sort routine for comparing two people by birth dates. If the birth dates
|
||||
are equal, sorts by name"""
|
||||
first = self.database.get_person_from_handle(first_id)
|
||||
|
||||
birth1 = ReportUtils.get_birth_or_fallback(self.database, first)
|
||||
if birth1:
|
||||
date1 = birth1.get_date_object()
|
||||
else:
|
||||
date1 = Date()
|
||||
|
||||
dsv1 = date1.get_sort_value()
|
||||
return "%08d" % dsv1 + self.by_last_name_key(first_id)
|
||||
|
||||
def by_date(self, a_id, b_id):
|
||||
"""Sort routine for comparing two events by their dates. """
|
||||
if not (a_id and b_id):
|
||||
@@ -123,6 +160,13 @@ class Sort(object):
|
||||
b_obj = self.database.get_event_from_handle(b_id)
|
||||
return cmp(a_obj.get_date_object(), b_obj.get_date_object())
|
||||
|
||||
def by_date_key(self, a_id):
|
||||
"""Sort routine for comparing two events by their dates. """
|
||||
if not a_id:
|
||||
return 0
|
||||
a_obj = self.database.get_event_from_handle(a_id)
|
||||
return a_obj.get_date_object()
|
||||
|
||||
def by_place_title(self, a_id, b_id):
|
||||
"""Sort routine for comparing two places. """
|
||||
if not (a_id and b_id):
|
||||
@@ -131,6 +175,13 @@ class Sort(object):
|
||||
b_obj = self.database.get_place_from_handle(b_id)
|
||||
return locale.strcoll(a_obj.title, b_obj.title)
|
||||
|
||||
def by_place_title_key(self, a_id):
|
||||
"""Sort routine for comparing two places. """
|
||||
if not a_id:
|
||||
return 0
|
||||
a_obj = self.database.get_place_from_handle(a_id)
|
||||
return locale.strxfrm(a_obj.title)
|
||||
|
||||
def by_event_place(self, a_id, b_id):
|
||||
"""Sort routine for comparing two events by their places. """
|
||||
if not (a_id and b_id):
|
||||
@@ -147,6 +198,15 @@ class Sort(object):
|
||||
plc_b_title = plc_b.title
|
||||
return locale.strcoll(plc_a_title, plc_b_title)
|
||||
|
||||
def by_event_place_key(self, a_id):
|
||||
"""Sort routine for comparing two events by their places. """
|
||||
if not a_id:
|
||||
return 0
|
||||
evt_a = self.database.get_event_from_handle(a_id)
|
||||
plc_a = self.database.get_place_from_handle(evt_a.get_place_handle())
|
||||
plc_a_title = plc_a.title if plc_a else ""
|
||||
return locale.strxfrml(plc_a_title)
|
||||
|
||||
def by_event_description(self, a_id, b_id):
|
||||
"""Sort routine for comparing two events by their descriptions. """
|
||||
if not (a_id and b_id):
|
||||
@@ -155,6 +215,13 @@ class Sort(object):
|
||||
evt_b = self.database.get_event_from_handle(b_id)
|
||||
return locale.strcoll(evt_a.get_description(), evt_b.get_description())
|
||||
|
||||
def by_event_description_key(self, a_id):
|
||||
"""Sort routine for comparing two events by their descriptions. """
|
||||
if not a_id:
|
||||
return 0
|
||||
evt_a = self.database.get_event_from_handle(a_id)
|
||||
return locale.strxfrm(evt_a.get_description())
|
||||
|
||||
def by_event_id(self, a_id, b_id):
|
||||
"""Sort routine for comparing two events by their ID. """
|
||||
if not (a_id and b_id):
|
||||
@@ -163,6 +230,13 @@ class Sort(object):
|
||||
evt_b = self.database.get_event_from_handle(b_id)
|
||||
return locale.strcoll(evt_a.get_gramps_id(), evt_b.get_gramps_id())
|
||||
|
||||
def by_event_id_key(self, a_id):
|
||||
"""Sort routine for comparing two events by their ID. """
|
||||
if not (a_id and b_id):
|
||||
return 0
|
||||
evt_a = self.database.get_event_from_handle(a_id)
|
||||
return locale.strxfrm(evt_a.get_gramps_id())
|
||||
|
||||
def by_event_type(self, a_id, b_id):
|
||||
"""Sort routine for comparing two events by their type. """
|
||||
if not (a_id and b_id):
|
||||
@@ -170,6 +244,13 @@ class Sort(object):
|
||||
evt_a = self.database.get_event_from_handle(a_id)
|
||||
evt_b = self.database.get_event_from_handle(b_id)
|
||||
return locale.strcoll(str(evt_a.get_type()), str(evt_b.get_type()))
|
||||
|
||||
def by_event_type_key(self, a_id):
|
||||
"""Sort routine for comparing two events by their type. """
|
||||
if not a_id:
|
||||
return 0
|
||||
evt_a = self.database.get_event_from_handle(a_id)
|
||||
return locale.strxfrm(str(evt_a.get_type()))
|
||||
|
||||
def by_media_title(self,a_id,b_id):
|
||||
"""Sort routine for comparing two media objects by their title. """
|
||||
@@ -179,3 +260,10 @@ class Sort(object):
|
||||
b = self.database.get_object_from_handle(b_id)
|
||||
return locale.strcoll(a.desc, b.desc)
|
||||
|
||||
def by_media_title_key(self, a_id):
|
||||
"""Sort routine for comparing two media objects by their title. """
|
||||
if not a_id:
|
||||
return False
|
||||
a = self.database.get_object_from_handle(a_id)
|
||||
return locale.strxfrm(a.desc)
|
||||
|
||||
|
Reference in New Issue
Block a user