* src/Filters/Rules/Family/__init__.py (editor_rule_list): Import
	and use new rule.
	* src/Filters/Rules/Family/Makefile.am (pkgdata_PYTHON): Ship new file.
	* src/Filters/Rules/Family/_HasAttribute.py: Add new rule.
	* src/Filters/Rules/Makefile.am (pkgdata_PYTHON): Ship new file.
	* src/Filters/Rules/_HasAttributeBase.py: Add base module.
	* src/Filters/Rules/_HasEventBase.py (apply): Use new API.
In po:
	Add new files.


svn: r7125
This commit is contained in:
Alex Roitman 2006-08-04 23:19:59 +00:00
parent 2b070e9e5a
commit 19a3a5fea4
11 changed files with 134 additions and 17 deletions

View File

@ -1,4 +1,11 @@
2006-08-04 Alex Roitman <shura@gramps-project.org>
* src/Filters/Rules/Family/__init__.py (editor_rule_list): Import
and use new rule.
* src/Filters/Rules/Family/Makefile.am (pkgdata_PYTHON): Ship new file.
* src/Filters/Rules/Family/_HasAttribute.py: Add new rule.
* src/Filters/Rules/Makefile.am (pkgdata_PYTHON): Ship new file.
* src/Filters/Rules/_HasAttributeBase.py: Add base module.
* src/Filters/Rules/_HasEventBase.py (apply): Use new API.
* src/Filters/Rules/Person/_HasFamilyEvent.py (apply): Use new API.
* src/Filters/Rules/Person/_PersonWithIncompleteEvent.py
(apply): Do not double-handle birth and death events.

View File

@ -1,5 +1,6 @@
2006-08-04 Alex Roitman <shura@gramps-project.org>
* POTFILES.in: Unlist plugins that are not shipped.
Add new files.
2006-08-03 Alex Roitman <shura@gramps-project.org>
* POTFILES.in: Add new files.

View File

@ -372,6 +372,7 @@ src/Filters/_SearchBar.py
src/Filters/_SearchFilter.py
src/Filters/_SidebarFilter.py
src/Filters/Rules/_Everything.py
src/Filters/Rules/_HasAttributeBase.py
src/Filters/Rules/_HasEventBase.py
src/Filters/Rules/_HasGrampsId.py
src/Filters/Rules/_HasNoteRegexBase.py
@ -447,6 +448,7 @@ src/Filters/Rules/Person/_SearchName.py
src/Filters/Rules/Family/__init__.py
src/Filters/Rules/Family/_AllFamilies.py
src/Filters/Rules/Family/_FamilyPrivate.py
src/Filters/Rules/Family/_HasAttribute.py
src/Filters/Rules/Family/_HasEvent.py
src/Filters/Rules/Family/_HasIdOf.py
src/Filters/Rules/Family/_HasNoteMatchingSubstringOf.py

View File

@ -6,6 +6,7 @@ pkgdata_PYTHON = \
_AllFamilies.py\
_FamilyPrivate.py\
_HasEvent.py\
_HasAttribute.py\
_HasIdOf.py\
_HasNoteMatchingSubstringOf.py\
_HasNoteRegexp.py\

View 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: _HasAttribute.py 6529 2006-05-03 06:29:07Z rshura $
#-------------------------------------------------------------------------
#
# Standard Python modules
#
#-------------------------------------------------------------------------
from gettext import gettext as _
#-------------------------------------------------------------------------
#
# GRAMPS modules
#
#-------------------------------------------------------------------------
from Filters.Rules._HasAttributeBase import HasAttributeBase
#-------------------------------------------------------------------------
#
# HasAttribute
#
#-------------------------------------------------------------------------
class HasAttribute(HasAttributeBase):
"""Rule that checks for a family with a particular family attribute"""
labels = [ _('Family attribute:'), _('Value:') ]
name = _('Families with the family <attribute>')
description = _("Matches families with the family attribute "
"of a particular value")

View File

