* src/Filters/Rules/*: Add object-specific rules.
svn: r6529
This commit is contained in:
18
src/Filters/Rules/Event/Makefile.am
Normal file
18
src/Filters/Rules/Event/Makefile.am
Normal file
@@ -0,0 +1,18 @@
|
||||
# This is the src/Filters/Rules/Event level Makefile for Gramps
|
||||
|
||||
pkgdatadir = $(datadir)/@PACKAGE@/Filters/Rules/Event
|
||||
|
||||
pkgdata_PYTHON = \
|
||||
__init__.py
|
||||
|
||||
pkgpyexecdir = @pkgpyexecdir@/Filters/Rules/Event
|
||||
pkgpythondir = @pkgpythondir@/Filters/Rules/Event
|
||||
|
||||
# Clean up all the byte-compiled files
|
||||
MOSTLYCLEANFILES = *pyc *pyo
|
||||
|
||||
GRAMPS_PY_MODPATH = "../../../"
|
||||
|
||||
pycheck:
|
||||
(export PYTHONPATH=$(GRAMPS_PY_MODPATH); \
|
||||
pychecker $(pkgdata_PYTHON));
|
27
src/Filters/Rules/Event/__init__.py
Normal file
27
src/Filters/Rules/Event/__init__.py
Normal file
@@ -0,0 +1,27 @@
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2002-2006 Donald N. Allingham
|
||||
#
|
||||
# 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
|
||||
#
|
||||
|
||||
# $Id: __init__.py 6521 2006-05-03 01:02:54Z rshura $
|
||||
|
||||
"""
|
||||
Package providing filter rules for GRAMPS.
|
||||
"""
|
||||
|
||||
__author__ = "Don Allingham"
|
18
src/Filters/Rules/Family/Makefile.am
Normal file
18
src/Filters/Rules/Family/Makefile.am
Normal file
@@ -0,0 +1,18 @@
|
||||
# This is the src/Filters/Rules/Family level Makefile for Gramps
|
||||
|
||||
pkgdatadir = $(datadir)/@PACKAGE@/Filters/Rules/Family
|
||||
|
||||
pkgdata_PYTHON = \
|
||||
__init__.py
|
||||
|
||||
pkgpyexecdir = @pkgpyexecdir@/Filters/Rules/Family
|
||||
pkgpythondir = @pkgpythondir@/Filters/Rules/Family
|
||||
|
||||
# Clean up all the byte-compiled files
|
||||
MOSTLYCLEANFILES = *pyc *pyo
|
||||
|
||||
GRAMPS_PY_MODPATH = "../../../"
|
||||
|
||||
pycheck:
|
||||
(export PYTHONPATH=$(GRAMPS_PY_MODPATH); \
|
||||
pychecker $(pkgdata_PYTHON));
|
27
src/Filters/Rules/Family/__init__.py
Normal file
27
src/Filters/Rules/Family/__init__.py
Normal file
@@ -0,0 +1,27 @@
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2002-2006 Donald N. Allingham
|
||||
#
|
||||
# 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
|
||||
#
|
||||
|
||||
# $Id: __init__.py 6521 2006-05-03 01:02:54Z rshura $
|
||||
|
||||
"""
|
||||
Package providing filter rules for GRAMPS.
|
||||
"""
|
||||
|
||||
__author__ = "Don Allingham"
|
@@ -1,64 +1,12 @@
|
||||
# This is the src/Filters/Rules level Makefile for Gramps
|
||||
|
||||
SUBDIRS = Person Family Event Place Source Media Repository
|
||||
|
||||
pkgdatadir = $(datadir)/@PACKAGE@/Filters/Rules
|
||||
|
||||
pkgdata_PYTHON = \
|
||||
_Disconnected.py \
|
||||
_Everyone.py \
|
||||
_FamilyWithIncompleteEvent.py \
|
||||
_HasAttribute.py \
|
||||
_HasBirth.py \
|
||||
_HasCommonAncestorWith.py \
|
||||
_HasCommonAncestorWithFilterMatch.py \
|
||||
_HasCompleteRecord.py \
|
||||
_HasDeath.py \
|
||||
_HasEvent.py \
|
||||
_HasFamilyAttribute.py \
|
||||
_HasFamilyEvent.py \
|
||||
_HasIdOf.py \
|
||||
_HasNameOf.py \
|
||||
_HasNote.py \
|
||||
_HasNoteMatchingSubstringOf.py \
|
||||
_HasRelationship.py \
|
||||
_HasSourceOf.py \
|
||||
_HasTextMatchingRegexpOf.py \
|
||||
_HasTextMatchingSubstringOf.py \
|
||||
_HasUnknownGender.py \
|
||||
_HaveAltFamilies.py \
|
||||
_HaveChildren.py \
|
||||
_HavePhotos.py \
|
||||
_IncompleteNames.py \
|
||||
_IsAncestorOf.py \
|
||||
_IsAncestorOfFilterMatch.py \
|
||||
_IsBookmarked.py \
|
||||
_IsChildOfFilterMatch.py \
|
||||
_IsDefaultPerson.py \
|
||||
_IsDescendantFamilyOf.py \
|
||||
_IsDescendantOf.py \
|
||||
_IsDescendantOfFilterMatch.py \
|
||||
_IsFemale.py \
|
||||
_IsLessThanNthGenerationAncestorOf.py \
|
||||
_IsLessThanNthGenerationAncestorOfBookmarked.py \
|
||||
_IsLessThanNthGenerationAncestorOfDefaultPerson.py \
|
||||
_IsLessThanNthGenerationDescendantOf.py \
|
||||
_IsMale.py \
|
||||
_IsMoreThanNthGenerationAncestorOf.py \
|
||||
_IsMoreThanNthGenerationDescendantOf.py \
|
||||
_IsParentOfFilterMatch.py \
|
||||
_IsSiblingOfFilterMatch.py \
|
||||
_IsSpouseOfFilterMatch.py \
|
||||
_IsWitness.py \
|
||||
_MatchesFilter.py \
|
||||
_MultipleMarriages.py \
|
||||
_NeverMarried.py \
|
||||
_NoBirthdate.py \
|
||||
_PeoplePrivate.py \
|
||||
_PersonWithIncompleteEvent.py \
|
||||
_ProbablyAlive.py \
|
||||
_RelationshipPathBetween.py \
|
||||
_Rule.py \
|
||||
_RuleUtils.py \
|
||||
_SearchName.py \
|
||||
__init__.py
|
||||
|
||||
pkgpyexecdir = @pkgpyexecdir@/Filters/Rules
|
||||
@@ -67,7 +15,7 @@ pkgpythondir = @pkgpythondir@/Filters/Rules
|
||||
# Clean up all the byte-compiled files
|
||||
MOSTLYCLEANFILES = *pyc *pyo
|
||||
|
||||
GRAMPS_PY_MODPATH = "../"
|
||||
GRAMPS_PY_MODPATH = "../../"
|
||||
|
||||
pycheck:
|
||||
(export PYTHONPATH=$(GRAMPS_PY_MODPATH); \
|
||||
|
18
src/Filters/Rules/Media/Makefile.am
Normal file
18
src/Filters/Rules/Media/Makefile.am
Normal file
@@ -0,0 +1,18 @@
|
||||
# This is the src/Filters/Rules/Media level Makefile for Gramps
|
||||
|
||||
pkgdatadir = $(datadir)/@PACKAGE@/Filters/Rules/Media
|
||||
|
||||
pkgdata_PYTHON = \
|
||||
__init__.py
|
||||
|
||||
pkgpyexecdir = @pkgpyexecdir@/Filters/Rules/Media
|
||||
pkgpythondir = @pkgpythondir@/Filters/Rules/Media
|
||||
|
||||
# Clean up all the byte-compiled files
|
||||
MOSTLYCLEANFILES = *pyc *pyo
|
||||
|
||||
GRAMPS_PY_MODPATH = "../../../"
|
||||
|
||||
pycheck:
|
||||
(export PYTHONPATH=$(GRAMPS_PY_MODPATH); \
|
||||
pychecker $(pkgdata_PYTHON));
|
27
src/Filters/Rules/Media/__init__.py
Normal file
27
src/Filters/Rules/Media/__init__.py
Normal file
@@ -0,0 +1,27 @@
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2002-2006 Donald N. Allingham
|
||||
#
|
||||
# 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
|
||||
#
|
||||
|
||||
# $Id: __init__.py 6521 2006-05-03 01:02:54Z rshura $
|
||||
|
||||
"""
|
||||
Package providing filter rules for GRAMPS.
|
||||
"""
|
||||
|
||||
__author__ = "Don Allingham"
|
74
src/Filters/Rules/Person/Makefile.am
Normal file
74
src/Filters/Rules/Person/Makefile.am
Normal file
@@ -0,0 +1,74 @@
|
||||
# This is the src/Filters/Rules/Person level Makefile for Gramps
|
||||
|
||||
pkgdatadir = $(datadir)/@PACKAGE@/Filters/Rules/Person
|
||||
|
||||
pkgdata_PYTHON = \
|
||||
_Disconnected.py \
|
||||
_Everyone.py \
|
||||
_FamilyWithIncompleteEvent.py \
|
||||
_HasAttribute.py \
|
||||
_HasBirth.py \
|
||||
_HasCommonAncestorWith.py \
|
||||
_HasCommonAncestorWithFilterMatch.py \
|
||||
_HasCompleteRecord.py \
|
||||
_HasDeath.py \
|
||||
_HasEvent.py \
|
||||
_HasFamilyAttribute.py \
|
||||
_HasFamilyEvent.py \
|
||||
_HasIdOf.py \
|
||||
_HasNameOf.py \
|
||||
_HasNote.py \
|
||||
_HasNoteMatchingSubstringOf.py \
|
||||
_HasRelationship.py \
|
||||
_HasSourceOf.py \
|
||||
_HasTextMatchingRegexpOf.py \
|
||||
_HasTextMatchingSubstringOf.py \
|
||||
_HasUnknownGender.py \
|
||||
_HaveAltFamilies.py \
|
||||
_HaveChildren.py \
|
||||
_HavePhotos.py \
|
||||
_IncompleteNames.py \
|
||||
_IsAncestorOf.py \
|
||||
_IsAncestorOfFilterMatch.py \
|
||||
_IsBookmarked.py \
|
||||
_IsChildOfFilterMatch.py \
|
||||
_IsDefaultPerson.py \
|
||||
_IsDescendantFamilyOf.py \
|
||||
_IsDescendantOf.py \
|
||||
_IsDescendantOfFilterMatch.py \
|
||||
_IsFemale.py \
|
||||
_IsLessThanNthGenerationAncestorOf.py \
|
||||
_IsLessThanNthGenerationAncestorOfBookmarked.py \
|
||||
_IsLessThanNthGenerationAncestorOfDefaultPerson.py \
|
||||
_IsLessThanNthGenerationDescendantOf.py \
|
||||
_IsMale.py \
|
||||
_IsMoreThanNthGenerationAncestorOf.py \
|
||||
_IsMoreThanNthGenerationDescendantOf.py \
|
||||
_IsParentOfFilterMatch.py \
|
||||
_IsSiblingOfFilterMatch.py \
|
||||
_IsSpouseOfFilterMatch.py \
|
||||
_IsWitness.py \
|
||||
_MatchesFilter.py \
|
||||
_MultipleMarriages.py \
|
||||
_NeverMarried.py \
|
||||
_NoBirthdate.py \
|
||||
_PeoplePrivate.py \
|
||||
_PersonWithIncompleteEvent.py \
|
||||
_ProbablyAlive.py \
|
||||
_RelationshipPathBetween.py \
|
||||
_Rule.py \
|
||||
_RuleUtils.py \
|
||||
_SearchName.py \
|
||||
__init__.py
|
||||
|
||||
pkgpyexecdir = @pkgpyexecdir@/Filters/Rules/Person
|
||||
pkgpythondir = @pkgpythondir@/Filters/Rules/Person
|
||||
|
||||
# Clean up all the byte-compiled files
|
||||
MOSTLYCLEANFILES = *pyc *pyo
|
||||
|
||||
GRAMPS_PY_MODPATH = "../../../"
|
||||
|
||||
pycheck:
|
||||
(export PYTHONPATH=$(GRAMPS_PY_MODPATH); \
|
||||
pychecker $(pkgdata_PYTHON));
|
@@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
@@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
@@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
# "Families with incomplete events"
|
@@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
@@ -33,8 +33,8 @@ from gettext import gettext as _
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
import DateHandler
|
||||
from _Rule import Rule
|
||||
from _RuleUtils import date_cmp
|
||||
from Filters.Rules._Rule import Rule
|
||||
from Filters.Rules._RuleUtils import date_cmp
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
@@ -33,7 +33,7 @@ from gettext import gettext as _
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from Utils import for_each_ancestor
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
@@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
@@ -33,8 +33,8 @@ from gettext import gettext as _
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
import DateHandler
|
||||
from _Rule import Rule
|
||||
from _RuleUtils import date_cmp
|
||||
from Filters.Rules._Rule import Rule
|
||||
from Filters.Rules._RuleUtils import date_cmp
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
@@ -33,8 +33,8 @@ from gettext import gettext as _
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
import DateHandler
|
||||
from _Rule import Rule
|
||||
from _RuleUtils import date_cmp
|
||||
from Filters.Rules._Rule import Rule
|
||||
from Filters.Rules._RuleUtils import date_cmp
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
@@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
@@ -33,8 +33,8 @@ from gettext import gettext as _
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
import DateHandler
|
||||
from _Rule import Rule
|
||||
from _RuleUtils import date_cmp
|
||||
from Filters.Rules._Rule import Rule
|
||||
from Filters.Rules._RuleUtils import date_cmp
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
@@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
@@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
@@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
# "People having notes"
|
@@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
# "People having notes that contain a substring"
|
@@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
@@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
56
src/Filters/Rules/Person/_HasTextMatchingRegexpOf.py
Normal file
56
src/Filters/Rules/Person/_HasTextMatchingRegexpOf.py
Normal file
@@ -0,0 +1,56 @@
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2002-2006 Donald N. Allingham
|
||||
#
|
||||
# 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
|
||||
#
|
||||
|
||||
# $Id$
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Standard Python modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from gettext import gettext as _
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _HasTextMatchingSubstringOf import HasTextMatchingSubstringOf
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
# "HasTextMatchingRegexOf"
|
||||
#-------------------------------------------------------------------------
|
||||
class HasTextMatchingRegexpOf(HasTextMatchingSubstringOf):
|
||||
"""This is wrapping HasTextMatchingSubstringOf to enable the regex_match parameter"""
|
||||
def __init__(self,list):
|
||||
HasTextMatchingSubstringOf.__init__(self,list)
|
||||
|
||||
def prepare(self,db):
|
||||
self.db = db
|
||||
self.person_map = {}
|
||||
self.event_map = {}
|
||||
self.source_map = {}
|
||||
self.repo_map = {}
|
||||
self.family_map = {}
|
||||
self.place_map = {}
|
||||
self.media_map = {}
|
||||
self.case_sensitive = False
|
||||
self.regexp_match = True
|
||||
self.cache_sources()
|
197
src/Filters/Rules/Person/_HasTextMatchingSubstringOf.py
Normal file
197
src/Filters/Rules/Person/_HasTextMatchingSubstringOf.py
Normal file
@@ -0,0 +1,197 @@
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2002-2006 Donald N. Allingham
|
||||
#
|
||||
# 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
|
||||
#
|
||||
|
||||
# $Id$
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Standard Python modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from gettext import gettext as _
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from Utils import get_source_referents
|
||||
from Filters.Rules._Rule import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
# "HasTextMatchingSubstringOf"
|
||||
#-------------------------------------------------------------------------
|
||||
class HasTextMatchingSubstringOf(Rule):
|
||||
"""Rule that checks for string matches in any textual information"""
|
||||
|
||||
labels = [ _('Substring:'),
|
||||
_('Case sensitive:'),
|
||||
_('Regular-Expression matching:')]
|
||||
name = _('People with records containing <substring>')
|
||||
description = _("Matches people whose records contain text "
|
||||
"matching a substring")
|
||||
category = _('General filters')
|
||||
|
||||
def prepare(self,db):
|
||||
self.db = db
|
||||
self.person_map = {}
|
||||
self.event_map = {}
|
||||
self.source_map = {}
|
||||
self.repo_map = {}
|
||||
self.family_map = {}
|
||||
self.place_map = {}
|
||||
self.media_map = {}
|
||||
try:
|
||||
if int(self.list[1]):
|
||||
self.case_sensitive = True
|
||||
else:
|
||||
self.case_sensitive = False
|
||||
except IndexError:
|
||||
self.case_sensitive = False
|
||||
try:
|
||||
if int(self.list[2]):
|
||||
self.regexp_match = True
|
||||
else:
|
||||
self.regexp_match = False
|
||||
except IndexError:
|
||||
self.regexp_match = False
|
||||
self.cache_repos()
|
||||
self.cache_sources()
|
||||
|
||||
def reset(self):
|
||||
self.person_map = {}
|
||||
self.event_map = {}
|
||||
self.source_map = {}
|
||||
self.repo_map = {}
|
||||
self.family_map = {}
|
||||
self.place_map = {}
|
||||
self.media_map = {}
|
||||
|
||||
def apply(self,db,person):
|
||||
if person.handle in self.person_map: # Cached by matching Source?
|
||||
return self.person_map[person.handle]
|
||||
if self.match_object(person): # first match the person itself
|
||||
return True
|
||||
for event_ref in person.get_event_ref_list()+[person.get_birth_ref(), person.get_death_ref()]:
|
||||
if self.search_event(event_ref.ref): # match referenced events
|
||||
return True
|
||||
for family_handle in person.get_family_handle_list(): # match families
|
||||
if self.search_family(family_handle):
|
||||
return True
|
||||
for media_ref in person.get_media_list(): # match Media object
|
||||
if self.search_media(media_ref.get_reference_handle()):
|
||||
return True
|
||||
return False
|
||||
|
||||
def search_family(self,family_handle):
|
||||
if not family_handle:
|
||||
return False
|
||||
# search inside the family and cache the result to not search a family twice
|
||||
if not family_handle in self.family_map:
|
||||
match = 0
|
||||
family = self.db.get_family_from_handle(family_handle)
|
||||
if self.match_object(family):
|
||||
match = 1
|
||||
else:
|
||||
for event_ref in family.get_event_ref_list():
|
||||
if self.search_event(event_ref.ref):
|
||||
match = 1
|
||||
break
|
||||
for media_ref in family.get_media_list(): # match Media object
|
||||
if self.search_media(media_ref.get_reference_handle()):
|
||||
return True
|
||||
self.family_map[family_handle] = match
|
||||
return self.family_map[family_handle]
|
||||
|
||||
def search_event(self,event_handle):
|
||||
if not event_handle:
|
||||
return False
|
||||
# search inside the event and cache the result (event sharing)
|
||||
if not event_handle in self.event_map:
|
||||
match = 0
|
||||
event = self.db.get_event_from_handle(event_handle)
|
||||
if self.match_object(event):
|
||||
match = 1
|
||||
elif event:
|
||||
place_handle = event.get_place_handle()
|
||||
if place_handle:
|
||||
if self.search_place(place_handle):
|
||||
match = 1
|
||||
for media_ref in event.get_media_list(): # match Media object
|
||||
if self.search_media(media_ref.get_reference_handle()):
|
||||
return True
|
||||
self.event_map[event_handle] = match
|
||||
return self.event_map[event_handle]
|
||||
|
||||
def search_place(self,place_handle):
|
||||
if not place_handle:
|
||||
return False
|
||||
# search inside the place and cache the result
|
||||
if not place_handle in self.place_map:
|
||||
place = self.db.get_place_from_handle(place_handle)
|
||||
self.place_map[place_handle] = self.match_object(place)
|
||||
return self.place_map[place_handle]
|
||||
|
||||
def search_media(self,media_handle):
|
||||
if not media_handle:
|
||||
return False
|
||||
# search inside the place and cache the result
|
||||
if not media_handle in self.media_map:
|
||||
media = self.db.get_object_from_handle(media_handle)
|
||||
self.media_map[media_handle] = self.match_object(media)
|
||||
return self.media_map[media_handle]
|
||||
|
||||
def cache_repos(self):
|
||||
# search all matching repositories
|
||||
for repo_handle in self.db.get_repository_handles():
|
||||
repo = self.db.get_repository_from_handle(repo_handle)
|
||||
if( self.match_object(repo)):
|
||||
self.repo_map[repo_handle] = 1
|
||||
|
||||
def cache_sources(self):
|
||||
# search all sources and match all referents of a matching source
|
||||
for source_handle in self.db.get_source_handles():
|
||||
source = self.db.get_source_from_handle(source_handle)
|
||||
match = self.match_object(source)
|
||||
if not match:
|
||||
for reporef in source.get_reporef_list():
|
||||
if reporef.get_reference_handle() in self.repo_map:
|
||||
match = 1
|
||||
if match:
|
||||
(person_list,family_list,event_list,
|
||||
place_list,source_list,media_list
|
||||
) = get_source_referents(source_handle,self.db)
|
||||
for handle in person_list:
|
||||
self.person_map[handle] = 1
|
||||
for handle in family_list:
|
||||
self.family_map[handle] = 1
|
||||
for handle in event_list:
|
||||
self.event_map[handle] = 1
|
||||
for handle in place_list:
|
||||
self.place_map[handle] = 1
|
||||
for handle in media_list:
|
||||
self.media_map[handle] = 1
|
||||
|
||||
def match_object(self,obj):
|
||||
if not obj:
|
||||
return False
|
||||
if self.regexp_match:
|
||||
return obj.matches_regexp(self.list[0],self.case_sensitive)
|
||||
return obj.matches_string(self.list[0],self.case_sensitive)
|
@@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
from RelLib import Person
|
||||
|
||||
#-------------------------------------------------------------------------
|
@@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
from RelLib import ChildRefType
|
||||
|
||||
#-------------------------------------------------------------------------
|
@@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
# "People with children"
|
@@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
# "People who have images"
|
@@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
@@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
@@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
@@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
from _MatchesFilter import MatchesFilter
|
||||
|
||||
#-------------------------------------------------------------------------
|
@@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
@@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
@@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
@@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
from RelLib import Person
|
||||
|
||||
#-------------------------------------------------------------------------
|
@@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
@@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
@@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
@@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
@@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
from RelLib import Person
|
||||
|
||||
#-------------------------------------------------------------------------
|
@@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
@@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
@@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
from _MatchesFilter import MatchesFilter
|
||||
|
||||
#-------------------------------------------------------------------------
|
@@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
from _MatchesFilter import MatchesFilter
|
||||
|
||||
#-------------------------------------------------------------------------
|
@@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
from _MatchesFilter import MatchesFilter
|
||||
|
||||
#-------------------------------------------------------------------------
|
@@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
# "Witnesses"
|
@@ -33,7 +33,7 @@ from gettext import gettext as _
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from Filters import SystemFilters, CustomFilters
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
@@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
# "People with multiple marriage records"
|
@@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
# "People with no marriage records"
|
@@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
# "People without a birth date"
|
@@ -32,17 +32,14 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._IsPrivate import IsPrivate
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
# "People marked private"
|
||||
#-------------------------------------------------------------------------
|
||||
class PeoplePrivate(Rule):
|
||||
class PeoplePrivate(IsPrivate):
|
||||
"""People marked private"""
|
||||
|
||||
name = _('People marked private')
|
||||
description = _("Matches people that are indicated as private")
|
||||
category = _('General filters')
|
||||
|
||||
def apply(self,db,person):
|
||||
return person.get_privacy()
|
@@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
# "People with incomplete events"
|
@@ -33,7 +33,7 @@ from gettext import gettext as _
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from Utils import probably_alive
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
# "People probably alive"
|
@@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
@@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
import NameDisplay
|
||||
|
||||
#-------------------------------------------------------------------------
|
148
src/Filters/Rules/Person/__init__.py
Normal file
148
src/Filters/Rules/Person/__init__.py
Normal file
@@ -0,0 +1,148 @@
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2002-2006 Donald N. Allingham
|
||||
#
|
||||
# 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
|
||||
#
|
||||
|
||||
# $Id$
|
||||
|
||||
"""
|
||||
Package providing filter rules for GRAMPS.
|
||||
"""
|
||||
|
||||
__author__ = "Don Allingham"
|
||||
|
||||
from _Disconnected import Disconnected
|
||||
from _Everyone import Everyone
|
||||
from _FamilyWithIncompleteEvent import FamilyWithIncompleteEvent
|
||||
from _HasAttribute import HasAttribute
|
||||
from _HasBirth import HasBirth
|
||||
from _HasCommonAncestorWith import HasCommonAncestorWith
|
||||
from _HasCommonAncestorWithFilterMatch import HasCommonAncestorWithFilterMatch
|
||||
from _HasCompleteRecord import HasCompleteRecord
|
||||
from _HasDeath import HasDeath
|
||||
from _HasEvent import HasEvent
|
||||
from _HasFamilyAttribute import HasFamilyAttribute
|
||||
from _HasFamilyEvent import HasFamilyEvent
|
||||
from _HasIdOf import HasIdOf
|
||||
from _HasNameOf import HasNameOf
|
||||
from _HasNote import HasNote
|
||||
from _HasNoteMatchingSubstringOf import HasNoteMatchingSubstringOf
|
||||
from _HasRelationship import HasRelationship
|
||||
from _HasSourceOf import HasSourceOf
|
||||
from _HasTextMatchingRegexpOf import HasTextMatchingRegexpOf
|
||||
from _HasTextMatchingSubstringOf import HasTextMatchingSubstringOf
|
||||
from _HasUnknownGender import HasUnknownGender
|
||||
from _HaveAltFamilies import HaveAltFamilies
|
||||
from _HaveChildren import HaveChildren
|
||||
from _HavePhotos import HavePhotos
|
||||
from _IncompleteNames import IncompleteNames
|
||||
from _IsAncestorOf import IsAncestorOf
|
||||
from _IsAncestorOfFilterMatch import IsAncestorOfFilterMatch
|
||||
from _IsBookmarked import IsBookmarked
|
||||
from _IsChildOfFilterMatch import IsChildOfFilterMatch
|
||||
from _IsDefaultPerson import IsDefaultPerson
|
||||
from _IsDescendantFamilyOf import IsDescendantFamilyOf
|
||||
from _IsDescendantOf import IsDescendantOf
|
||||
from _IsDescendantOfFilterMatch import IsDescendantOfFilterMatch
|
||||
from _IsFemale import IsFemale
|
||||
from _IsLessThanNthGenerationAncestorOf import \
|
||||
IsLessThanNthGenerationAncestorOf
|
||||
from _IsLessThanNthGenerationAncestorOfBookmarked import \
|
||||
IsLessThanNthGenerationAncestorOfBookmarked
|
||||
from _IsLessThanNthGenerationAncestorOfDefaultPerson import \
|
||||
IsLessThanNthGenerationAncestorOfDefaultPerson
|
||||
from _IsLessThanNthGenerationDescendantOf import \
|
||||
IsLessThanNthGenerationDescendantOf
|
||||
from _IsMale import IsMale
|
||||
from _IsMoreThanNthGenerationAncestorOf import \
|
||||
IsMoreThanNthGenerationAncestorOf
|
||||
from _IsMoreThanNthGenerationDescendantOf import \
|
||||
IsMoreThanNthGenerationDescendantOf
|
||||
from _IsParentOfFilterMatch import IsParentOfFilterMatch
|
||||
from _IsSiblingOfFilterMatch import IsSiblingOfFilterMatch
|
||||
from _IsSpouseOfFilterMatch import IsSpouseOfFilterMatch
|
||||
from _IsWitness import IsWitness
|
||||
from _MatchesFilter import MatchesFilter
|
||||
from _MultipleMarriages import MultipleMarriages
|
||||
from _NeverMarried import NeverMarried
|
||||
from _NoBirthdate import NoBirthdate
|
||||
from _PeoplePrivate import PeoplePrivate
|
||||
from _PersonWithIncompleteEvent import PersonWithIncompleteEvent
|
||||
from _ProbablyAlive import ProbablyAlive
|
||||
from _RelationshipPathBetween import RelationshipPathBetween
|
||||
from Filters.Rules._Rule import Rule
|
||||
from _SearchName import SearchName
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# This is used by Custom Filter Editor tool
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
editor_rule_list = [
|
||||
Everyone,
|
||||
IsFemale,
|
||||
HasUnknownGender,
|
||||
IsMale,
|
||||
IsDefaultPerson,
|
||||
IsBookmarked,
|
||||
HasIdOf,
|
||||
HasNameOf,
|
||||
HasRelationship,
|
||||
HasDeath,
|
||||
HasBirth,
|
||||
HasCompleteRecord,
|
||||
HasEvent,
|
||||
HasFamilyEvent,
|
||||
HasAttribute,
|
||||
HasFamilyAttribute,
|
||||
HasSourceOf,
|
||||
HaveAltFamilies,
|
||||
HavePhotos,
|
||||
HaveChildren,
|
||||
IncompleteNames,
|
||||
NeverMarried,
|
||||
MultipleMarriages,
|
||||
NoBirthdate,
|
||||
PersonWithIncompleteEvent,
|
||||
FamilyWithIncompleteEvent,
|
||||
ProbablyAlive,
|
||||
PeoplePrivate,
|
||||
IsWitness,
|
||||
IsDescendantOf,
|
||||
IsDescendantFamilyOf,
|
||||
IsLessThanNthGenerationAncestorOfDefaultPerson,
|
||||
IsDescendantOfFilterMatch,
|
||||
IsLessThanNthGenerationDescendantOf,
|
||||
IsMoreThanNthGenerationDescendantOf,
|
||||
IsAncestorOf,
|
||||
IsAncestorOfFilterMatch,
|
||||
IsLessThanNthGenerationAncestorOf,
|
||||
IsLessThanNthGenerationAncestorOfBookmarked,
|
||||
IsMoreThanNthGenerationAncestorOf,
|
||||
HasCommonAncestorWith,
|
||||
HasCommonAncestorWithFilterMatch,
|
||||
MatchesFilter,
|
||||
IsChildOfFilterMatch,
|
||||
IsParentOfFilterMatch,
|
||||
IsSpouseOfFilterMatch,
|
||||
IsSiblingOfFilterMatch,
|
||||
RelationshipPathBetween,
|
||||
HasTextMatchingSubstringOf,
|
||||
HasNote,
|
||||
HasNoteMatchingSubstringOf
|
||||
]
|
18
src/Filters/Rules/Place/Makefile.am
Normal file
18
src/Filters/Rules/Place/Makefile.am
Normal file
@@ -0,0 +1,18 @@
|
||||
# This is the src/Filters/Rules/Place level Makefile for Gramps
|
||||
|
||||
pkgdatadir = $(datadir)/@PACKAGE@/Filters/Rules/Place
|
||||
|
||||
pkgdata_PYTHON = \
|
||||
__init__.py
|
||||
|
||||
pkgpyexecdir = @pkgpyexecdir@/Filters/Rules/Place
|
||||
pkgpythondir = @pkgpythondir@/Filters/Rules/Place
|
||||
|
||||
# Clean up all the byte-compiled files
|
||||
MOSTLYCLEANFILES = *pyc *pyo
|
||||
|
||||
GRAMPS_PY_MODPATH = "../../../"
|
||||
|
||||
pycheck:
|
||||
(export PYTHONPATH=$(GRAMPS_PY_MODPATH); \
|
||||
pychecker $(pkgdata_PYTHON));
|
27
src/Filters/Rules/Place/__init__.py
Normal file
27
src/Filters/Rules/Place/__init__.py
Normal file
@@ -0,0 +1,27 @@
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2002-2006 Donald N. Allingham
|
||||
#
|
||||
# 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
|
||||
#
|
||||
|
||||
# $Id: __init__.py 6521 2006-05-03 01:02:54Z rshura $
|
||||
|
||||
"""
|
||||
Package providing filter rules for GRAMPS.
|
||||
"""
|
||||
|
||||
__author__ = "Don Allingham"
|
18
src/Filters/Rules/Repository/Makefile.am
Normal file
18
src/Filters/Rules/Repository/Makefile.am
Normal file
@@ -0,0 +1,18 @@
|
||||
# This is the src/Filters/Rules/Media level Makefile for Gramps
|
||||
|
||||
pkgdatadir = $(datadir)/@PACKAGE@/Filters/Rules/Repository
|
||||
|
||||
pkgdata_PYTHON = \
|
||||
__init__.py
|
||||
|
||||
pkgpyexecdir = @pkgpyexecdir@/Filters/Rules/Repository
|
||||
pkgpythondir = @pkgpythondir@/Filters/Rules/Repository
|
||||
|
||||
# Clean up all the byte-compiled files
|
||||
MOSTLYCLEANFILES = *pyc *pyo
|
||||
|
||||
GRAMPS_PY_MODPATH = "../../../"
|
||||
|
||||
pycheck:
|
||||
(export PYTHONPATH=$(GRAMPS_PY_MODPATH); \
|
||||
pychecker $(pkgdata_PYTHON));
|
27
src/Filters/Rules/Repository/__init__.py
Normal file
27
src/Filters/Rules/Repository/__init__.py
Normal file
@@ -0,0 +1,27 @@
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2002-2006 Donald N. Allingham
|
||||
#
|
||||
# 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
|
||||
#
|
||||
|
||||
# $Id: __init__.py 6521 2006-05-03 01:02:54Z rshura $
|
||||
|
||||
"""
|
||||
Package providing filter rules for GRAMPS.
|
||||
"""
|
||||
|
||||
__author__ = "Don Allingham"
|
18
src/Filters/Rules/Source/Makefile.am
Normal file
18
src/Filters/Rules/Source/Makefile.am
Normal file
@@ -0,0 +1,18 @@
|
||||
# This is the src/Filters/Rules/Source level Makefile for Gramps
|
||||
|
||||
pkgdatadir = $(datadir)/@PACKAGE@/Filters/Rules/Source
|
||||
|
||||
pkgdata_PYTHON = \
|
||||
__init__.py
|
||||
|
||||
pkgpyexecdir = @pkgpyexecdir@/Filters/Rules/Source
|
||||
pkgpythondir = @pkgpythondir@/Filters/Rules/Source
|
||||
|
||||
# Clean up all the byte-compiled files
|
||||
MOSTLYCLEANFILES = *pyc *pyo
|
||||
|
||||
GRAMPS_PY_MODPATH = "../../../"
|
||||
|
||||
pycheck:
|
||||
(export PYTHONPATH=$(GRAMPS_PY_MODPATH); \
|
||||
pychecker $(pkgdata_PYTHON));
|
27
src/Filters/Rules/Source/__init__.py
Normal file
27
src/Filters/Rules/Source/__init__.py
Normal file
@@ -0,0 +1,27 @@
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2002-2006 Donald N. Allingham
|
||||
#
|
||||
# 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
|
||||
#
|
||||
|
||||
# $Id: __init__.py 6521 2006-05-03 01:02:54Z rshura $
|
||||
|
||||
"""
|
||||
Package providing filter rules for GRAMPS.
|
||||
"""
|
||||
|
||||
__author__ = "Don Allingham"
|
53
src/Filters/Rules/_Everything.py
Normal file
53
src/Filters/Rules/_Everything.py
Normal file
@@ -0,0 +1,53 @@
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2002-2006 Donald N. Allingham
|
||||
#
|
||||
# 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
|
||||
#
|
||||
|
||||
# $Id$
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Standard Python modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from gettext import gettext as _
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Everyone
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
class Everything(Rule):
|
||||
"""Matches Everyone"""
|
||||
|
||||
name = _('Every object')
|
||||
category = _('General filters')
|
||||
description = _('Matches every object in the database')
|
||||
|
||||
def is_empty(self):
|
||||
return True
|
||||
|
||||
def apply(self,db,obj):
|
||||
return True
|
@@ -42,15 +42,5 @@ class HasTextMatchingRegexpOf(HasTextMatchingSubstringOf):
|
||||
def __init__(self,list):
|
||||
HasTextMatchingSubstringOf.__init__(self,list)
|
||||
|
||||
def prepare(self,db):
|
||||
self.db = db
|
||||
self.person_map = {}
|
||||
self.event_map = {}
|
||||
self.source_map = {}
|
||||
self.repo_map = {}
|
||||
self.family_map = {}
|
||||
self.place_map = {}
|
||||
self.media_map = {}
|
||||
self.case_sensitive = False
|
||||
self.regexp_match = True
|
||||
self.cache_sources()
|
||||
# FIXME: This needs to be written for an arbitrary object
|
||||
# if possible
|
||||
|
@@ -49,149 +49,5 @@ class HasTextMatchingSubstringOf(Rule):
|
||||
"matching a substring")
|
||||
category = _('General filters')
|
||||
|
||||
def prepare(self,db):
|
||||
self.db = db
|
||||
self.person_map = {}
|
||||
self.event_map = {}
|
||||
self.source_map = {}
|
||||
self.repo_map = {}
|
||||
self.family_map = {}
|
||||
self.place_map = {}
|
||||
self.media_map = {}
|
||||
try:
|
||||
if int(self.list[1]):
|
||||
self.case_sensitive = True
|
||||
else:
|
||||
self.case_sensitive = False
|
||||
except IndexError:
|
||||
self.case_sensitive = False
|
||||
try:
|
||||
if int(self.list[2]):
|
||||
self.regexp_match = True
|
||||
else:
|
||||
self.regexp_match = False
|
||||
except IndexError:
|
||||
self.regexp_match = False
|
||||
self.cache_repos()
|
||||
self.cache_sources()
|
||||
|
||||
def reset(self):
|
||||
self.person_map = {}
|
||||
self.event_map = {}
|
||||
self.source_map = {}
|
||||
self.repo_map = {}
|
||||
self.family_map = {}
|
||||
self.place_map = {}
|
||||
self.media_map = {}
|
||||
|
||||
def apply(self,db,person):
|
||||
if person.handle in self.person_map: # Cached by matching Source?
|
||||
return self.person_map[person.handle]
|
||||
if self.match_object(person): # first match the person itself
|
||||
return True
|
||||
for event_ref in person.get_event_ref_list()+[person.get_birth_ref(), person.get_death_ref()]:
|
||||
if self.search_event(event_ref.ref): # match referenced events
|
||||
return True
|
||||
for family_handle in person.get_family_handle_list(): # match families
|
||||
if self.search_family(family_handle):
|
||||
return True
|
||||
for media_ref in person.get_media_list(): # match Media object
|
||||
if self.search_media(media_ref.get_reference_handle()):
|
||||
return True
|
||||
return False
|
||||
|
||||
def search_family(self,family_handle):
|
||||
if not family_handle:
|
||||
return False
|
||||
# search inside the family and cache the result to not search a family twice
|
||||
if not family_handle in self.family_map:
|
||||
match = 0
|
||||
family = self.db.get_family_from_handle(family_handle)
|
||||
if self.match_object(family):
|
||||
match = 1
|
||||
else:
|
||||
for event_ref in family.get_event_ref_list():
|
||||
if self.search_event(event_ref.ref):
|
||||
match = 1
|
||||
break
|
||||
for media_ref in family.get_media_list(): # match Media object
|
||||
if self.search_media(media_ref.get_reference_handle()):
|
||||
return True
|
||||
self.family_map[family_handle] = match
|
||||
return self.family_map[family_handle]
|
||||
|
||||
def search_event(self,event_handle):
|
||||
if not event_handle:
|
||||
return False
|
||||
# search inside the event and cache the result (event sharing)
|
||||
if not event_handle in self.event_map:
|
||||
match = 0
|
||||
event = self.db.get_event_from_handle(event_handle)
|
||||
if self.match_object(event):
|
||||
match = 1
|
||||
elif event:
|
||||
place_handle = event.get_place_handle()
|
||||
if place_handle:
|
||||
if self.search_place(place_handle):
|
||||
match = 1
|
||||
for media_ref in event.get_media_list(): # match Media object
|
||||
if self.search_media(media_ref.get_reference_handle()):
|
||||
return True
|
||||
self.event_map[event_handle] = match
|
||||
return self.event_map[event_handle]
|
||||
|
||||
def search_place(self,place_handle):
|
||||
if not place_handle:
|
||||
return False
|
||||
# search inside the place and cache the result
|
||||
if not place_handle in self.place_map:
|
||||
place = self.db.get_place_from_handle(place_handle)
|
||||
self.place_map[place_handle] = self.match_object(place)
|
||||
return self.place_map[place_handle]
|
||||
|
||||
def search_media(self,media_handle):
|
||||
if not media_handle:
|
||||
return False
|
||||
# search inside the place and cache the result
|
||||
if not media_handle in self.media_map:
|
||||
media = self.db.get_object_from_handle(media_handle)
|
||||
self.media_map[media_handle] = self.match_object(media)
|
||||
return self.media_map[media_handle]
|
||||
|
||||
def cache_repos(self):
|
||||
# search all matching repositories
|
||||
for repo_handle in self.db.get_repository_handles():
|
||||
repo = self.db.get_repository_from_handle(repo_handle)
|
||||
if( self.match_object(repo)):
|
||||
self.repo_map[repo_handle] = 1
|
||||
|
||||
def cache_sources(self):
|
||||
# search all sources and match all referents of a matching source
|
||||
for source_handle in self.db.get_source_handles():
|
||||
source = self.db.get_source_from_handle(source_handle)
|
||||
match = self.match_object(source)
|
||||
if not match:
|
||||
for reporef in source.get_reporef_list():
|
||||
if reporef.get_reference_handle() in self.repo_map:
|
||||
match = 1
|
||||
if match:
|
||||
(person_list,family_list,event_list,
|
||||
place_list,source_list,media_list
|
||||
) = get_source_referents(source_handle,self.db)
|
||||
for handle in person_list:
|
||||
self.person_map[handle] = 1
|
||||
for handle in family_list:
|
||||
self.family_map[handle] = 1
|
||||
for handle in event_list:
|
||||
self.event_map[handle] = 1
|
||||
for handle in place_list:
|
||||
self.place_map[handle] = 1
|
||||
for handle in media_list:
|
||||
self.media_map[handle] = 1
|
||||
|
||||
def match_object(self,obj):
|
||||
if not obj:
|
||||
return False
|
||||
if self.regexp_match:
|
||||
return obj.matches_regexp(self.list[0],self.case_sensitive)
|
||||
return obj.matches_string(self.list[0],self.case_sensitive)
|
||||
# FIXME: This needs to be written for an arbitrary object
|
||||
# if possible
|
||||
|
48
src/Filters/Rules/_IsPrivate.py
Normal file
48
src/Filters/Rules/_IsPrivate.py
Normal file
@@ -0,0 +1,48 @@
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2002-2006 Donald N. Allingham
|
||||
#
|
||||
# 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
|
||||
#
|
||||
|
||||
# $Id$
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Standard Python modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from gettext import gettext as _
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
# "People marked private"
|
||||
#-------------------------------------------------------------------------
|
||||
class IsPrivate(Rule):
|
||||
"""Objects marked private"""
|
||||
|
||||
name = _('Objects marked private')
|
||||
description = _("Matches objects that are indicated as private")
|
||||
category = _('General filters')
|
||||
|
||||
def apply(self,db,obj):
|
||||
return obj.get_privacy()
|
@@ -26,121 +26,15 @@ Package providing filter rules for GRAMPS.
|
||||
|
||||
__author__ = "Don Allingham"
|
||||
|
||||
from _Disconnected import Disconnected
|
||||
from _Everyone import Everyone
|
||||
from _FamilyWithIncompleteEvent import FamilyWithIncompleteEvent
|
||||
from _HasAttribute import HasAttribute
|
||||
from _HasBirth import HasBirth
|
||||
from _HasCommonAncestorWith import HasCommonAncestorWith
|
||||
from _HasCommonAncestorWithFilterMatch import HasCommonAncestorWithFilterMatch
|
||||
from _HasCompleteRecord import HasCompleteRecord
|
||||
from _HasDeath import HasDeath
|
||||
from _HasEvent import HasEvent
|
||||
from _HasFamilyAttribute import HasFamilyAttribute
|
||||
from _HasFamilyEvent import HasFamilyEvent
|
||||
from _HasIdOf import HasIdOf
|
||||
from _HasNameOf import HasNameOf
|
||||
from _HasNote import HasNote
|
||||
from _HasNoteMatchingSubstringOf import HasNoteMatchingSubstringOf
|
||||
from _HasRelationship import HasRelationship
|
||||
from _HasSourceOf import HasSourceOf
|
||||
from _HasTextMatchingRegexpOf import HasTextMatchingRegexpOf
|
||||
from _Everything import Everything
|
||||
from _IsPrivate import IsPrivate
|
||||
from _HasTextMatchingSubstringOf import HasTextMatchingSubstringOf
|
||||
from _HasUnknownGender import HasUnknownGender
|
||||
from _HaveAltFamilies import HaveAltFamilies
|
||||
from _HaveChildren import HaveChildren
|
||||
from _HavePhotos import HavePhotos
|
||||
from _IncompleteNames import IncompleteNames
|
||||
from _IsAncestorOf import IsAncestorOf
|
||||
from _IsAncestorOfFilterMatch import IsAncestorOfFilterMatch
|
||||
from _IsBookmarked import IsBookmarked
|
||||
from _IsChildOfFilterMatch import IsChildOfFilterMatch
|
||||
from _IsDefaultPerson import IsDefaultPerson
|
||||
from _IsDescendantFamilyOf import IsDescendantFamilyOf
|
||||
from _IsDescendantOf import IsDescendantOf
|
||||
from _IsDescendantOfFilterMatch import IsDescendantOfFilterMatch
|
||||
from _IsFemale import IsFemale
|
||||
from _IsLessThanNthGenerationAncestorOf import IsLessThanNthGenerationAncestorOf
|
||||
from _IsLessThanNthGenerationAncestorOfBookmarked import \
|
||||
IsLessThanNthGenerationAncestorOfBookmarked
|
||||
from _IsLessThanNthGenerationAncestorOfDefaultPerson import \
|
||||
IsLessThanNthGenerationAncestorOfDefaultPerson
|
||||
from _IsLessThanNthGenerationDescendantOf import \
|
||||
IsLessThanNthGenerationDescendantOf
|
||||
from _IsMale import IsMale
|
||||
from _IsMoreThanNthGenerationAncestorOf import IsMoreThanNthGenerationAncestorOf
|
||||
from _IsMoreThanNthGenerationDescendantOf import \
|
||||
IsMoreThanNthGenerationDescendantOf
|
||||
from _IsParentOfFilterMatch import IsParentOfFilterMatch
|
||||
from _IsSiblingOfFilterMatch import IsSiblingOfFilterMatch
|
||||
from _IsSpouseOfFilterMatch import IsSpouseOfFilterMatch
|
||||
from _IsWitness import IsWitness
|
||||
from _MatchesFilter import MatchesFilter
|
||||
from _MultipleMarriages import MultipleMarriages
|
||||
from _NeverMarried import NeverMarried
|
||||
from _NoBirthdate import NoBirthdate
|
||||
from _PeoplePrivate import PeoplePrivate
|
||||
from _PersonWithIncompleteEvent import PersonWithIncompleteEvent
|
||||
from _ProbablyAlive import ProbablyAlive
|
||||
from _RelationshipPathBetween import RelationshipPathBetween
|
||||
from _Rule import Rule
|
||||
from _SearchName import SearchName
|
||||
from _HasTextMatchingRegexpOf import HasTextMatchingRegexpOf
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# This is used by Custom Filter Editor tool
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
editor_rule_list = [
|
||||
Everyone,
|
||||
IsFemale,
|
||||
HasUnknownGender,
|
||||
IsMale,
|
||||
IsDefaultPerson,
|
||||
IsBookmarked,
|
||||
HasIdOf,
|
||||
HasNameOf,
|
||||
HasRelationship,
|
||||
HasDeath,
|
||||
HasBirth,
|
||||
HasCompleteRecord,
|
||||
HasEvent,
|
||||
HasFamilyEvent,
|
||||
HasAttribute,
|
||||
HasFamilyAttribute,
|
||||
HasSourceOf,
|
||||
HaveAltFamilies,
|
||||
HavePhotos,
|
||||
HaveChildren,
|
||||
IncompleteNames,
|
||||
NeverMarried,
|
||||
MultipleMarriages,
|
||||
NoBirthdate,
|
||||
PersonWithIncompleteEvent,
|
||||
FamilyWithIncompleteEvent,
|
||||
ProbablyAlive,
|
||||
PeoplePrivate,
|
||||
IsWitness,
|
||||
IsDescendantOf,
|
||||
IsDescendantFamilyOf,
|
||||
IsLessThanNthGenerationAncestorOfDefaultPerson,
|
||||
IsDescendantOfFilterMatch,
|
||||
IsLessThanNthGenerationDescendantOf,
|
||||
IsMoreThanNthGenerationDescendantOf,
|
||||
IsAncestorOf,
|
||||
IsAncestorOfFilterMatch,
|
||||
IsLessThanNthGenerationAncestorOf,
|
||||
IsLessThanNthGenerationAncestorOfBookmarked,
|
||||
IsMoreThanNthGenerationAncestorOf,
|
||||
HasCommonAncestorWith,
|
||||
HasCommonAncestorWithFilterMatch,
|
||||
MatchesFilter,
|
||||
IsChildOfFilterMatch,
|
||||
IsParentOfFilterMatch,
|
||||
IsSpouseOfFilterMatch,
|
||||
IsSiblingOfFilterMatch,
|
||||
RelationshipPathBetween,
|
||||
HasTextMatchingSubstringOf,
|
||||
HasNote,
|
||||
HasNoteMatchingSubstringOf
|
||||
]
|
||||
import Person
|
||||
import Family
|
||||
import Event
|
||||
import Source
|
||||
import Place
|
||||
import Media
|
||||
import Repository
|
||||
|
Reference in New Issue
Block a user