* src/GenericFilter.py (IsDefaultPerson,IsSiblingOfFilterMatch):

Add filter rules.


svn: r4146
This commit is contained in:
Alex Roitman 2005-03-09 17:47:23 +00:00
parent 82b719bddc
commit 354f27f46a
2 changed files with 76 additions and 0 deletions

View File

@ -1,3 +1,7 @@
2005-03-09 Martin Hawlisch <Martin.Hawlisch@gmx.de>
* src/GenericFilter.py (IsDefaultPerson,IsSiblingOfFilterMatch):
Add filter rules.
2005-03-09 Don Allingham <don@gramps-project.org>
* srcNameEdit.py: assign date on close

View File

@ -288,6 +288,31 @@ class HasIdOf(Rule):
def apply(self,db,p_id):
return p_id == self.list[0]
#-------------------------------------------------------------------------
#
# HasIdOf
#
#-------------------------------------------------------------------------
class IsDefaultPerson(Rule):
"""Rule that checks for a default person in the database"""
labels = []
def name(self):
return 'Is default person'
def description(self):
return _("Matches the default person")
def category(self):
return _('General filters')
def apply(self,db,p_id):
person = db.get_default_person()
if person:
return p_id == person.get_handle()
return false
#-------------------------------------------------------------------------
#
# HasCompleteRecord
@ -565,6 +590,51 @@ class IsChildOfFilterMatch(Rule):
for child_handle in fam.get_child_handle_list():
self.map[child_handle] = 1
#-------------------------------------------------------------------------
#
# IsSiblingOfFilterMatch
#
#-------------------------------------------------------------------------
class IsSiblingOfFilterMatch(Rule):
"""Rule that checks for a person that is a sibling
of someone matched by a filter"""
labels = [ _('Filter name:') ]
def __init__(self,list):
Rule.__init__(self,list)
self.init = 0
self.map = {}
def name(self):
return 'Is a sibling of filter match'
def description(self):
return _("Matches the person that is a sibling of someone matched by a filter")
def category(self):
return _('Family filters')
def apply(self,db,p_id):
self.orig_id = p_id
self.db = db
if not self.init:
self.init = 1
filt = MatchesFilter(self.list)
for person_handle in db.get_person_handles(sort_handles=False):
if filt.apply (db, person_handle):
self.init_list (person_handle)
return self.map.has_key(p_id)
def init_list(self,p_id):
p = self.db.get_person_from_handle(p_id)
fam_id = p.get_main_parents_family_handle()
fam = self.db.get_family_from_handle(fam_id)
if fam:
for child_handle in fam.get_child_handle_list():
self.map[child_handle] = 1
#-------------------------------------------------------------------------
#
# IsDescendantFamilyOf
@ -1531,6 +1601,7 @@ class GenericFilter:
#-------------------------------------------------------------------------
tasks = {
unicode(_("Everyone")) : Everyone,
unicode(_("Is default person")) : IsDefaultPerson,
unicode(_("Has the Id")) : HasIdOf,
unicode(_("Has a name")) : HasNameOf,
unicode(_("Has the relationships")) : HasRelationship,
@ -1563,6 +1634,7 @@ tasks = {
unicode(_("Has the family attribute")) : HasFamilyAttribute,
unicode(_("Matches the filter named")) : MatchesFilter,
unicode(_("Is spouse of filter match")) : IsSpouseOfFilterMatch,
unicode(_("Is a sibling of filter match")) : IsSiblingOfFilterMatch,
unicode(_("Relationship path between two people")) : RelationshipPathBetween,
}