@ -48,4 +48,3 @@ class HasEvent(HasEventBase):
_('Description:') ]
name = _('Families with the <event>')
description = _("Matches families with an event of a particular value")

View File

@ -33,6 +33,7 @@ from _RegExpIdOf import RegExpIdOf
from _HasNoteRegexp import HasNoteRegexp
from _HasNoteMatchingSubstringOf import HasNoteMatchingSubstringOf
from _FamilyPrivate import FamilyPrivate
from _HasAttribute import HasAttribute
from _HasEvent import HasEvent
from _MatchesFilter import MatchesFilter
from _FatherHasNameOf import FatherHasNameOf
@ -51,6 +52,7 @@ editor_rule_list = [
HasNoteMatchingSubstringOf,
FamilyPrivate,
HasEvent,
HasAttribute,
MatchesFilter,
FatherHasNameOf,
FatherHasIdOf,

View File

@ -7,6 +7,7 @@ pkgdatadir = $(datadir)/@PACKAGE@/Filters/Rules
pkgdata_PYTHON = \
_Everything.py\
_HasEventBase.py\
_HasAttributeBase.py\
_HasGrampsId.py\
_HasNoteRegexBase.py\
_HasNoteSubstrBase.py\

View File

@ -32,29 +32,17 @@ from gettext import gettext as _
# GRAMPS modules
#
#-------------------------------------------------------------------------
from Filters.Rules._Rule import Rule
from Filters.Rules._HasAttributeBase import HasAttributeBase
#-------------------------------------------------------------------------
#
# HasAttribute
#
#-------------------------------------------------------------------------
class HasAttribute(Rule):
class HasAttribute(HasAttributeBase):
"""Rule that checks for a person with a particular personal attribute"""
labels = [ _('Personal attribute:'), _('Value:') ]
name = _('People with the personal <attribute>')
description = _("Matches people with the personal attribute "
"of a particular value")
category = _('General filters')
def apply(self,db,person):
if not self.list[0]:
return False
for attr in person.get_attribute_list():
name_match = self.list[0] == attr.get_type()
value_match = \
attr.get_value().upper().find(self.list[1].upper()) != -1
if name_match and value_match:
return True
return False

View File

@ -0,0 +1,64 @@
#
# 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: _HasAttributeBase.py,v 1.1 2006/08/04 23:08:14 shura Exp $
#-------------------------------------------------------------------------
#
# Standard Python modules
#
#-------------------------------------------------------------------------
from gettext import gettext as _
#-------------------------------------------------------------------------
#
# GRAMPS modules
#
#-------------------------------------------------------------------------
from RelLib import AttributeType
from Filters.Rules._Rule import Rule
#-------------------------------------------------------------------------
#
# HasAttribute
#
#-------------------------------------------------------------------------
class HasAttributeBase(Rule):
"""Rule that checks for an object with a particular attribute"""
labels = [ _('Attribute:'), _('Value:') ]
name = _('Objects with the <attribute>')
description = _("Matches objects with the given attribute "
"of a particular value")
category = _('General filters')
def apply(self,db,obj):
if not self.list[0]:
return False
for attr in obj.get_attribute_list():
specified_type = AttributeType()
specified_type.set_from_xml_str(self.list[0])
name_match = attr.get_type() == specified_type
value_match = \
attr.get_value().upper().find(self.list[1].upper()) != -1
if name_match and value_match:
return True
return False

View File

@ -33,6 +33,7 @@ from gettext import gettext as _
#
#-------------------------------------------------------------------------
import DateHandler
from RelLib import EventType
from Filters.Rules._Rule import Rule
from Filters.Rules._RuleUtils import date_cmp
@ -69,8 +70,11 @@ class HasEventBase(Rule):
continue
event = db.get_event_from_handle(event_ref.ref)
val = True
if self.etype and event.get_type() != self.etype:
val = False
if self.etype:
specified_type = EventType()
specified_type.set_from_xml_str(self.etype)
if event.type != specified_type:
val = False
if self.list[3] and event.get_description().upper().find(
self.list[3].upper())==-1:
val = False