From 13cdae6f22bdb155226a3dff8cb7610c28a904b3 Mon Sep 17 00:00:00 2001 From: Brian Matherly Date: Sat, 23 Jun 2007 15:43:19 +0000 Subject: [PATCH] Add "People missing parent" filter. svn: r8637 --- ChangeLog | 6 +++ src/Filters/Rules/Person/Makefile.am | 1 + src/Filters/Rules/Person/_MissingParent.py | 62 ++++++++++++++++++++++ src/Filters/Rules/Person/__init__.py | 2 + 4 files changed, 71 insertions(+) create mode 100644 src/Filters/Rules/Person/_MissingParent.py diff --git a/ChangeLog b/ChangeLog index fb98fcd9f..591acd314 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2007-06-23 Brian Matherly + * src/Filters/Rules/Person/__init__.py: + * src/Filters/Rules/Person/Makefile.am: + * src/Filters/Rules/Person/_MissingParent.py: + Add "People missing parent" filter. + 2007-06-23 Brian Matherly * src/ReportBase/_ReportDialog.py: Fix attribute error exceptions. diff --git a/src/Filters/Rules/Person/Makefile.am b/src/Filters/Rules/Person/Makefile.am index 5450126e6..91ef8c16c 100644 --- a/src/Filters/Rules/Person/Makefile.am +++ b/src/Filters/Rules/Person/Makefile.am @@ -49,6 +49,7 @@ pkgdata_PYTHON = \ _IsSpouseOfFilterMatch.py \ _IsWitness.py \ _MatchesFilter.py \ + _PissingParent.py \ _MultipleMarriages.py \ _NeverMarried.py \ _NoBirthdate.py \ diff --git a/src/Filters/Rules/Person/_MissingParent.py b/src/Filters/Rules/Person/_MissingParent.py new file mode 100644 index 000000000..61f2685b2 --- /dev/null +++ b/src/Filters/Rules/Person/_MissingParent.py @@ -0,0 +1,62 @@ +# +# Gramps - a GTK+/GNOME based genealogy program +# +# Copyright (C) 2007 Johan Gronqvist (johan.gronqvist@gmail.com) +# copyright (C) 2007 Brian G. Matherly +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# + + +#------------------------------------------------------------------------- +# +# Standard Python modules +# +#------------------------------------------------------------------------- +from gettext import gettext as _ + +#------------------------------------------------------------------------- +# +# GRAMPS modules +# +#------------------------------------------------------------------------- +from Filters.Rules._Rule import Rule + +#------------------------------------------------------------------------- +# "People with less than 2 parents" +#------------------------------------------------------------------------- +class MissingParent(Rule): + """People with less than two parents""" + + name = _('People missing parents') + description = _("Matches people that are children" + " in a family with less than two parents" + " or are not children in any family.") + category = _('Family filters') + + def apply(self,db,person): + families = person.get_parent_family_handle_list() + if families == []: + return True + for family_handle in person.get_parent_family_handle_list(): + family = db.get_family_from_handle(family_handle) + father_handle = family.get_father_handle() + mother_handle = family.get_mother_handle() + if not father_handle: + return True + if not mother_handle: + return True + return False + diff --git a/src/Filters/Rules/Person/__init__.py b/src/Filters/Rules/Person/__init__.py index e37c5a6d9..79ee52950 100644 --- a/src/Filters/Rules/Person/__init__.py +++ b/src/Filters/Rules/Person/__init__.py @@ -80,6 +80,7 @@ from _IsSiblingOfFilterMatch import IsSiblingOfFilterMatch from _IsSpouseOfFilterMatch import IsSpouseOfFilterMatch from _IsWitness import IsWitness from _MatchesFilter import MatchesFilter +from _MissingParent import MissingParent from _MultipleMarriages import MultipleMarriages from _NeverMarried import NeverMarried from _NoBirthdate import NoBirthdate @@ -147,6 +148,7 @@ editor_rule_list = [ HasCommonAncestorWith, HasCommonAncestorWithFilterMatch, MatchesFilter, + MissingParent, IsChildOfFilterMatch, IsParentOfFilterMatch, IsSpouseOfFilterMatch,