7860: Add new place HasData rule

This commit is contained in:
Nick Hall 2015-01-24 18:11:55 +00:00
parent 8be5616802
commit 7ec60ae6a3
3 changed files with 89 additions and 2 deletions

View File

@ -37,6 +37,7 @@ from ._hassourceof import HasSourceOf
from ._placeprivate import PlacePrivate
from ._matchesfilter import MatchesFilter
from ._hasplace import HasPlace
from ._hasdata import HasData
from ._hasnolatorlon import HasNoLatOrLon
from ._inlatlonneighborhood import InLatLonNeighborhood
from ._matcheseventfilter import MatchesEventFilter
@ -58,7 +59,7 @@ editor_rule_list = [
PlacePrivate,
MatchesFilter,
MatchesSourceConfidence,
HasPlace,
HasData,
HasNoLatOrLon,
InLatLonNeighborhood,
MatchesEventFilter,

View File

@ -0,0 +1,83 @@
#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2002-2006 Donald N. Allingham
# Copyright (C) 2015 Nick Hall
#
# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
#-------------------------------------------------------------------------
#
# Standard Python modules
#
#-------------------------------------------------------------------------
from ....const import GRAMPS_LOCALE as glocale
_ = glocale.translation.sgettext
#-------------------------------------------------------------------------
#
# GRAMPS modules
#
#-------------------------------------------------------------------------
from .. import Rule
from ....lib import PlaceType
#-------------------------------------------------------------------------
#
# HasData
#
#-------------------------------------------------------------------------
class HasData(Rule):
"""
Rule that checks for a place with a particular value
"""
labels = [ _('Name:'),
_('Place type:'),
_('Code:'),
]
name = _('Places matching parameters')
description = _('Matches places with particular parameters')
category = _('General filters')
allow_regex = True
def prepare(self, dbase):
self.place_type = self.list[1]
if self.place_type:
self.place_type = PlaceType()
self.place_type.set_from_xml_str(self.list[1])
def apply(self, db, place):
if not self.match_name(place):
return False
if self.place_type and place.get_type() != self.place_type:
return False
if not self.match_substring(2, place.get_code()):
return False
return True
def match_name(self, place):
"""
Match any name in a list of names.
"""
for name in place.get_all_names():
if self.match_substring(0, name):
return True
return False

View File

@ -63,7 +63,7 @@ from gramps.gen.const import RULE_GLADE, URL_MANUAL_PAGE
from ..display import display_help
from gramps.gen.errors import WindowActiveError
from gramps.gen.lib import (AttributeType, EventType, FamilyRelType,
NameOriginType, NameType, NoteType)
NameOriginType, NameType, NoteType, PlaceType)
from gramps.gen.filters import rules
from ..autocomp import StandardCustomSelector, fill_entry
from ..selectors import SelectorFactory
@ -107,6 +107,7 @@ _name2typeclass = {
_('Note type:') : NoteType,
_('Name type:') : NameType,
_('Surname origin type:'): NameOriginType,
_('Place type:') : PlaceType,
}
#-------------------------------------------------------------------------
@ -560,6 +561,8 @@ class EditRule(ManagedWindow):
additional = self.db.get_name_types()
elif v == _('Surname origin type:'):
additional = self.db.get_origin_types()
elif v == _('Place type:'):
additional = self.db.get_place_types()
t = MySelect(_name2typeclass[v], additional)
elif v == _('Inclusive:'):
t = MyBoolean(_('Include original person'))