1# 2# Gramps - a GTK+/GNOME based genealogy program 3# 4# Copyright (C) 2002-2007 Donald N. Allingham 5# 6# This program is free software; you can redistribute it and/or modify 7# it under the terms of the GNU General Public License as published by 8# the Free Software Foundation; either version 2 of the License, or 9# (at your option) any later version. 10# 11# This program is distributed in the hope that it will be useful, 12# but WITHOUT ANY WARRANTY; without even the implied warranty of 13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14# GNU General Public License for more details. 15# 16# You should have received a copy of the GNU General Public License 17# along with this program; if not, write to the Free Software 18# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19# 20 21#------------------------------------------------------------------------- 22# 23# Standard Python modules 24# 25#------------------------------------------------------------------------- 26from ....const import GRAMPS_LOCALE as glocale 27_ = glocale.translation.gettext 28 29#------------------------------------------------------------------------- 30# 31# Gramps modules 32# 33#------------------------------------------------------------------------- 34from .. import Rule 35from ._matchesfilter import MatchesFilter 36 37#------------------------------------------------------------------------- 38# 39# IsSpouseOfFilterMatch 40# 41#------------------------------------------------------------------------- 42class IsSpouseOfFilterMatch(Rule): 43 """Rule that checks for a person married to someone matching 44 a filter""" 45 46 labels = [_('Filter name:')] 47 name = _('Spouses of <filter> match') 48 description = _("Matches people married to anybody matching a filter") 49 category = _('Family filters') 50 51 def prepare(self, db, user): 52 self.filt = MatchesFilter (self.list) 53 self.filt.requestprepare(db, user) 54 55 def apply(self,db,person): 56 for family_handle in person.get_family_handle_list (): 57 family = db.get_family_from_handle(family_handle) 58 if family: 59 for spouse_id in [family.get_father_handle(), 60 family.get_mother_handle()]: 61 if not spouse_id: 62 continue 63 if spouse_id == person.handle: 64 continue 65 if self.filt.apply (db, db.get_person_from_handle( spouse_id)): 66 return True 67 return False 68 69 def reset(self): 70 self.filt.requestreset() 71