7860: Add new place HasData rule
This commit is contained in:
parent
8be5616802
commit
7ec60ae6a3
@ -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,
|
||||
|
83
gramps/gen/filters/rules/place/_hasdata.py
Normal file
83
gramps/gen/filters/rules/place/_hasdata.py
Normal 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
|
@ -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'))
|
||||
|
Loading…
Reference in New Issue
Block a user